<?php

namespace Jiaoyin;

class Curl
{

    // get 获取数据
    static public function httpGet($url, $param = [], $header = [])
    {
        if (empty($url)) {
            return false;
        }
        if (count($param) > 0) {
            $url = $url . '?' . http_build_query($param);
        }
        $ch = curl_init();
        $ch = self::curlSet($ch, $url, $header);
        $output = curl_exec($ch);
        if ($output === false) {
            echo 'Curl error: ' . curl_error($ch);
            curl_close($ch);
            return json_encode(['code' => '-1', 'msg' => 'curl error: ' . curl_error($ch)]);
        }
        curl_close($ch);
        return $output;
    }

    //post 获取数据
    static public function httpPost($url, $param = [], $header = [])
    {
        if (empty($url)) {
            return false;
        }
        $ch = curl_init();
        $ch = self::curlSet($ch, $url, $header);
        $opts = [];
        $opts[CURLOPT_POST] = 1;
        $opts[CURLOPT_USERAGENT] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.98 Safari/537.36";
        if (!empty($header) && in_array('Content-Type:application/json', $header)) {
            $opts[CURLOPT_POSTFIELDS] = json_encode($param);
        } else {
            $opts[CURLOPT_POSTFIELDS] = http_build_query($param);
        }
        curl_setopt_array($ch, $opts);
        $output = curl_exec($ch);
        if ($output === false) {
            echo 'Curl error: ' . curl_error($ch);
            curl_close($ch);
            return json_encode(['code' => '-1', 'msg' => 'curl error: ' . curl_error($ch)]);
        }
        curl_close($ch);
        return $output;
    }
    //delete 请求
    static public function httpDelete($url, $param = [], $header = [])
    {
        if (empty($url)) {
            return false;
        }
        if (count($param) > 0) {
            $url = $url . '?' . http_build_query($param);
        }
        $ch = curl_init();
        $ch = self::curlSet($ch, $url, $header);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
        $output = curl_exec($ch);
        if ($output === false) {
            echo 'Curl error: ' . curl_error($ch);
            echo 'Curl error: ' . curl_error($ch);
            curl_close($ch);
            return json_encode(['code' => '-1', 'msg' => 'curl error: ' . curl_error($ch)]);
        }
        curl_close($ch);
        return $output;
    }

    //curl 参数设置
    static private function curlSet($ch, $url, $header)
    {
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_URL, $url);
        //参数为1表示传输数据,为0表示直接输出显示。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        //参数为0表示不带头文件,为1表示带头文件
        curl_setopt($ch, CURLOPT_HEADER, 0);
        if (!empty($header)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        }
        // 关闭SSL验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        return $ch;
    }
}