Files
jx-callback/legacy/freshfood/freshfood.go
gazebo d7de24715b - remove useless legacy codes.
- refactor models
2018-10-16 10:47:44 +08:00

81 lines
1.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package freshfood
import (
"errors"
"net/http"
"net/url"
"time"
"github.com/astaxie/beego"
"git.rosy.net.cn/jx-callback/globals"
)
const (
URL_WX_UPDATE_ACCESSTOKEN = "weixin/accesstoken/update"
URL_FRESHFOOD_ELEME_TOKENUPDATE = "eleme/token/update"
)
const (
retryCount = 1
)
type API struct {
baseURL string
client *http.Client
}
var (
ErrFreshFooddReturnNot200 = errors.New("freshfood return code is not 200")
)
var (
FreshFoodAPI *API
)
func init() {
FreshFoodAPI = New(beego.AppConfig.String("freshFoodServerURL"))
}
func New(baseURL string) *API {
return &API{baseURL, &http.Client{Timeout: time.Millisecond * 2500}} // 2秒超时因为JD那边的是3秒超过3秒无意义
}
func (f *API) AccessFreshFood(apiStr string, params url.Values) error {
var err error
var response *http.Response
fullURL := f.baseURL + "/" + apiStr
for i := 0; i < retryCount; i++ {
if params != nil {
// globals.SugarLogger.Debug(params.Encode())
response, err = f.client.PostForm(fullURL, params)
} else {
response, err = f.client.Get(fullURL)
}
// err = error(nil)
// globals.SugarLogger.Debug(fullURL)
// globals.SugarLogger.Debug(params)
if err == nil && response != nil && response.StatusCode == 200 {
break
} else {
globals.SugarLogger.Infof("AccessFreshFood Call %s error:%v, response: %v", fullURL, err, response)
}
}
if err != nil || response.StatusCode != 200 {
globals.SugarLogger.Infof("AccessFreshFood finally failed Call %s error:%v, url:%s, response: %v", fullURL, err, fullURL, response)
if err != nil {
return err
}
return ErrFreshFooddReturnNot200
}
return nil
}
func (f *API) RefreshWeixinToken() error {
return f.AccessFreshFood(URL_WX_UPDATE_ACCESSTOKEN, nil)
}
func (f *API) RefreshElmToken() error {
return f.AccessFreshFood(URL_FRESHFOOD_ELEME_TOKENUPDATE, nil)
}