Example #1
0
 /**
  * Add a parameter key and value to the request according to type
  *
  * @param RequestInterface $request The request
  * @param string           $key     The name of the parameter
  * @param string           $value   The value of the parameter
  */
 public function addParameter(RequestInterface $request, $key, $value)
 {
     if ($request->getMethod() == 'POST') {
         $request->setPostField($key, $value);
     } else {
         $request->getQuery()->set($key, $value);
     }
 }
 public function __construct(ConnectionInterface $conn, RequestInterface $req)
 {
     $body = (string) $req->getBody();
     if (!empty($body)) {
         $query = QueryString::fromString($body);
         $fields = $query->getAll();
         foreach ($fields as $field => $value) {
             $req->setPostField($field, $value);
         }
     }
     $this->conn = $conn;
     $this->session = $conn->Session;
     $this->req = $req;
 }
Example #3
0
 public function visit(CommandInterface $command, RequestInterface $request, Parameter $param, $value)
 {
     $request->setPostField($param->getWireName(), $this->prepareValue($value, $param));
 }
Example #4
0
 /**
  * @param RequestInterface $request
  * @param int              $retryNo
  *
  * @return mixed
  * @throws RemoteError
  */
 protected function sendTradeAPIRequest(RequestInterface $request, $retryNo = 0)
 {
     if ($request instanceof EntityEnclosingRequest) {
         $nonce = (int) bcmul(bcadd(time(), substr(microtime(), 0, 3), 1), 10) - 13000000000.0;
         $request->setPostField('nonce', $nonce);
         $request->setHeader('Sign', hash_hmac('sha512', $request->getPostFields(), $this->apiSecret));
         $request->setHeader('Key', $this->apiKey);
     }
     $response = $this->send($request);
     $data = $request->getResponse()->json();
     if ($response->isSuccessful() && isset($data['success']) && 1 === $data['success']) {
         return $data['return'];
     } elseif ($response->isServerError() && $retryNo <= self::RETRY_COUNT) {
         sleep(self::RETRY_INTERVAL);
         return $this->sendTradeAPIRequest($request, ++$retryNo);
     } else {
         throw new RemoteError(isset($data['error']) ? $data['error'] : null);
     }
 }
Example #5
0
 /**
  * {@inheritdoc}
  */
 public function visit(CommandInterface $command, RequestInterface $request, $key, $value)
 {
     $request->setPostField($key, $value);
 }