mirror of
https://github.com/hamster1963/HomeDash-Backend.git
synced 2025-06-18 21:21:22 +08:00
update: 初始化代码提交
This commit is contained in:
68
utility/network_utils/coffee.go
Normal file
68
utility/network_utils/coffee.go
Normal file
@ -0,0 +1,68 @@
|
||||
package network_utils
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/gogf/gf/v2/encoding/gjson"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/net/gclient"
|
||||
"github.com/gogf/gf/v2/os/gcache"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
"home-network-watcher/manifest"
|
||||
)
|
||||
|
||||
type uProxyProvider struct{}
|
||||
|
||||
var ProxyProvider = &uProxyProvider{}
|
||||
|
||||
// GetSubscribeInfo
|
||||
//
|
||||
// @dc: 获取订阅信息
|
||||
// @author: laixin @date:2023/6/6 04:15:01
|
||||
func (u *uProxyProvider) GetSubscribeInfo() (err error) {
|
||||
err, authData := getAuthData()
|
||||
if err != nil || authData == "" {
|
||||
return
|
||||
}
|
||||
proxyClient := gclient.New()
|
||||
proxyClient.SetHeaderMap(map[string]string{
|
||||
"Authorization": authData,
|
||||
})
|
||||
response, err := proxyClient.Get(context.TODO(), manifest.ProxyProviderBaseUrl, nil)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
infoData := gconv.Map(gconv.Map(response.ReadAllString())["data"])
|
||||
if infoData["d"] == nil || infoData["transfer_enable"] == nil {
|
||||
return
|
||||
}
|
||||
usedBound := gconv.Float64(infoData["d"]) / 1024 / 1024 / 1010
|
||||
planBound := gconv.Float64(infoData["transfer_enable"]) / 1024 / 1024 / 1024
|
||||
remainBound := planBound - usedBound
|
||||
// 保留两位小数
|
||||
usedBoundStr := fmt.Sprintf("%.2f", usedBound)
|
||||
planBoundStr := fmt.Sprintf("%.2f", planBound)
|
||||
remainBoundStr := fmt.Sprintf("%.2f", remainBound)
|
||||
proxyCache := g.Map{
|
||||
"usedBound": usedBoundStr,
|
||||
"planBound": planBoundStr,
|
||||
"remainBound": remainBoundStr,
|
||||
}
|
||||
err = gcache.Set(context.TODO(), manifest.ProxySubscribeCacheKey, proxyCache, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// getAuthData
|
||||
//
|
||||
// @dc: 获取代理提供商AuthData
|
||||
func getAuthData() (err error, authData string) {
|
||||
url := manifest.ProxyProviderLoginUrl
|
||||
response, err := gclient.New().Post(context.TODO(), url, manifest.ProxyProviderAuthData)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return nil, gjson.New(response.ReadAllString()).Get("data.auth_data").String()
|
||||
}
|
Reference in New Issue
Block a user