如何使用php api从大型商业中获取价值

时间:2015-06-19 07:21:41

标签: bigcommerce

    <?php
    /**
     *Class to instantiate different api connections
     * 
     * @author Adam Bilsing <adambilsing@gmail.com>
     */
    class connection
    {
        /**
         *public and private variables 
         *
         * @var string stores data for the class
         */
        static public $path;
        static private $user;
        static private $token;
        static private $headers;
        /**
         * Sets $_path, $_user, $_token, $_headers upon class instantiation
         * 
         * @param $user, $path, $token required for the class
         * @return void
         */
        public function __construct($user, $path, $token) {
            $path = explode('/api/v2/', $path);
            $this->_path = $path[0];
            $this->_user = $user;
            $this->_token = $token;
            $encodedToken = base64_encode($this->_user.":".$this->_token);
            $authHeaderString = 'Authorization: Basic ' . $encodedToken;
            $this->_headers = array($authHeaderString, 'Accept: application/json','Content-Type: application/json');
        }   
        public static function http_parse_headers( $header )
        {
            $retVal = array();
            $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $header));
            foreach( $fields as $field ) {
                if( preg_match('/([^:]+): (.+)/m', $field, $match) ) {
                    $match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1])));
                    if( isset($retVal[$match[1]]) ) {
                        $retVal[$match[1]] = array($retVal[$match[1]], $match[2]);
                    } else {
                        $retVal[$match[1]] = trim($match[2]);
                    }
                }
            }
            if ($retVal['X-Bc-Apilimit-Remaining'] <= 100) {
                sleep(300);
            }
        }
        public function error($body, $url, $json, $type) {
            global $error;
            if (isset($json)) {
                $results = json_decode($body, true);
                $results = $results[0];
                $results['type'] = $type;
                $results['url'] = $url;
                $results['payload'] = $json;
                $error = $results;
            } else {
                $results = json_decode($body, true);
                $results = $results[0];
                $results['type'] = $type;
                $results['url'] = $url;
                $error = $results;
            }
        }
        /**
         * Performs a get request to the instantiated class
         * 
         * Accepts the resource to perform the request on
         * 
         * @param $resource string $resource a string to perform get on
         * @return results or var_dump error
         */
        public function get($resource) {
            $url = $this->_path . '/api/v2' . $resource;
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $this->_headers);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($curl, CURLOPT_VERBOSE, 1);
            curl_setopt($curl, CURLOPT_HEADER, 1);
            curl_setopt($curl, CURLOPT_HTTPGET, 1);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);            
            $response = curl_exec($curl);
            $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
            $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
            $headers = substr($response, 0, $header_size);
            $body = substr($response, $header_size);
            self::http_parse_headers($headers);
            curl_close ($curl);
            if ($http_status == 200) {
                $results = json_decode($body, true);
                return $results;
            } else {
                $this->error($body, $url, null, 'GET');
            } 

        }
        /**
         * Performs a put request to the instantiated class
         * 
         * Accepts the resource to perform the request on, and fields to be sent
         * 
         * @param string $resource a string to perform get on
         * @param array $fields an array to be sent in the request
         * @return results or var_dump error
         */
        public function put($resource, $fields) {

            $url = $this->_path . '/api/v2' . $resource;
            $json = json_encode($fields);

            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $this->_headers);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_VERBOSE, 1);
            curl_setopt($curl, CURLOPT_HEADER, 1);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
            curl_setopt($curl, CURLOPT_POSTFIELDS, $json); 
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            $response = curl_exec($curl);
            $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
            $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
            $headers = substr($response, 0, $header_size);
            $body = substr($response, $header_size);
            self::http_parse_headers($headers);
            curl_close($curl);
            if ($http_status == 200) {
                $results = json_decode($body, true);
                return $results;
            } else {
                $this->error($body, $url, $json, 'PUT');
            }
        }
        /**
         * Performs a post request to the instantiated class
         * 
         * Accepts the resource to perform the request on, and fields to be sent
         * 
         * @param string $resource a string to perform get on
         * @param array $fields an array to be sent in the request
         * @return results or var_dump error
         */
        public function post($resource, $fields) {
            global $error;
            $url = $this->_path . '/api/v2' . $resource;
            $json = json_encode($fields);
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $this->_headers);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_VERBOSE, 1);
            curl_setopt($curl, CURLOPT_HEADER, 1);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            $response = curl_exec ($curl);
            $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
            $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
            $headers = substr($response, 0, $header_size);
            $body = substr($response, $header_size);
            self::http_parse_headers($headers);
            curl_close ($curl);
            if ($http_status == 201) {
                $results = json_decode($body, true);
                return $results;
            } else {
                $this->error($body, $url, $json, 'POST');
            }
        }
        /**
         * Performs a delete request to the instantiated class
         * 
         * Accepts the resource to perform the request on
         * 
         * @param string $resource a string to perform get on
         * @return proper response or var_dump error
         */
        public function delete($resource) {

            $url = $this->_path . '/api/v2' . $resource;

            $curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, $url);
            curl_setopt($curl, CURLOPT_HTTPHEADER, $this->_headers);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_VERBOSE, 1);
            curl_setopt($curl, CURLOPT_HEADER, 1);
            curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            $response = curl_exec($curl);
            $http_status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
            $header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
            $headers = substr($response, 0, $header_size);
            $body = substr($response, $header_size);
            self::http_parse_headers($headers);         
            curl_close ($curl);
            if ($http_status == 204) {
                return $http_status . ' DELETED';
             } else {
                $this->error($body, $url, null, 'DELETE');
             }
        }
    }
    ?>
得到( '资源');     $ store-&GT;删除( '资源');     $ store-&gt; post('RESOURCE',$ fields);     $ store-&gt; put('RESOURCE',$ fields); ?&GT;

如果我运行这些代码,我会收到这样的错误 (!)不推荐使用:preg_replace():不推荐使用/ e修饰符,而是在第39行的D:\ wamp \ www \ Bigcommerce \ connection.php中使用preg_replace_callback

注意:未定义的变量:第5行的D:\ wamp \ www \ Bigcommerce \ singlepage.php中的字段

任何人都帮我解决这个问题

0 个答案:

没有答案