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

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,
}
}