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