| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- package fwh_test
- import (
- "encoding/json"
- "fwh-toolbox-server/config"
- "fwh-toolbox-server/domain"
- "fwh-toolbox-server/utils/httpClient"
- "net/http"
- "net/url"
- "time"
- )
- const (
- timeout time.Duration = 3 * time.Minute // fwh请求超时3min
- )
- var (
- fwhEnergy string
- fwhOss string
- fwhUser string
- fwhPassword string
- fwhHttpClient httpClient.HttpClient
- )
- // FwhHttpInit
- func FwhHttpInit(cfg *config.FwhApiConfig) {
- fwhEnergy = cfg.FwhEnergy
- fwhOss = cfg.FwhOss
- fwhUser = cfg.FwhUser
- fwhPassword = cfg.FwhPassword
- fwhHttpClient = httpClient.HttpClient{}
- fwhHttpClient.RegisterLogin(reLogin)
- }
- // 获取完整EnergyURL
- func getFullEnergyUrl(relativeURL string) string {
- return "https://" + fwhEnergy + relativeURL
- }
- // 获取完整OssURL
- func getFullOssUrl(relativeURL string) string {
- // return "https://" + fwhOss + relativeURL
- return "https://" + fwhEnergy + relativeURL
- }
- // 仅用户登录或者不需要token的请求
- func FwhHttpGetWithoutToken(url string, params url.Values) (*httpClient.Response, error) {
- t := timeout
- opt := httpClient.HttpClientOptions{
- Timeout: &t,
- Header: &http.Header{
- "Accept": {"application/json", "text/plain", "*/*"},
- },
- }
- return fwhHttpClient.HttpGet(url, ¶ms, &opt)
- }
- func FwhHttpGet(url string, params url.Values) (*httpClient.Response, error) {
- t := timeout
- opt := httpClient.HttpClientOptions{
- Timeout: &t,
- Header: &http.Header{
- "Logintoken": {getLoginToken()},
- "Accept": {"application/json", "text/plain", "*/*"},
- },
- }
- return fwhHttpClient.HttpGet(url, ¶ms, &opt)
- }
- // 仅用户登录或者不需要token的请求
- func FwhHttpPostWithoutToken(url string, body any) (*httpClient.Response, error) {
- t := timeout
- opt := httpClient.HttpClientOptions{
- Timeout: &t,
- Header: &http.Header{
- "Accept": {"application/json", "text/plain", "*/*"},
- },
- }
- return fwhHttpClient.HttpPost(url, body, &opt)
- }
- func FwhHttpPost(url string, body any) (*httpClient.Response, error) {
- t := timeout
- opt := httpClient.HttpClientOptions{
- Timeout: &t,
- Header: &http.Header{
- "Logintoken": {getLoginToken()},
- "Accept": {"application/json", "text/plain", "*/*"},
- },
- }
- return fwhHttpClient.HttpPost(url, body, &opt)
- }
- /************ 实现标准结构体解析 ************/
- func FwhHttpGetUnmarshal[T any](url string, params url.Values) (*domain.FwhResponse[T], error) {
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- var data domain.FwhResponse[T]
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- if data.Code == 401 {
- // invalid token
- reLogin() // 重新登录
- // 重新请求
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- }
- return &data, nil
- }
- func FwhHttpGetUnmarshalPage[T any](url string, params url.Values) (*domain.FwhPageResponse[T], error) {
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- var data domain.FwhPageResponse[T]
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- if data.Code == 401 {
- // invalid token
- reLogin() // 重新登录
- // 重新请求
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- }
- return &data, nil
- }
- func FwhHttpGetUnmarshalA[T any](url string, params url.Values) (*domain.FwhResponseA[T], error) {
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- var data domain.FwhResponseA[T]
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- if data.Code == 401 {
- // invalid token
- reLogin() // 重新登录
- // 重新请求
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- }
- return &data, nil
- }
- func FwhHttpGetUnmarshalB[T any](url string, params url.Values) (*domain.FwhResponseB[T], error) {
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- var data domain.FwhResponseB[T]
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- if data.Code == 401 {
- // invalid token
- reLogin() // 重新登录
- // 重新请求
- res, err := FwhHttpGet(url, params)
- if err != nil {
- return nil, err
- }
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- }
- return &data, nil
- }
- func FwhHttpPostUnmarshal[T any](url string, body any) (*domain.FwhResponse[T], error) {
- res, err := FwhHttpPost(url, body)
- if err != nil {
- return nil, err
- }
- var data domain.FwhResponse[T]
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- if data.Code == 401 {
- // invalid token
- reLogin() // 重新登录
- // 重新请求
- res, err := FwhHttpPost(url, body)
- if err != nil {
- return nil, err
- }
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- }
- return &data, nil
- }
- func FwhHttpPostUnmarshalPage[T any](url string, body any) (*domain.FwhPageResponse[T], error) {
- res, err := FwhHttpPost(url, body)
- if err != nil {
- return nil, err
- }
- var data domain.FwhPageResponse[T]
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- if data.Code == 401 {
- // invalid token
- reLogin() // 重新登录
- // 重新请求
- res, err := FwhHttpPost(url, body)
- if err != nil {
- return nil, err
- }
- // 反序列化(unmarshal)
- jsonErr := json.Unmarshal(res.Body, &data)
- if jsonErr != nil {
- return nil, jsonErr
- }
- }
- return &data, nil
- }
|