Loading src/Amqp/Producer/ExceptionLogProducer.php +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ class ExceptionLogProducer extends ProducerMessage public function __construct($data) { if (strpos($data['message'], 'Cannot select any node from load balancer') !== false) { return; } try { $data['operator'] = Auth::user()['name']; } catch (HttpResponseException $e) { Loading src/Shopify/lib/AbstractShopify.php +24 −48 Original line number Diff line number Diff line Loading @@ -9,7 +9,8 @@ namespace Meibuyu\Micro\Shopify\lib; use Exception; use Meibuyu\Micro\Shopify\Tools\HttpRequestJson; use Meibuyu\Micro\Shopify\tools\CurlHttpRequestJson; use Meibuyu\Micro\Shopify\tools\HttpRequestJson; use Psr\Http\Message\ResponseInterface; abstract class AbstractShopify Loading Loading @@ -45,7 +46,7 @@ abstract class AbstractShopify private $config; /** * @var HttpRequestJson * @var HttpRequestJson|CurlHttpRequestJson */ private $httpRequestJson; Loading @@ -62,7 +63,7 @@ abstract class AbstractShopify $this->id = $id; $this->pluralizeKey = $this->pluralizeKey ?: $this->resourceKey . 's'; $this->resourceUrl = ($parentResourceUrl ? "$parentResourceUrl/" : $config['api_url']) . $this->pluralizeKey . ($this->id ? "/{$this->id}" : ''); $this->httpRequestJson = make(HttpRequestJson::class); $this->httpRequestJson = make(CurlHttpRequestJson::class); if (isset($config['api_password'])) { $this->httpHeaders['X-Shopify-Access-Token'] = $config['api_password']; } elseif (!isset($config['api_password'])) { Loading Loading @@ -158,20 +159,20 @@ abstract class AbstractShopify return $resourceUrl . ($customAction ? "/$customAction" : '') . '.json' . (!empty($urlParams) ? '?' . http_build_query($urlParams) : ''); } // /** // * 获取数量 // * @param array $urlParams // * @return mixed // * @throws Exception // */ // public function count($urlParams = []) // { // if (!$this->countEnabled) { // throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); // } // $url = $this->generateUrl($urlParams, null, 'count'); // return $this->get([], $url, 'count'); // } /** * 获取数量 * @param array $urlParams * @return mixed * @throws Exception */ public function count($urlParams = []) { if (!$this->countEnabled) { throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); } $url = $this->generateUrl($urlParams, null, 'count'); return $this->get([], $url, 'count'); } /** * @param array $urlParams Loading Loading @@ -282,15 +283,14 @@ abstract class AbstractShopify /** * 处理响应 * @param ResponseInterface $response * @param array $response * @param null $dataKey * @return mixed * @throws Exception */ public function processResponse($response, $dataKey = null) { $code = $response->getStatusCode(); $content = $response->getBody()->getContents(); [$code, , $content] = $response; $content = json_decode($content, true); if (isset($content['errors'])) { throw new Exception($this->castString($content['errors']), $code); Loading @@ -302,28 +302,6 @@ abstract class AbstractShopify } } /** * 处理响应 * @param array $response * @param null $dataKey * @return mixed * @throws Exception */ public function processResponseOld($response, $dataKey = null) { [$code, $header, $body] = $response; $content = json_decode($body, true); if (isset($content['errors'])) { throw new Exception($this->castString($content['errors']), $code); } if ($dataKey && isset($content[$dataKey])) { return $content[$dataKey]; } else { return $content; } } /** * 处理响应 * @param ResponseInterface $response Loading @@ -333,9 +311,7 @@ abstract class AbstractShopify */ public function processPageResponse($response, $dataKey = null) { $code = $response->getStatusCode(); $headers = $response->getHeaders(); $content = $response->getBody()->getContents(); [$code, $headers, $content] = $response; $content = json_decode($content, true); $link = $this->getLink($headers); if (isset($content['errors'])) { Loading @@ -351,11 +327,11 @@ abstract class AbstractShopify public function getLink($header, $type = 'next') { if (!empty($header['X-Shopify-API-Version'][0]) && $header['X-Shopify-API-Version'][0] < '2019-07') { if (!empty($header['x-shopify-api-version'][0]) && $header['x-shopify-api-version'][0] < '2019-07') { return null; } if (!empty($header['Link'][0])) { $headerLinks = $header['Link'][0]; if (!empty($header['link'][0])) { $headerLinks = $header['link'][0]; if (stristr($headerLinks, '; rel="' . $type . '"') > -1) { $headerLinks = explode(',', $headerLinks); foreach ($headerLinks as $headerLink) { Loading src/Tools/HttpRequestJson.php→src/Shopify/tools/CurlHttpRequestJson.php +17 −61 Original line number Diff line number Diff line Loading @@ -6,20 +6,19 @@ * Time: 9:06 */ namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools; //use GuzzleHttp\Client; //use Psr\Http\Message\ResponseInterface; use Exception; /** * json格式请求(非协程) * Curl的json格式请求 * Class HttpRequestJson * @package Meibuyu\Micro\Tools */ class HttpRequestJson class CurlHttpRequestJson { protected static function prepareRequest($headers, $data = []) protected function prepareRequest($headers, $data = []) { $data = json_encode($data); if (!empty($data)) { Loading @@ -29,63 +28,14 @@ class HttpRequestJson return [$headers, $data]; } // /** // * get请求 // * @param $url // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function get($url, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->get($url, ['headers' => $httpHeaders]); // } // // /** // * post请求 // * @param $url // * @param $data // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function post($url, $data, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->post($url, ['headers' => $httpHeaders, 'json' => $data]); // } // // /** // * put请求 // * @param $url // * @param $data // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function put($url, $data, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->put($url, ['headers' => $httpHeaders, 'json' => $data]); // } // // /** // * delete请求 // * @param $url // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function delete($url, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->delete($url, ['headers' => $httpHeaders]); // } /** * get请求 * @param $url * @param array $headers * @return array * @throws Exception * @author zero */ public static function get($url, $headers = []) public function get($url, $headers = []) { return CurlRequest::get($url, $headers); } Loading @@ -96,8 +46,10 @@ class HttpRequestJson * @param $data * @param array $headers * @return array * @throws Exception * @author zero */ public static function post($url, $data, $headers = []) public function post($url, $data, $headers = []) { [$headers, $data] = self::prepareRequest($headers, $data); return CurlRequest::post($url, $data, $headers); Loading @@ -109,8 +61,10 @@ class HttpRequestJson * @param $data * @param array $headers * @return array * @throws Exception * @author zero */ public static function put($url, $data, $headers = []) public function put($url, $data, $headers = []) { [$headers, $data] = self::prepareRequest($headers, $data); return CurlRequest::put($url, $data, $headers); Loading @@ -121,8 +75,10 @@ class HttpRequestJson * @param $url * @param array $headers * @return array * @throws Exception * @author zero */ public static function delete($url, $headers = []) public function delete($url, $headers = []) { return CurlRequest::delete($url, $headers); } Loading src/Tools/CurlRequest.php→src/Shopify/tools/CurlRequest.php +43 −7 Original line number Diff line number Diff line <?php namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools; use Exception; Loading @@ -22,12 +22,27 @@ class CurlRequest return $ch; } /** * @param $url * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function get($url, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); return self::processRequest($ch); } /** * @param $url * @param $data * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function post($url, $data, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); Loading @@ -36,6 +51,14 @@ class CurlRequest return self::processRequest($ch); } /** * @param $url * @param $data * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function put($url, $data, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); Loading @@ -44,6 +67,13 @@ class CurlRequest return self::processRequest($ch); } /** * @param $url * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function delete($url, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); Loading @@ -51,17 +81,23 @@ class CurlRequest return self::processRequest($ch); } /** * @param $ch * @return array * @throws Exception * @author zero */ protected static function processRequest($ch) { $output = curl_exec($ch); $response = new CurlResponse($output); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode == 429) { $limitHeader = explode('/', $response->getHeader('X-Shopify-Shop-Api-Call-Limit'), 2); if (isset($limitHeader[1]) && $limitHeader[0] < $limitHeader[1]) { throw new Exception($response->getBody()); } } // if ($httpCode == 429) { // $limitHeader = explode('/', $response->getHeader('X-Shopify-Shop-Api-Call-Limit')[0], 2); // if (isset($limitHeader[1]) && $limitHeader[0] < $limitHeader[1]) { // throw new Exception($response->getBody()); // } // } if (curl_errno($ch)) { throw new Exception(curl_errno($ch) . ' : ' . curl_error($ch)); } Loading src/Tools/CurlResponse.php→src/Shopify/tools/CurlResponse.php +7 −7 Original line number Diff line number Diff line <?php namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools; class CurlResponse { Loading @@ -21,16 +21,16 @@ class CurlResponse */ private function parse($response) { $response = \explode("\r\n\r\n", $response); if (\count($response) > 1) { $response = explode("\r\n\r\n", $response); if (count($response) > 1) { // We want the last two parts $response = \array_slice($response, -2, 2); $response = array_slice($response, -2, 2); list($headers, $body) = $response; foreach (\explode("\r\n", $headers) as $header) { $pair = \explode(': ', $header, 2); foreach (explode("\r\n", $headers) as $header) { $pair = explode(': ', $header, 2); if (isset($pair[1])) { $headerKey = strtolower($pair[0]); $this->headers[$headerKey] = $pair[1]; $this->headers[$headerKey][] = $pair[1]; } } } else { Loading Loading
src/Amqp/Producer/ExceptionLogProducer.php +3 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ class ExceptionLogProducer extends ProducerMessage public function __construct($data) { if (strpos($data['message'], 'Cannot select any node from load balancer') !== false) { return; } try { $data['operator'] = Auth::user()['name']; } catch (HttpResponseException $e) { Loading
src/Shopify/lib/AbstractShopify.php +24 −48 Original line number Diff line number Diff line Loading @@ -9,7 +9,8 @@ namespace Meibuyu\Micro\Shopify\lib; use Exception; use Meibuyu\Micro\Shopify\Tools\HttpRequestJson; use Meibuyu\Micro\Shopify\tools\CurlHttpRequestJson; use Meibuyu\Micro\Shopify\tools\HttpRequestJson; use Psr\Http\Message\ResponseInterface; abstract class AbstractShopify Loading Loading @@ -45,7 +46,7 @@ abstract class AbstractShopify private $config; /** * @var HttpRequestJson * @var HttpRequestJson|CurlHttpRequestJson */ private $httpRequestJson; Loading @@ -62,7 +63,7 @@ abstract class AbstractShopify $this->id = $id; $this->pluralizeKey = $this->pluralizeKey ?: $this->resourceKey . 's'; $this->resourceUrl = ($parentResourceUrl ? "$parentResourceUrl/" : $config['api_url']) . $this->pluralizeKey . ($this->id ? "/{$this->id}" : ''); $this->httpRequestJson = make(HttpRequestJson::class); $this->httpRequestJson = make(CurlHttpRequestJson::class); if (isset($config['api_password'])) { $this->httpHeaders['X-Shopify-Access-Token'] = $config['api_password']; } elseif (!isset($config['api_password'])) { Loading Loading @@ -158,20 +159,20 @@ abstract class AbstractShopify return $resourceUrl . ($customAction ? "/$customAction" : '') . '.json' . (!empty($urlParams) ? '?' . http_build_query($urlParams) : ''); } // /** // * 获取数量 // * @param array $urlParams // * @return mixed // * @throws Exception // */ // public function count($urlParams = []) // { // if (!$this->countEnabled) { // throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); // } // $url = $this->generateUrl($urlParams, null, 'count'); // return $this->get([], $url, 'count'); // } /** * 获取数量 * @param array $urlParams * @return mixed * @throws Exception */ public function count($urlParams = []) { if (!$this->countEnabled) { throw new Exception("当前类{$this->getResourceName()}不支持count()方法"); } $url = $this->generateUrl($urlParams, null, 'count'); return $this->get([], $url, 'count'); } /** * @param array $urlParams Loading Loading @@ -282,15 +283,14 @@ abstract class AbstractShopify /** * 处理响应 * @param ResponseInterface $response * @param array $response * @param null $dataKey * @return mixed * @throws Exception */ public function processResponse($response, $dataKey = null) { $code = $response->getStatusCode(); $content = $response->getBody()->getContents(); [$code, , $content] = $response; $content = json_decode($content, true); if (isset($content['errors'])) { throw new Exception($this->castString($content['errors']), $code); Loading @@ -302,28 +302,6 @@ abstract class AbstractShopify } } /** * 处理响应 * @param array $response * @param null $dataKey * @return mixed * @throws Exception */ public function processResponseOld($response, $dataKey = null) { [$code, $header, $body] = $response; $content = json_decode($body, true); if (isset($content['errors'])) { throw new Exception($this->castString($content['errors']), $code); } if ($dataKey && isset($content[$dataKey])) { return $content[$dataKey]; } else { return $content; } } /** * 处理响应 * @param ResponseInterface $response Loading @@ -333,9 +311,7 @@ abstract class AbstractShopify */ public function processPageResponse($response, $dataKey = null) { $code = $response->getStatusCode(); $headers = $response->getHeaders(); $content = $response->getBody()->getContents(); [$code, $headers, $content] = $response; $content = json_decode($content, true); $link = $this->getLink($headers); if (isset($content['errors'])) { Loading @@ -351,11 +327,11 @@ abstract class AbstractShopify public function getLink($header, $type = 'next') { if (!empty($header['X-Shopify-API-Version'][0]) && $header['X-Shopify-API-Version'][0] < '2019-07') { if (!empty($header['x-shopify-api-version'][0]) && $header['x-shopify-api-version'][0] < '2019-07') { return null; } if (!empty($header['Link'][0])) { $headerLinks = $header['Link'][0]; if (!empty($header['link'][0])) { $headerLinks = $header['link'][0]; if (stristr($headerLinks, '; rel="' . $type . '"') > -1) { $headerLinks = explode(',', $headerLinks); foreach ($headerLinks as $headerLink) { Loading
src/Tools/HttpRequestJson.php→src/Shopify/tools/CurlHttpRequestJson.php +17 −61 Original line number Diff line number Diff line Loading @@ -6,20 +6,19 @@ * Time: 9:06 */ namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools; //use GuzzleHttp\Client; //use Psr\Http\Message\ResponseInterface; use Exception; /** * json格式请求(非协程) * Curl的json格式请求 * Class HttpRequestJson * @package Meibuyu\Micro\Tools */ class HttpRequestJson class CurlHttpRequestJson { protected static function prepareRequest($headers, $data = []) protected function prepareRequest($headers, $data = []) { $data = json_encode($data); if (!empty($data)) { Loading @@ -29,63 +28,14 @@ class HttpRequestJson return [$headers, $data]; } // /** // * get请求 // * @param $url // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function get($url, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->get($url, ['headers' => $httpHeaders]); // } // // /** // * post请求 // * @param $url // * @param $data // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function post($url, $data, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->post($url, ['headers' => $httpHeaders, 'json' => $data]); // } // // /** // * put请求 // * @param $url // * @param $data // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function put($url, $data, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->put($url, ['headers' => $httpHeaders, 'json' => $data]); // } // // /** // * delete请求 // * @param $url // * @param array $httpHeaders // * @return ResponseInterface // */ // public static function delete($url, $httpHeaders = []) // { // $client = new Client(['timeout' => 30]); // return $client->delete($url, ['headers' => $httpHeaders]); // } /** * get请求 * @param $url * @param array $headers * @return array * @throws Exception * @author zero */ public static function get($url, $headers = []) public function get($url, $headers = []) { return CurlRequest::get($url, $headers); } Loading @@ -96,8 +46,10 @@ class HttpRequestJson * @param $data * @param array $headers * @return array * @throws Exception * @author zero */ public static function post($url, $data, $headers = []) public function post($url, $data, $headers = []) { [$headers, $data] = self::prepareRequest($headers, $data); return CurlRequest::post($url, $data, $headers); Loading @@ -109,8 +61,10 @@ class HttpRequestJson * @param $data * @param array $headers * @return array * @throws Exception * @author zero */ public static function put($url, $data, $headers = []) public function put($url, $data, $headers = []) { [$headers, $data] = self::prepareRequest($headers, $data); return CurlRequest::put($url, $data, $headers); Loading @@ -121,8 +75,10 @@ class HttpRequestJson * @param $url * @param array $headers * @return array * @throws Exception * @author zero */ public static function delete($url, $headers = []) public function delete($url, $headers = []) { return CurlRequest::delete($url, $headers); } Loading
src/Tools/CurlRequest.php→src/Shopify/tools/CurlRequest.php +43 −7 Original line number Diff line number Diff line <?php namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools; use Exception; Loading @@ -22,12 +22,27 @@ class CurlRequest return $ch; } /** * @param $url * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function get($url, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); return self::processRequest($ch); } /** * @param $url * @param $data * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function post($url, $data, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); Loading @@ -36,6 +51,14 @@ class CurlRequest return self::processRequest($ch); } /** * @param $url * @param $data * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function put($url, $data, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); Loading @@ -44,6 +67,13 @@ class CurlRequest return self::processRequest($ch); } /** * @param $url * @param array $httpHeaders * @return array * @throws Exception * @author zero */ public static function delete($url, $httpHeaders = []) { $ch = self::init($url, $httpHeaders); Loading @@ -51,17 +81,23 @@ class CurlRequest return self::processRequest($ch); } /** * @param $ch * @return array * @throws Exception * @author zero */ protected static function processRequest($ch) { $output = curl_exec($ch); $response = new CurlResponse($output); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode == 429) { $limitHeader = explode('/', $response->getHeader('X-Shopify-Shop-Api-Call-Limit'), 2); if (isset($limitHeader[1]) && $limitHeader[0] < $limitHeader[1]) { throw new Exception($response->getBody()); } } // if ($httpCode == 429) { // $limitHeader = explode('/', $response->getHeader('X-Shopify-Shop-Api-Call-Limit')[0], 2); // if (isset($limitHeader[1]) && $limitHeader[0] < $limitHeader[1]) { // throw new Exception($response->getBody()); // } // } if (curl_errno($ch)) { throw new Exception(curl_errno($ch) . ' : ' . curl_error($ch)); } Loading
src/Tools/CurlResponse.php→src/Shopify/tools/CurlResponse.php +7 −7 Original line number Diff line number Diff line <?php namespace Meibuyu\Micro\Tools; namespace Meibuyu\Micro\Shopify\tools; class CurlResponse { Loading @@ -21,16 +21,16 @@ class CurlResponse */ private function parse($response) { $response = \explode("\r\n\r\n", $response); if (\count($response) > 1) { $response = explode("\r\n\r\n", $response); if (count($response) > 1) { // We want the last two parts $response = \array_slice($response, -2, 2); $response = array_slice($response, -2, 2); list($headers, $body) = $response; foreach (\explode("\r\n", $headers) as $header) { $pair = \explode(': ', $header, 2); foreach (explode("\r\n", $headers) as $header) { $pair = explode(': ', $header, 2); if (isset($pair[1])) { $headerKey = strtolower($pair[0]); $this->headers[$headerKey] = $pair[1]; $this->headers[$headerKey][] = $pair[1]; } } } else { Loading