<?php
namespace App\Service\Util\Support\Http;

use GuzzleHttp\Client;

class HttpRequestService
{

    /**
     * 发送post请求
     * @param $url 请求地址
     * @param $accessToken 请求access_token
     * @param $postMessage 请求体
     * @return array
     */
    public static function simplePost($url, $postMessage) {
        $client = new Client(['timeout' => 10]);
        try {
            $res = $client->post(
                $url,
                [
                    'json' => $postMessage
                ]);
            $httpStatusCode = $res->getStatusCode();
            $httpContent = $res->getBody()->getContents();
            $parsedContent = json_decode($httpContent, true);
            if (200 == $httpStatusCode) {
                return $parsedContent;
            }
        } catch (\Exception $exception) {
            myLog('HttpRequest')->error('请求上游失败:', [
                'url' => $url,
                'postJson' => $postMessage,
                'exceptionMessage' => $exception->getMessage(),
            ]);
        }
        return false;
    }

    public static function post($url, $options) {
        $client = new Client(['timeout' => 10]);
        try {
            $res = $client->request('POST', $url, $options);
            $httpStatusCode = $res->getStatusCode();
            $httpContent = $res->getBody()->getContents();
            $parsedContent = json_decode($httpContent, true);
            if (200 == $httpStatusCode) {
                return $parsedContent;
            }
        } catch (\Exception $exception) {
            myLog('HttpRequest')->error('请求上游失败:', [
                'url' => $url,
                'postOptions' => $options,
                'exceptionMessage' => $exception->getMessage(),
            ]);
        }
        return false;
    }

    public static function simpleGet($url, $query) {
        $client = new Client(['timeout' => 10]);
        try {
            $response = $client->get($url, [
                'query' => $query
            ]);
            $httpStatusCode = $response->getStatusCode();
            $httpContent = $response->getBody()->getContents();
            $parsedContent = json_decode($httpContent, true);
            if (200 == $httpStatusCode)  {
                return $parsedContent;
            }
        } catch (\Exception $exception) {
            myLog('HttpRequest')->error('请求上游失败:', [
                'url' => $url,
                'query' => $query,
                'exceptionMessage' => $exception->getMessage(),
            ]);
        }
        return false;
    }
}