From 4f9fc42b75fbf99aeb43fc2cd05531d2ea929b99 Mon Sep 17 00:00:00 2001 From: DJ O'Leary Date: Thu, 3 Sep 2026 02:43:45 +0200 Subject: feat(cardmarket): implement some endpoints of the v2 api --- src/cardmarket/article.go | 118 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 src/cardmarket/article.go (limited to 'src/cardmarket/article.go') diff --git a/src/cardmarket/article.go b/src/cardmarket/article.go new file mode 100644 index 0000000..bc8ae21 --- /dev/null +++ b/src/cardmarket/article.go @@ -0,0 +1,118 @@ +package cardmarket + +import ( + "bytes" + "context" + "encoding/json" +) + +type ArticleCondition = string + +const ( + Mint ArticleCondition = "MT" + NearMint ArticleCondition = "NM" + Excellent ArticleCondition = "EX" + Good ArticleCondition = "GD" + LightPlayed ArticleCondition = "LP" + Played ArticleCondition = "PL" + Poor ArticleCondition = "PO" +) + +type LanguageID = uint8 + +const ( + English LanguageID = iota + 1 + French + German + Spanish + Italian + SimplifiedChinese + Japanese + Portuguese + Russian + Korean + TraditionalChinese +) + +type Article struct { + ProductID uint16 + Count uint8 + LanguageID LanguageID + Comments []byte + Price float32 + Condition ArticleCondition + IsFoil bool + IsSigned bool + IsAltered bool +} + +func (c *ApiClient) CreateArticle( + ctx context.Context, + productID uint16, + count uint8, + languageID LanguageID, + comments []byte, + price float32, + condition ArticleCondition, + isFoil *bool, + isSigned *bool, + isAltered *bool, +) (*Article, error) { + type requestBodyArticle struct { + ProductID uint16 `json:"idProduct"` + Count uint8 `json:"count"` + LanguageID LanguageID `json:"idLanguage"` + Comments []byte `json:"comments"` + Price float32 `json:"price"` + Condition ArticleCondition `json:"condition"` + IsFoil *bool `json:"isFoil,omitempty"` + IsSigned *bool `json:"isSigned,omitempty"` + IsAltered *bool `json:"isAltered,omitempty"` + } + reqBody := []requestBodyArticle{ + { + ProductID: productID, + Count: count, + LanguageID: languageID, + Comments: comments, + Price: price, + Condition: condition, + IsFoil: isFoil, + IsSigned: isSigned, + IsAltered: isAltered, + }, + } + + reqBodyBuf, err := json.Marshal(reqBody) + if err != nil { + return nil, err + } + + resp, err := c.httpClient.PostWithContext( + ctx, + c.baseURL+"/stock", + "application/json", + bytes.NewReader(reqBodyBuf), + ) + if err != nil { + return nil, err + } + + respBodyBuf := make([]byte, 1024) + _, err = resp.Body.Read(respBodyBuf) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + type responseBody struct { + Inserted map[string]string + Error string `json:"error"` + } + respBody := new(responseBody) + if err = json.Unmarshal(respBodyBuf, respBody); err != nil { + return nil, err + } + + return &Article{}, nil +} -- cgit v1.2.3