mirror of
https://github.com/hamster1963/HomeDash-Backend.git
synced 2025-06-16 20:21:23 +08:00
69 lines
1.8 KiB
Go
69 lines
1.8 KiB
Go
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()
|
|
}
|