You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
195 lines
4.4 KiB
195 lines
4.4 KiB
package internal
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"io"
|
|
"io/ioutil"
|
|
"mime/multipart"
|
|
"net/http"
|
|
"strings"
|
|
"wss-pool/config"
|
|
"wss-pool/logging/applogger"
|
|
"wss-pool/logging/perflogger"
|
|
)
|
|
|
|
var (
|
|
ResultStr = ""
|
|
QueryError = "Query failed"
|
|
QuerySuccess = "query was successful"
|
|
QueryToken = "Token failure"
|
|
ParameterError = "参数错误"
|
|
PhoneError = "电话号码不正确"
|
|
PassWordError = "密码不正确"
|
|
TokenError = "登录成功并且生成新的token"
|
|
UserIdError = "用户Id不正确"
|
|
CodeError = "验证码不正确"
|
|
)
|
|
|
|
func HttpGet(url string) (string, error) {
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer resp.Body.Close()
|
|
result, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
applogger.Error("ioutil.ReadAll err: %v", err)
|
|
return "", err
|
|
}
|
|
|
|
return string(result), err
|
|
}
|
|
|
|
// 统一请求Get方法
|
|
func HttpGetApi(url string) (map[string]interface{}, error) {
|
|
logger := perflogger.GetInstance()
|
|
logger.Start()
|
|
|
|
resp, err := http.Get(url)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
//logger.StopAndLog("GET", url)
|
|
|
|
var status map[string]interface{}
|
|
if err := json.NewDecoder(resp.Body).Decode(&status); err != nil {
|
|
applogger.Error("NewDecoder err: %v", err)
|
|
return nil, err
|
|
}
|
|
|
|
return status, err
|
|
}
|
|
|
|
func GetWithHeader(url string, headers map[string]string) (map[string]interface{}, error) {
|
|
client := &http.Client{}
|
|
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
for key, header := range headers {
|
|
req.Header.Set(key, header)
|
|
}
|
|
resp, err := client.Do(req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
result, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
applogger.Error("select err: %v", err)
|
|
return nil, err
|
|
}
|
|
if strings.Contains(string(result), "html") {
|
|
return nil, nil
|
|
}
|
|
|
|
var status map[string]interface{}
|
|
if err := json.NewDecoder(resp.Body).Decode(&status); err != nil {
|
|
applogger.Error("json NewDecoder err: %v", err)
|
|
return nil, err
|
|
}
|
|
return status, nil
|
|
}
|
|
|
|
// 股票静态数据接入
|
|
func HttpGetDo(url string) (string, error) {
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
applogger.Error("http NewRequest err: %v", err)
|
|
return "", err
|
|
}
|
|
|
|
req.Header.Add("X-RapidAPI-Key", config.Config.ShareGather.RapidApiKey)
|
|
req.Header.Add("X-RapidAPI-Host", config.Config.ShareGather.RapidApiHost)
|
|
|
|
res, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
applogger.Error("http DefaultClient Do err: %v", err)
|
|
return "", err
|
|
}
|
|
defer res.Body.Close()
|
|
|
|
body, err := io.ReadAll(res.Body)
|
|
if err != nil {
|
|
applogger.Error("io ReadAll err: %v", err)
|
|
return "", err
|
|
}
|
|
|
|
return string(body), nil
|
|
}
|
|
|
|
func HttpGetDoNew(url string) (map[string]interface{}, error) {
|
|
req, err := http.NewRequest("GET", url, nil)
|
|
if err != nil {
|
|
applogger.Error("NewRequest err: %v", err)
|
|
return nil, err
|
|
}
|
|
|
|
req.Header.Add("X-RapidAPI-Key", config.Config.ShareGather.RapidApiKey)
|
|
req.Header.Add("X-RapidAPI-Host", config.Config.ShareGather.RapidApiHost)
|
|
|
|
res, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
applogger.Error("http DefaultClient Do err: %v", err)
|
|
return nil, err
|
|
}
|
|
defer res.Body.Close()
|
|
|
|
var status map[string]interface{}
|
|
if err := json.NewDecoder(res.Body).Decode(&status); err != nil {
|
|
applogger.Error("json NewDecoder err: %v", err)
|
|
return nil, err
|
|
}
|
|
|
|
return status, nil
|
|
}
|
|
|
|
func HttpPost(url string, body string) (string, error) {
|
|
resp, err := http.Post(url, "application/json", strings.NewReader(body))
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer resp.Body.Close()
|
|
result, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return string(result), err
|
|
}
|
|
|
|
func HttpPostFrom(url string, postData map[string]string) (string, error) {
|
|
fmt.Println(url)
|
|
payload := &bytes.Buffer{}
|
|
w := multipart.NewWriter(payload)
|
|
for k, v := range postData {
|
|
w.WriteField(k, v)
|
|
}
|
|
w.Close()
|
|
client := &http.Client{}
|
|
req, _ := http.NewRequest("POST", url, payload)
|
|
req.Header.Set("Content-Type", w.FormDataContentType())
|
|
resp, err := client.Do(req)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
data, err := ioutil.ReadAll(resp.Body)
|
|
resp.Body.Close()
|
|
return string(data), err
|
|
}
|
|
|
|
// Unified return format
|
|
func GinResult(code int, value interface{}, msg string) interface{} {
|
|
return gin.H{
|
|
"code": code,
|
|
"data": value,
|
|
"message": msg,
|
|
}
|
|
}
|
|
|