diff options
| author | DJ O'Leary <dijitol@proton.me> | 2026-09-06 23:52:13 +0200 |
|---|---|---|
| committer | DJ O'Leary <dijitol@proton.me> | 2026-09-06 23:52:13 +0200 |
| commit | 4c1525d84968a5302ce2d87f923b84b56c5777eb (patch) | |
| tree | cf553d12a0f529b62532b4dbb610ef1735dce0e5 /src/cardmarket/account.go | |
| parent | 497c6b9793e4745e7d180d2faec1e26ff6a28788 (diff) | |
feat(cardmarket): implement some endpoints of the v2 api
Diffstat (limited to 'src/cardmarket/account.go')
| -rw-r--r-- | src/cardmarket/account.go | 142 |
1 files changed, 57 insertions, 85 deletions
diff --git a/src/cardmarket/account.go b/src/cardmarket/account.go index 3f9fbd2..bdef2bd 100644 --- a/src/cardmarket/account.go +++ b/src/cardmarket/account.go @@ -2,97 +2,69 @@ package cardmarket import ( "context" - "encoding/json" - "io" - "log/slog" ) -type Account struct{} +type 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"` +} 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"` + Account Account `json:"account"` + Links Links `json:"links"` } - respBody := new(responseBody) - if err = json.Unmarshal(respBodyBuf, respBody); err != nil { - slog.DebugContext(ctx, "failed to unmarshal body: "+string(respBodyBuf)) + respBody := &responseBody{} + if err := c.get(ctx, "/account", respBody); err != nil { return Account{}, err } - slog.DebugContext(ctx, "parsed body") - - return Account{}, nil + return respBody.Account, nil } |
