bdo-market/app/api/api.go

50 lines
993 B
Go

package api
import (
"encoding/json"
"io"
"net/http"
"time"
"github.com/rayaman/bdo-market/app/types"
)
var items []types.MarketItem
var lastUpdated time.Time = time.Now()
// GetMarketItems retrieves market items from the API and updates them if necessary.
//
// It returns a slice of MarketItem and an error.
func GetMarketItems() ([]types.MarketItem, error) {
// The api only updates every 30 minutes, so let's only update it every 30 minutes
if len(items) > 0 && time.Since(lastUpdated) < 30*time.Minute {
return items, nil
}
var marketdata []types.MarketItem
client := &http.Client{}
req, err := http.NewRequest("GET", "https://api.arsha.io/v2/na/market", nil)
if err != nil {
return marketdata, err
}
res, err := client.Do(req)
if err != nil {
return marketdata, err
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
return marketdata, err
}
json.Unmarshal(body, &marketdata)
items = marketdata
return marketdata, nil
}