protocol = 'https'; $this->port = null; $this->server = $server; $this->api_key = $api_key; $this->secret_key = $secret_key; $this->curl = curl_init(); } public function __destruct() { curl_close($this->curl); } public function setProtocol($protocol) { if ($protocol != 'http' && $protocol != 'https') return $this; $this->protocol = $protocol; return $this; } public function get($url, $params = []) { $date = new DateTime(); $date_string = $date->format(self::DATE_FORMAT); $headers = $this->generateHeaders('GET', $url, $date_string); // build url if ($this->port == null) $full_url = $this->protocol . '://' . $this->server . $url; else $full_url = $this->protocol . '://' . $this->server . ':' . $this->port . $url; error_log($full_url); // curl curl_setopt($this->curl, CURLOPT_VERBOSE, true); curl_setopt($this->curl, CURLOPT_URL, $full_url); curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers); curl_setopt($this->curl, CURLOPT_USERAGENT, self::USER_AGENT); curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($this->curl, CURLOPT_TIMEOUT, 0); $res = curl_exec($this->curl); error_log($res); } public function post($params) { } protected function generateSignature($method, $url, $date_string) { $creds = [ $method, $url, $date_string, $this->secret_key, ]; $sig_source = implode('|', $creds); $raw_sig = hash_hmac('sha1', $sig_source, $this->secret_key, true); $enc_sig = base64_encode($raw_sig); return $enc_sig; } protected function generateHeaders($method, $url, $date_string) { $sig = $this->generateSignature($method, $url, $date_string); $headers = [ self::HEADER_API_KEY . ': ' . $this->api_key, self::HEADER_SIGNATURE . ': ' . $sig, self::HEADER_DATE . ': ' . $date_string, ]; return $headers; } }