Compare commits

..

No commits in common. "3f359d0c57e99db10ad60120442a459f20497d9a" and "b0b4cc4eb35400523d72686615d37c3c0aa3d282" have entirely different histories.

3 changed files with 28 additions and 52 deletions

View File

@ -3,46 +3,27 @@ package backend
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io"
"net/http" "net/http"
"os" "os"
"time"
) )
const endpoint = "https://diyhrt.market/api/listings" const endpoint = "https://diyhrt.market/api/listings"
func GetListings() ([]Listing, error) { func GetListings() ([]Listing, error) {
apiKey := os.Getenv("API_KEY") apiKey := os.Getenv("API_KEY")
if apiKey == "" { fmt.Println(apiKey)
return nil, fmt.Errorf("API_KEY environment variable not set")
}
// Create HTTP client // why put api key in url parameter
client := &http.Client{Timeout: 10 * time.Second} resp, err := http.NewRequest("GET", endpoint+"?api_token="+apiKey, nil)
// Create request
req, err := http.NewRequest("GET", endpoint+"?api_token="+apiKey, nil)
if err != nil { if err != nil {
return nil, fmt.Errorf("creating request failed: %w", err) fmt.Print(err.Error())
return []Listing{}, err
} }
// Send request
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("request failed: %w", err)
}
defer resp.Body.Close()
// Check status code
if resp.StatusCode != http.StatusOK {
body, _ := io.ReadAll(resp.Body)
return nil, fmt.Errorf("unexpected status code %d: %s", resp.StatusCode, string(body))
}
// Decode response
var listings []Listing var listings []Listing
if err := json.NewDecoder(resp.Body).Decode(&listings); err != nil { if err := json.NewDecoder(resp.Body).Decode(&listings); err != nil {
return nil, fmt.Errorf("decoding failed: %w", err) return []Listing{}, err
} }
return listings, nil return listings, nil

View File

@ -2,40 +2,40 @@ package backend
type ActiveIngredient struct { type ActiveIngredient struct {
Name string `json:"name"` Name string `json:"name"`
Ester string `json:"ester,omitempty"` Ester string `json:"ester"`
DisplayName string `json:"display_name,omitempty"` DisplayName string `json:"display_name"`
} }
type Product struct { type Product struct {
Id int `json:"id,omitempty"` Id int `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Image string `json:"image,omitempty"` Image string `json:"image"`
ActiveIngredient ActiveIngredient `json:"active_ingredient"` ActiveIngredient ActiveIngredient `json:"active_ingredient"`
} }
type Store struct { type Store struct {
Id int `json:"id,omitempty"` Id int `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Url string `json:"url"` Url string `json:"url"`
Description string `json:"description"` Description string `json:"description"`
ShipsFromCountry string `json:"ships_from_country,omitempty"` ShipsFromCountry string `json:"ships_from_country"`
ShipsToCountry string `json:"ships_to_country,omitempty"` ShipsToCountry string `json:"ships_to_country"`
ServiceStatus string `json:"service_status"` ServiceStatus string `json:"service_status"`
ServiceStatusNotes string `json:"service_status_notes,omitempty"` ServiceStatusNotes string `json:"service_status_notes"`
PaymentMethods []string `json:"payment_methods,omitempty"` PaymentMethods string `json:"payment_methods"`
CategoryName string `json:"category_name,omitempty"` CategoryName string `json:"category_name"`
} }
type Listing struct { type Listing struct {
Id int `json:"id,omitempty"` Id int `json:"id"`
ProductName string `json:"product_name,omitempty"` ProductName string `json:"product_name"`
StoreName string `json:"store_name"` StoreName string `json:"store_name"`
Price string `json:"price,omitempty"` Price string `json:"price"`
PriceCurrency string `json:"price_currency,omitempty"` PriceCurrency string `json:"price_currency"`
State string `json:"state,omitempty"` State string `json:"state"`
InStock bool `json:"in_stock"` InStock bool `json:"in_stock"`
Url string `json:"url,omitempty"` Url string `json:"url"`
PricingPerUnit string `json:"pricing_per_unit,omitempty"` PricingPerUnit string `json:"pricing_per_unit"`
Product Product `json:"product"` Product Product `json:"product"`
Store Store `json:"store"` Store Store `json:"store"`
} }

View File

@ -9,12 +9,7 @@ import (
func main() { func main() {
fmt.Println("running transfem startpage") fmt.Println("running transfem startpage")
listings, err := backend.GetListings() listings, _ := backend.GetListings()
if err != nil {
fmt.Println(err)
return
}
for _, l := range listings { for _, l := range listings {
fmt.Println(l) fmt.Println(l)
} }