From 2ab08e3717aa8e6ccff898eb515ecb731df9f04b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=A7=AC=E6=A1=91?= Date: Wed, 7 Oct 2020 12:06:08 +0800 Subject: [PATCH] updated GuzzleHttp\Client To Laravel Http Facades --- app/Components/IP.php | 29 +++++++++---------- app/Components/Namesilo.php | 24 +++++++-------- app/Components/NetworkDetection.php | 28 +++++++++--------- app/Components/PushNotification.php | 19 ++++++------ app/Components/QQInfo.php | 22 +++++++------- .../Controllers/Admin/MarketingController.php | 20 ++++++------- app/Http/Controllers/Gateway/BitpayX.php | 22 +++++++------- app/Http/Controllers/Gateway/EPay.php | 18 ++++++------ app/Http/Controllers/Gateway/PayPal.php | 14 +++------ app/Jobs/VNet/addUser.php | 10 ++----- app/Jobs/VNet/delUser.php | 10 ++----- app/Jobs/VNet/editUser.php | 10 ++----- app/Jobs/VNet/reloadNode.php | 17 +++++------ 13 files changed, 109 insertions(+), 134 deletions(-) diff --git a/app/Components/IP.php b/app/Components/IP.php index cd41d99b..dc5cf91f 100644 --- a/app/Components/IP.php +++ b/app/Components/IP.php @@ -5,7 +5,7 @@ namespace App\Components; use Exception; use GeoIp2\Database\Reader; use GeoIp2\Exception\AddressNotFoundException; -use GuzzleHttp\Client; +use Http; use IP2Location\Database; use Ip2Region; use ipip\db\City; @@ -35,14 +35,13 @@ class IP // 通过api.ip.sb查询IP地址的详细信息 public static function IPSB($ip) { - $request = (new Client(['timeout' => 15]))->get('https://api.ip.sb/geoip/'.$ip); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get('https://api.ip.sb/geoip/'.$ip); - if ($request->getStatusCode() === 200) { - return $message; + if ($response->ok()) { + return $response->json(); } - Log::error('解析IPv6异常:'.$ip.PHP_EOL.var_export($request, true)); + Log::error('解析IPv6异常:'.$ip); return false; } @@ -107,10 +106,10 @@ class IP public static function TaoBao(string $ip) { // 依据 http://ip.taobao.com/instructions 开发 - $request = (new Client(['timeout' => 15]))->get('http://ip.taobao.com/outGetIpInfo?ip='.$ip.'&accessKey=alibaba-inc'); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get('http://ip.taobao.com/outGetIpInfo?ip='.$ip.'&accessKey=alibaba-inc'); - if ($request->getStatusCode() === 200) { + if ($response->ok()) { + $message = $response->json(); if ($message['code'] === 0) { return [ 'country' => $message['data']['country'] === "XX" ? '' : $message['data']['country'], @@ -119,9 +118,9 @@ class IP ]; } - Log::error('【淘宝IP库】返回错误信息:'.$ip.PHP_EOL.var_export($message['msg'], true)); + Log::error('【淘宝IP库】返回错误信息:'.$ip.PHP_EOL.$message['msg']); } else { - Log::error('【淘宝IP库】解析异常:'.$ip.PHP_EOL.var_export($request, true)); + Log::error('【淘宝IP库】解析异常:'.$ip); } return false; @@ -136,10 +135,10 @@ class IP return false; } // 依据 http://lbsyun.baidu.com/index.php?title=webapi/ip-api 开发 - $request = (new Client(['timeout' => 15]))->get('https://api.map.baidu.com/location/ip?ak='.env('BAIDU_APP_AK').'&'.$ip.'&coor=bd09ll'); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get('https://api.map.baidu.com/location/ip?ak='.env('BAIDU_APP_AK').'&'.$ip.'&coor=bd09ll'); - if ($request->getStatusCode() === 200) { + if ($response->ok()) { + $message = $response->json(); if ($message['status'] === 0) { return [ 'country' => $message['content']['address_detail']['country'], @@ -150,7 +149,7 @@ class IP Log::error('【百度IP库】返回错误信息:'.$ip.PHP_EOL.var_export($message['message'], true)); } else { - Log::error('【百度IP库】解析异常:'.$ip.PHP_EOL.var_export($request, true)); + Log::error('【百度IP库】解析异常:'.$ip); } return false; diff --git a/app/Components/Namesilo.php b/app/Components/Namesilo.php index a2779720..7cf3505a 100644 --- a/app/Components/Namesilo.php +++ b/app/Components/Namesilo.php @@ -2,7 +2,7 @@ namespace App\Components; -use GuzzleHttp\Client; +use Http; use Log; use LSS\XML2Array; @@ -28,24 +28,24 @@ class Namesilo $content = '请求操作:['.$operation.'] --- 请求数据:['.http_build_query($query).']'; - $request = (new Client(['timeout' => 15]))->get(self::$host.$operation.'?'.http_build_query($query)); - $result = XML2Array::createArray(json_decode($request->getBody(), true)); - - if ($request->getStatusCode() !== 200) { - Log::error('请求失败:'.var_export($request, true)); + $response = Http::timeout(15)->get(self::$host.$operation.'?'.http_build_query($query)); + if ($response->failed()) { + Log::error('[Namesilo]请求失败:'.var_export($response, true)); Helpers::addNotificationLog('[Namesilo API] - ['.$operation.']', $content, 1, sysConfig('webmaster_email'), - 0, var_export($request, true)); + 0, var_export($response, true)); return false; } + $result = XML2Array::createArray($response->json()); + // 出错 - if (empty($result['namesilo']) || $result['namesilo']['reply']['code'] != 300 || $result['namesilo']['reply']['detail'] !== 'success') { - Helpers::addNotificationLog('[Namesilo API] - ['.$operation.']', $content, 1, sysConfig('webmaster_email'), - 0, $result['namesilo']['reply']['detail']); + if (empty($result['namesilo']) || $result['namesilo']['reply']['code'] !== 300 || $result['namesilo']['reply']['detail'] !== 'success') { + Helpers::addNotificationLog('[Namesilo API] - ['.$operation.']', $content, 1, + sysConfig('webmaster_email'), 0, $result['namesilo']['reply']['detail']); } else { - Helpers::addNotificationLog('[Namesilo API] - ['.$operation.']', $content, 1, sysConfig('webmaster_email'), - 1, $result['namesilo']['reply']['detail']); + Helpers::addNotificationLog('[Namesilo API] - ['.$operation.']', $content, 1, + sysConfig('webmaster_email'), 1, $result['namesilo']['reply']['detail']); } return $result['namesilo']['reply']; diff --git a/app/Components/NetworkDetection.php b/app/Components/NetworkDetection.php index 8033f32a..37e30f2c 100644 --- a/app/Components/NetworkDetection.php +++ b/app/Components/NetworkDetection.php @@ -2,7 +2,7 @@ namespace App\Components; -use GuzzleHttp\Client; +use Http; use Log; class NetworkDetection @@ -21,37 +21,37 @@ class NetworkDetection $url = 'https://api.50network.com/china-firewall/check/ip/'.($type ? 'icmp/' : ($port ? 'tcp_port/' : 'tcp_ack/')).$ip.($port ? '/'.$port : ''); $checkName = $type ? 'ICMP' : 'TCP'; - $request = (new Client(['timeout' => 15]))->get($url); - $result = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get($url); - if ($request->getStatusCode() === 200) { - if (!$result) { + if ($response->ok()) { + $message = $response->json(); + if (!$message) { Log::warning("【".$checkName."阻断检测】检测".$ip."时,接口返回异常访问链接:".$url); return false; } - if (!$result['success']) { - if ($result['error'] === "execute timeout (3s)") { + if (!$message['success']) { + if ($message['error'] === "execute timeout (3s)") { sleep(10); return self::networkCheck($ip, $type, $port); } - Log::warning("【".$checkName."阻断检测】检测".$ip.$port."时,返回".var_export($result, true)); + Log::warning("【".$checkName."阻断检测】检测".$ip.$port."时,返回".var_export($message, true)); return false; } - if ($result['firewall-enable'] && $result['firewall-disable']) { + if ($message['firewall-enable'] && $message['firewall-disable']) { return "通讯正常"; // 正常 } - if ($result['firewall-enable'] && !$result['firewall-disable']) { + if ($message['firewall-enable'] && !$message['firewall-disable']) { return "海外阻断"; // 国外访问异常 } - if (!$result['firewall-enable'] && $result['firewall-disable']) { + if (!$message['firewall-enable'] && $message['firewall-disable']) { return "国内阻断"; // 被墙 } @@ -71,11 +71,11 @@ class NetworkDetection public static function ping(string $ip) { $url = 'https://api.oioweb.cn/api/hostping.php?host='.$ip; // https://api.iiwl.cc/api/ping.php?host= - $request = (new Client(['timeout' => 15]))->get($url); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get($url); // 发送成功 - if ($request->getStatusCode() === 200) { + if ($response->ok()) { + $message = $response->json(); if ($message && $message['code']) { return $message['data']; } diff --git a/app/Components/PushNotification.php b/app/Components/PushNotification.php index 7e0985c1..20f78ce8 100644 --- a/app/Components/PushNotification.php +++ b/app/Components/PushNotification.php @@ -3,7 +3,7 @@ namespace App\Components; -use GuzzleHttp\Client; +use Http; use Log; class PushNotification @@ -31,10 +31,11 @@ class PushNotification private static function ServerChan(string $title, string $content) { // TODO:一天仅可发送不超过500条 - $request = (new Client(['timeout' => 15]))->get('https://sc.ftqq.com/'.sysConfig('server_chan_key').'.send?text='.$title.'&desp='.urlencode($content)); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get('https://sc.ftqq.com/'.sysConfig('server_chan_key').'.send?text='.$title.'&desp='.urlencode($content)); + // 发送成功 - if ($request->getStatusCode() === 200) { + if ($response->ok()) { + $message = $response->json(); if (!$message['errno']) { Helpers::addNotificationLog($title, $content, 2); @@ -46,7 +47,7 @@ class PushNotification return false; } // 发送错误 - Log::error('ServerChan消息推送异常:'.var_export($request, true)); + Log::error('ServerChan消息推送异常:'.var_export($response, true)); return false; } @@ -61,10 +62,10 @@ class PushNotification */ private static function Bark(string $title, string $content) { - $request = (new Client(['timeout' => 15]))->get('https://api.day.app/'.sysConfig('bark_key').'/'.$title.'/'.$content); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get('https://api.day.app/'.sysConfig('bark_key').'/'.$title.'/'.$content); - if ($request->getStatusCode() === 200) { + if ($response->ok()) { + $message = $response->json(); // 发送成功 if ($message['code'] === 200) { Helpers::addNotificationLog($title, $content, 3); @@ -77,7 +78,7 @@ class PushNotification return false; } // 发送错误 - Log::error('Bark消息推送异常:'.var_export($request, true)); + Log::error('Bark消息推送异常:'.var_export($response, true)); return false; } diff --git a/app/Components/QQInfo.php b/app/Components/QQInfo.php index 96d33840..bdd96150 100644 --- a/app/Components/QQInfo.php +++ b/app/Components/QQInfo.php @@ -2,7 +2,7 @@ namespace App\Components; -use GuzzleHttp\Client; +use Http; class QQInfo { @@ -10,11 +10,11 @@ class QQInfo { //向接口发起请求获取json数据 $url = 'https://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?get_nick=1&uins='.$qq; - $request = (new Client(['timeout' => 15]))->get($url); - $message = mb_convert_encoding($request->getBody(), "UTF-8", "GBK"); + $response = Http::timeout(15)->retry(2)->get($url); + $message = mb_convert_encoding($response->body(), "UTF-8", "GBK"); // 接口是否异常 - if ($request->getStatusCode() === 200 && str_contains($message, $qq)) { + if ($response->ok() && str_contains($message, $qq)) { //对获取的json数据进行截取并解析成数组 $message = json_decode(substr($message, 17, -1), true); @@ -27,12 +27,12 @@ class QQInfo public static function getName2(string $qq): string { //向接口发起请求获取json数据 - $url = 'https://api.toubiec.cn/qq?qq='.$qq.'&size=100'; - $request = (new Client(['timeout' => 15]))->get($url); - $message = json_decode($request->getBody(), true); + $url = 'https://api.qqder.com/qqxt/api.php?qq='.$qq; + $response = Http::timeout(15)->get($url); + $message = $response->json(); // 接口是否异常 - if ($message && $message['code'] == 200 && $request->getStatusCode() === 200) { + if ($message && $message['code'] === 1 && $response->ok()) { return $message['name']; } @@ -43,11 +43,11 @@ class QQInfo { //向接口发起请求获取json数据 $url = 'https://api.unipay.qq.com/v1/r/1450000186/wechat_query?cmd=1&pf=mds_storeopen_qb-__mds_qqclub_tab_-html5&pfkey=pfkey&from_h5=1&from_https=1&openid=openid&openkey=openkey&session_id=hy_gameid&session_type=st_dummy&qq_appid=&offerId=1450000186&sandbox=&provide_uin='.$qq; - $request = (new Client(['timeout' => 15]))->get($url); - $message = json_decode($request->getBody(), true); + $response = Http::timeout(15)->get($url); + $message = $response->json(); // 接口是否异常 - if ($message && $message['ret'] == 0 && $request->getStatusCode() === 200) { + if ($message && $message['ret'] === 0 && $response->ok()) { return urldecode($message['nick']); } diff --git a/app/Http/Controllers/Admin/MarketingController.php b/app/Http/Controllers/Admin/MarketingController.php index eb7cbb83..6eec480f 100644 --- a/app/Http/Controllers/Admin/MarketingController.php +++ b/app/Http/Controllers/Admin/MarketingController.php @@ -6,7 +6,7 @@ use App\Http\Controllers\Controller; use App\Models\Marketing; use DB; use Exception; -use GuzzleHttp\Client; +use Http; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; @@ -67,19 +67,17 @@ class MarketingController extends Controller try { DB::beginTransaction(); - $response = (new Client())->get('https://pushbear.ftqq.com/sub', [ - 'query' => [ - 'sendkey' => sysConfig('push_bear_send_key'), - 'text' => $title, - 'desp' => $content, - ], + $response = Http::timeout(15)->get('https://pushbear.ftqq.com/sub', [ + 'sendkey' => sysConfig('push_bear_send_key'), + 'text' => $title, + 'desp' => $content, ]); - $result = json_decode($response->getBody(), true); - if ($result->code) { // 失败 - $this->addMarketing(2, $title, $content, -1, $result->message); + $message = $response->json(); + if (!$message || !$message['code'] === 0 || $response->failed()) { // 失败 + $this->addMarketing(2, $title, $content, -1, $message['message']); - throw new RuntimeException($result->message); + throw new RuntimeException($message['message']); } $this->addMarketing(2, $title, $content, 1); diff --git a/app/Http/Controllers/Gateway/BitpayX.php b/app/Http/Controllers/Gateway/BitpayX.php index 56eb287b..00e8742e 100644 --- a/app/Http/Controllers/Gateway/BitpayX.php +++ b/app/Http/Controllers/Gateway/BitpayX.php @@ -4,7 +4,7 @@ namespace App\Http\Controllers\Gateway; use App\Models\Payment; use Auth; -use GuzzleHttp\Client; +use Http; use Illuminate\Http\JsonResponse; use Log; use Response; @@ -53,25 +53,23 @@ class BitpayX extends AbstractPayment private function sendRequest($data, $type = 'createOrder') { - $client = new Client([ - 'base_uri' => 'https://api.mugglepay.com/v1/', - 'timeout' => 15, - 'headers' => [ + $client = Http::baseUrl('https://api.mugglepay.com/v1/') + ->timeout(15) + ->withHeaders([ 'token' => sysConfig('bitpay_secret'), 'content-type' => 'application/json', - ], - ]); + ]); if ($type === 'query') { - $request = $client->get('orders/merchant_order_id/status?id='.$data['merchant_order_id']); + $response = $client->get('orders/merchant_order_id/status?id='.$data['merchant_order_id']); } else {// Create Order - $request = $client->post('orders', ['body' => json_encode($data)]); + $response = $client->post('orders', ['body' => json_encode($data)]); } - if ($request->getStatusCode() !== 200) { - Log::error('BitPayX请求支付错误:'.var_export($request, true)); + if ($response->failed()) { + Log::error('BitPayX请求支付错误:'.var_export($response, true)); } - return json_decode($request->getBody(), true); + return $response->json(); } //Todo: Postman虚拟测试通过,需要真实数据参考验证 diff --git a/app/Http/Controllers/Gateway/EPay.php b/app/Http/Controllers/Gateway/EPay.php index c331f161..210d4a2e 100644 --- a/app/Http/Controllers/Gateway/EPay.php +++ b/app/Http/Controllers/Gateway/EPay.php @@ -4,7 +4,7 @@ namespace App\Http\Controllers\Gateway; use App\Models\Payment; use Auth; -use GuzzleHttp\Client; +use Http; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Response; @@ -63,15 +63,15 @@ class EPay extends AbstractPayment public function queryInfo(): JsonResponse { - $request = (new Client())->get(sysConfig('epay_url').'api.php', [ - 'query' => [ - 'act' => 'query', - 'pid' => sysConfig('epay_mch_id'), - 'key' => sysConfig('epay_key'), - ], + $response = Http::get(sysConfig('epay_url').'api.php', [ + 'act' => 'query', + 'pid' => sysConfig('epay_mch_id'), + 'key' => sysConfig('epay_key'), ]); - if ($request->getStatusCode() === 200) { - return Response::json(['status' => 'success', 'data' => json_decode($request->getBody(), true)]); + + + if ($response->ok()) { + return Response::json(['status' => 'success', 'data' => $response->json()]); } return Response::json(['status' => 'fail', 'message' => '获取失败!请检查配置信息']); diff --git a/app/Http/Controllers/Gateway/PayPal.php b/app/Http/Controllers/Gateway/PayPal.php index ad9e89be..da4a5c98 100644 --- a/app/Http/Controllers/Gateway/PayPal.php +++ b/app/Http/Controllers/Gateway/PayPal.php @@ -6,7 +6,7 @@ namespace App\Http\Controllers\Gateway; use App\Models\Payment; use Auth; use Exception; -use GuzzleHttp\Client; +use Http; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; @@ -39,14 +39,8 @@ class PayPal extends AbstractPayment 'validate_ssl' => true, ]; $this->provider->setApiCredentials($config); - $this->exChange = 7; - $client = new Client(['timeout' => 15]); - $exChangeRate = json_decode($client->get('http://api.k780.com/?app=finance.rate&scur=USD&tcur=CNY&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4') - ->getBody(), true); - - if ($exChangeRate && $exChangeRate['success']) { - $this->exChange = $exChangeRate['result']['rate']; - } + $response = Http::timeout(15)->get('http://api.k780.com/?app=finance.rate&scur=USD&tcur=CNY&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4'); + $this->exChange = $response->json()['result']['rate'] ?? 7; } public function purchase($request): JsonResponse @@ -122,7 +116,7 @@ class PayPal extends AbstractPayment { $request->merge(['cmd' => '_notify-validate']); foreach ($request->input() as $key => $value) { - if ($value == null) { + if ($value === null) { $request->request->set($key, ''); } } diff --git a/app/Jobs/VNet/addUser.php b/app/Jobs/VNet/addUser.php index b13a8992..52511268 100644 --- a/app/Jobs/VNet/addUser.php +++ b/app/Jobs/VNet/addUser.php @@ -3,7 +3,7 @@ namespace App\Jobs\VNet; use App\Models\User; -use GuzzleHttp\Client; +use Http; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -46,12 +46,8 @@ class addUser implements ShouldQueue private function send($host, $secret): void { - $client = new Client([ - 'base_uri' => $host, - 'timeout' => 15, - 'headers' => ['secret' => $secret], - ]); + $client = Http::baseUrl($host)->timeout(15)->withHeaders(['secret' => $secret]); - $client->post('api/v2/user/add/list', ['json' => $this->data]); + $client->post('api/v2/user/add/list', $this->data); } } diff --git a/app/Jobs/VNet/delUser.php b/app/Jobs/VNet/delUser.php index 127e03d5..faa37b74 100644 --- a/app/Jobs/VNet/delUser.php +++ b/app/Jobs/VNet/delUser.php @@ -2,7 +2,7 @@ namespace App\Jobs\VNet; -use GuzzleHttp\Client; +use Http; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -34,14 +34,10 @@ class delUser implements ShouldQueue private function send($host, $secret): void { - $client = new Client([ - 'base_uri' => $host, - 'timeout' => 15, - 'headers' => ['secret' => $secret], - ]); + $client = Http::baseUrl($host)->timeout(15)->withHeaders(['secret' => $secret]); if (is_array($this->userIds)) { - $client->post('api/v2/user/del/list', ['json' => $this->userIds]); + $client->post('api/v2/user/del/list', $this->userIds); } else { $client->post('api/user/del/'.$this->userIds); } diff --git a/app/Jobs/VNet/editUser.php b/app/Jobs/VNet/editUser.php index b0102cf0..1cb55d81 100644 --- a/app/Jobs/VNet/editUser.php +++ b/app/Jobs/VNet/editUser.php @@ -3,7 +3,7 @@ namespace App\Jobs\VNet; use App\Models\User; -use GuzzleHttp\Client; +use Http; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -41,12 +41,8 @@ class editUser implements ShouldQueue private function send($host, $secret): void { - $client = new Client([ - 'base_uri' => $host, - 'timeout' => 15, - 'headers' => ['secret' => $secret], - ]); + $client = Http::baseUrl($host)->timeout(15)->withHeaders(['secret' => $secret]); - $client->post('api/user/edit', ['json' => $this->data]); + $client->post('api/user/edit', $this->data); } } diff --git a/app/Jobs/VNet/reloadNode.php b/app/Jobs/VNet/reloadNode.php index c1182894..e761e15d 100644 --- a/app/Jobs/VNet/reloadNode.php +++ b/app/Jobs/VNet/reloadNode.php @@ -2,7 +2,8 @@ namespace App\Jobs\VNet; -use GuzzleHttp\Client; +use Arr; +use Http; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; @@ -56,16 +57,12 @@ class reloadNode implements ShouldQueue public function send($host, $secret, $data): bool { - $client = new Client([ - 'base_uri' => $host, - 'timeout' => 15, - 'headers' => ['secret' => $secret], - ]); + $client = Http::baseUrl($host)->timeout(15)->withHeaders(['secret' => $secret]); - $ret = $client->post('api/v2/node/reload', ['json' => $data]); - if ($ret->getStatusCode() == 200) { - $message = json_decode($ret->getBody(), true); - if (array_key_exists('success', $message) && array_key_exists('content', $message)) { + $response = $client->post('api/v2/node/reload', $data); + if ($response->ok()) { + $message = $response->json(); + if (Arr::has($message, ['success', 'content'])) { if ($message['success']) { return true; }