summaryrefslogtreecommitdiff
path: root/src/cardmarket/account.go
diff options
context:
space:
mode:
authorDJ O'Leary <dijitol@proton.me>2026-09-06 23:52:13 +0200
committerDJ O'Leary <dijitol@proton.me>2026-09-06 23:52:13 +0200
commit4c1525d84968a5302ce2d87f923b84b56c5777eb (patch)
treecf553d12a0f529b62532b4dbb610ef1735dce0e5 /src/cardmarket/account.go
parent497c6b9793e4745e7d180d2faec1e26ff6a28788 (diff)
feat(cardmarket): implement some endpoints of the v2 api
Diffstat (limited to 'src/cardmarket/account.go')
-rw-r--r--src/cardmarket/account.go142
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
}