package cardmarket import ( "context" "encoding/json" "io" "log/slog" ) type Account struct{} func (c *ApiClient) GetAccountInformation(ctx context.Context) (Account, error) { slog.DebugContext(ctx, "requesting account info...") resp, err := c.httpClient.GetWithContext(ctx, c.baseURL+"/account") if err != nil { slog.DebugContext(ctx, "failed to get account info from API") return Account{}, err } slog.DebugContext(ctx, "received account info") slog.DebugContext(ctx, "reading body...") respBodyBuf, err := io.ReadAll(resp.Body) if err != nil { slog.DebugContext(ctx, "failed to read body") return Account{}, err } defer resp.Body.Close() slog.DebugContext(ctx, "read body") slog.DebugContext(ctx, "parsing body...", "respBodyBuf", string(respBodyBuf)) type responseBody struct { Account struct { UserID uint32 `json:"idUser"` Username string `json:"username"` Type uint8 `json:"isCommercial"` Reputation uint8 `json:"reputation"` SalesCount uint32 `json:"sellCount"` OnVacation bool `json:"onVacation"` Country string `json:"country"` MaySell bool `json:"maySell"` SellerStatus uint8 `json:"sellerActivation"` ShipsFast int8 `json:"shipsFast"` SoldItemCount uint32 `json:"soldItems"` AvgShippingTime uint8 `json:"avgShippingTime"` DisplayLanguageID uint8 `json:"idDisplayLanguage"` Name struct { First string `json:"firstName"` Last string `json:"lastName"` } `json:"name"` HomeAddress struct { ReceiverName string `json:"name"` Extra string `json:"extra"` Street string `json:"street"` PostCode string `json:"zip"` City string `json:"city"` Country string `json:"country"` } `json:"homeAddress"` Email string `json:"email"` PhoneNumber string `json:"phoneNumber"` VAT string `json:"vat"` LegalInformation string `json:"legalInformation"` RegistrationDate string `json:"registerDate"` IsActivated bool `json:"isActivated"` BankAccount struct { AccountOwner string `json:"accountOwner"` IBAN string `json:"iban"` BIC string `json:"bic"` BankName string `json:"bankName"` } `json:"bankAccount"` ArticlesInShoppingCart uint16 `json:"articlesInShoppingCart"` UnreadMessages uint16 `json:"unreadMessages"` Wallet struct { TotalBalance float32 `json:"totalBalance"` MoneyBalance float32 `json:"moneyBalance"` BonusBalance float32 `json:"bonusBalance"` UnpaidAmount float32 `json:"unpaidAmount"` ProviderRechargeAmount float32 `json:"providerRechargeAmount"` CurrencyID uint8 `json:"idCurrency"` CurrencyCode string `json:"currencyCode"` } `json:"moneyDetails"` RiskGroup uint8 `json:"riskGroup"` LossPercentage string `json:"lossPercentage"` } `json:"account"` Links []struct { Relationship string `json:"rel"` Endpoint string `json:"href"` Method string `json:"method"` } `json:"links"` } respBody := new(responseBody) if err = json.Unmarshal(respBodyBuf, respBody); err != nil { slog.DebugContext(ctx, "failed to unmarshal body: "+string(respBodyBuf)) return Account{}, err } slog.DebugContext(ctx, "parsed body") return Account{}, nil }