package main import ( "encoding/json" "fmt" "net/http" messages "git.tornberg.me/go-cart-actor/pkg/messages" "github.com/matst80/slask-finder/pkg/index" ) // TODO make this configurable func getBaseUrl(country string) string { // if country == "se" { // return "http://s10n-se:8080" // } if country == "no" { return "http://s10n-no.s10n:8080" } if country == "se" { return "http://s10n-se.s10n:8080" } return "http://localhost:8082" } func FetchItem(sku string, country string) (*index.DataItem, error) { baseUrl := getBaseUrl(country) res, err := http.Get(fmt.Sprintf("%s/api/by-sku/%s", baseUrl, sku)) if err != nil { return nil, err } defer res.Body.Close() var item index.DataItem err = json.NewDecoder(res.Body).Decode(&item) return &item, err } func GetItemAddMessage(sku string, qty int, country string, storeId *string) (*messages.AddItem, error) { item, err := FetchItem(sku, country) if err != nil { return nil, err } orgPrice, _ := getInt(item.GetNumberFieldValue(5)) // getInt(item.Fields[5]) price, priceErr := getInt(item.GetNumberFieldValue(4)) //Fields[4] if priceErr != nil { return nil, fmt.Errorf("invalid price") } stock := InStock item.HasStock() stockValue, ok := item.GetNumberFieldValue(3) if !ok || stockValue == 0 { stock = OutOfStock } else { if stockValue < 5 { stock = LowStock } } articleType, _ := item.GetStringFieldValue(1) //.Fields[1].(string) outletGrade, ok := item.GetStringFieldValue(20) //.Fields[20].(string) var outlet *string if ok { outlet = &outletGrade } sellerId, _ := item.GetStringFieldValue(24) // .Fields[24].(string) sellerName, _ := item.GetStringFieldValue(9) // .Fields[9].(string) brand, _ := item.GetStringFieldValue(2) //.Fields[2].(string) category, _ := item.GetStringFieldValue(10) //.Fields[10].(string) category2, _ := item.GetStringFieldValue(11) //.Fields[11].(string) category3, _ := item.GetStringFieldValue(12) //.Fields[12].(string) category4, _ := item.GetStringFieldValue(13) //Fields[13].(string) category5, _ := item.GetStringFieldValue(14) //.Fields[14].(string) return &messages.AddItem{ ItemId: int64(item.Id), Quantity: int32(qty), Price: int64(price), OrgPrice: int64(orgPrice), Sku: sku, Name: item.Title, Image: item.Img, Stock: int32(stock), Brand: brand, Category: category, Category2: category2, Category3: category3, Category4: category4, Category5: category5, Tax: 2500, SellerId: sellerId, SellerName: sellerName, ArticleType: articleType, Disclaimer: item.Disclaimer, Country: country, Outlet: outlet, StoreId: storeId, }, nil }