initial commit
This commit is contained in:
commit
fc8bedd474
44
cmd/main.go
Normal file
44
cmd/main.go
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"aislegopher"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// usage: aisegopher <product_id>
|
||||||
|
|
||||||
|
if len(os.Args) != 2 {
|
||||||
|
fmt.Println("usage: aisegopher <product_id>")
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
productId, err := strconv.Atoi(os.Args[1])
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Invalid product ID: ", os.Args[1], " error:", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
priceHistory, err := aislegopher.GetPriceHistory(productId)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Error getting price history: ", err)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println("Regular Prices:")
|
||||||
|
|
||||||
|
for _, dp := range priceHistory.RegularPrices {
|
||||||
|
fmt.Println(dp.Date, dp.Price)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(priceHistory.ThirdPartyPrices) > 0 {
|
||||||
|
fmt.Println("Third Party Prices:")
|
||||||
|
for _, dp := range priceHistory.ThirdPartyPrices {
|
||||||
|
fmt.Println(dp.Date, dp.Price)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
62
pricehistory.go
Normal file
62
pricehistory.go
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
package aislegopher
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/http"
|
||||||
|
"strconv"
|
||||||
|
)
|
||||||
|
|
||||||
|
type DatePrice struct {
|
||||||
|
Date string
|
||||||
|
Price float64
|
||||||
|
}
|
||||||
|
|
||||||
|
type PriceHistory struct {
|
||||||
|
RegularPrices []DatePrice `json:"regularPrices,omitempty"`
|
||||||
|
ThirdPartyPrices []DatePrice `json:"3rdPartyPrices,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
Client *http.Client
|
||||||
|
}
|
||||||
|
|
||||||
|
var DefaultConfig = Config{
|
||||||
|
Client: http.DefaultClient,
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetPriceHistory(productId int) (PriceHistory, error) {
|
||||||
|
return DefaultConfig.GetPriceHistory(productId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Config) GetPriceHistory(productId int) (PriceHistory, error) {
|
||||||
|
cl := c.Client
|
||||||
|
|
||||||
|
if cl == nil {
|
||||||
|
cl = http.DefaultClient
|
||||||
|
}
|
||||||
|
|
||||||
|
req, err := http.NewRequest("GET", "https://aislegopher.com/Home/GetPriceHistoryData?productId="+strconv.Itoa(productId), nil)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return PriceHistory{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
req.Header.Set("Accept", "application/json")
|
||||||
|
|
||||||
|
res, err := cl.Do(req)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return PriceHistory{}, err
|
||||||
|
}
|
||||||
|
defer res.Body.Close()
|
||||||
|
|
||||||
|
var priceHistory PriceHistory
|
||||||
|
|
||||||
|
err = json.NewDecoder(res.Body).Decode(&priceHistory)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return PriceHistory{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return priceHistory, nil
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user