优化代码结构

This commit is contained in:
源文雨
2023-01-31 18:20:12 +08:00
parent f18c809355
commit d4a057e21a
6 changed files with 368 additions and 367 deletions

94
plugin/warframeapi/api.go Normal file
View File

@@ -0,0 +1,94 @@
package warframeapi
import (
"encoding/json"
"errors"
"fmt"
"net/http"
"sort"
"github.com/FloatTech/floatbox/web"
)
const wfapiurl = "https://api.warframestat.us/pc" // 星际战甲API
const wfitemurl = "https://api.warframe.market/v1/items" // 星际战甲游戏品信息列表URL
// 从WFapi获取数据
func newwfapi() (w wfapi, err error) {
var data []byte
data, err = web.GetData(wfapiurl)
if err != nil {
return
}
err = json.Unmarshal(data, &w)
return
}
// 获取Warframe市场的售价表并进行排序,cn_name为物品中文名称onlyMaxRank表示只取最高等级的物品返回物品售价表物品信息物品英文
func getitemsorder(cnName string, onlyMaxRank bool) (od orders, it *itemsInSet, n string, err error) {
var wfapiio wfAPIItemsOrders
data, err := web.RequestDataWithHeaders(&http.Client{}, fmt.Sprintf("https://api.warframe.market/v1/items/%s/orders?include=item", cnName), "GET", func(request *http.Request) error {
request.Header.Add("Accept", "application/json")
request.Header.Add("Platform", "pc")
return nil
}, nil)
if err != nil {
return
}
err = json.Unmarshal(data, &wfapiio)
if len(wfapiio.Payload.Orders) <= 0 {
err = errors.New("no such name")
}
od = make(orders, 0, len(wfapiio.Payload.Orders))
// 遍历市场物品列表
for _, v := range wfapiio.Payload.Orders {
// 取其中类型为售卖,且去掉不在线的玩家
if v.OrderType == "sell" && v.User.Status != "offline" {
if !onlyMaxRank {
od = append(od, v)
continue
}
if v.ModRank == wfapiio.Include.Item.ItemsInSet[0].ModMaxRank {
od = append(od, v)
}
}
}
// 对报价表进行排序,由低到高
sort.Sort(od)
// 获取物品信息
for i, v := range wfapiio.Include.Item.ItemsInSet {
if v.URLName == cnName {
it = &wfapiio.Include.Item.ItemsInSet[i]
n = v.En.ItemName
return
}
}
it = &wfapiio.Include.Item.ItemsInSet[0]
n = wfapiio.Include.Item.ItemsInSet[0].En.ItemName
return
}
func newwm() (wmitems map[string]items, itemNames []string) {
var itemapi wfAPIItem // WarFrame市场的数据实例
data, err := web.RequestDataWithHeaders(&http.Client{}, wfitemurl, "GET", func(request *http.Request) error {
request.Header.Add("Accept", "application/json")
request.Header.Add("Language", "zh-hans")
return nil
}, nil)
if err != nil {
panic(err)
}
err = json.Unmarshal(data, &itemapi)
if err != nil {
panic(err)
}
wmitems = make(map[string]items, len(itemapi.Payload.Items)*4)
itemNames = make([]string, len(itemapi.Payload.Items))
for i, v := range itemapi.Payload.Items {
wmitems[v.ItemName] = v
itemNames[i] = v.ItemName
}
return
}