package main import ( "fmt" "codeberg.org/vlbeaudoin/voki/v3" ) type APIClient struct { Voki *voki.Voki } func (c APIClient) GetHealth() (health string, err error) { var request HealthGETRequest response, err := request.Request(c.Voki) if err != nil { return "", err } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Message, nil } func (c APIClient) InsertProgrammes(programmes ...Programme) (amountInserted int64, err error) { var request ProgrammesPOSTRequest request.Data.Programmes = programmes response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.ProgrammesInserted, nil } func (c APIClient) InsertMembres(membres ...Membre) (amountInserted int64, err error) { var request MembresPOSTRequest request.Data.Membres = membres response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.MembresInserted, nil } func (c APIClient) GetMembre(membreID string) (membre Membre, err error) { var request MembreGETRequest request.Param.MembreID = membreID response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.Membre, nil } func (c APIClient) GetMembres(limit int) (membres []Membre, err error) { var request MembresGETRequest request.Query.Limit = limit response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.Membres, nil } func (c APIClient) GetProgrammes(limit int) (programmes []Programme, err error) { var request ProgrammesGETRequest request.Query.Limit = limit response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.Programmes, nil } func (c APIClient) UpdateMembrePreferedName(membreID string, name string) (err error) { var request MembrePreferedNamePUTRequest if !IsMembreID(membreID) { return fmt.Errorf("Numéro étudiant '%s' invalide", membreID) } request.Param.MembreID = membreID request.Data.PreferedName = name response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return nil } func (c APIClient) GetMembreForDisplay(membreID string) (membre MembreForDisplay, err error) { var request MembreDisplayGETRequest request.Param.MembreID = membreID response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.Membre, nil } func (c APIClient) GetMembresForDisplay(limit int) (membres []MembreForDisplay, err error) { var request MembresDisplayGETRequest request.Query.Limit = limit response, err := request.Request(c.Voki) if err != nil { return } if code, message := response.StatusCode(), response.Message; code >= 400 { err = fmt.Errorf("%d: %s", code, message) return } return response.Data.Membres, nil }