From 26b3134861d36e8a71ed515acdae9612fd5720f7 Mon Sep 17 00:00:00 2001 From: Victor Lacasse-Beaudoin Date: Tue, 18 Jun 2024 23:55:55 -0400 Subject: [PATCH] feature(request): ajouter MembrePreferedNamePUT et ProgrammesGET --- request.go | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/request.go b/request.go index df538b3..ab4642d 100644 --- a/request.go +++ b/request.go @@ -195,3 +195,81 @@ func (request MembresGETRequest) Request(v *voki.Voki) (response MembresGETRespo return } + +var _ voki.Requester[MembrePreferedNamePUTResponse] = MembrePreferedNamePUTRequest{} + +type MembrePreferedNamePUTRequest struct { + Data struct { + PreferedName string `json:"prefered_name"` + } `json:"data"` + Param struct { + MembreID string `json:"membre_id" param:"membre_id"` + } `json:"param"` +} + +func (request MembrePreferedNamePUTRequest) Complete() bool { + return IsMembreID(request.Param.MembreID) && len(request.Data.PreferedName) != 0 +} + +func (request MembrePreferedNamePUTRequest) Request(v *voki.Voki) (response MembrePreferedNamePUTResponse, err error) { + if !request.Complete() { + err = fmt.Errorf("Incomplete MembrePreferedNamePUTRequest") + return + } + + var buf bytes.Buffer + if err = json.NewEncoder(&buf).Encode(request.Data); err != nil { + return + } + + statusCode, body, err := v.CallAndParse( + http.MethodPut, + "/api/v7/membre/%s/", + &buf, + true, + ) + if err != nil { + err = fmt.Errorf("code=%d err=%s", statusCode, err) + return + } + response.SetStatusCode(statusCode) + if err = json.Unmarshal(body, &response); err != nil { + return + } + + return +} + +var _ voki.Requester[ProgrammesGETResponse] = ProgrammesGETRequest{} + +type ProgrammesGETRequest struct { + Query struct { + Limit int `json:"limit" query:"limit"` + } +} + +func (request ProgrammesGETRequest) Complete() bool { return true } + +func (request ProgrammesGETRequest) Request(v *voki.Voki) (response ProgrammesGETResponse, err error) { + if !request.Complete() { + err = fmt.Errorf("Incomplete ProgrammesGETRequest") + return + } + + statusCode, body, err := v.CallAndParse( + http.MethodGet, + fmt.Sprintf("/api/v7/programme/?limit=%d", request.Query.Limit), + nil, + true, + ) + if err != nil { + err = fmt.Errorf("code=%d err=%s", statusCode, err) + return + } + response.SetStatusCode(statusCode) + if err = json.Unmarshal(body, &response); err != nil { + return + } + + return +}