This repository has been archived on 2024-12-15. You can view files and clone it, but cannot push or open issues or pull requests.
bottin/pkg/bottin/client.go
Victor Lacasse-Beaudoin b419a5b260 major: séparer commande de librairie importable
Bump major version à 9

package main déplacé vers cmd/bottin/ pour garder `go install` qui nomme
l'exécutable `bottin`, sans empêcher d'importer le code à l'extérieur du
projet avec pkg/bottin/.

Déplacer fichiers SQL vers queries/

Déplacer fichiers html vers templates/

Ajouter scripts/ avec génération et injection de certificats x509
(https) et les ajouter au Makefile

Ajouter début d'exemple de manifests dans deployments/kubernetes/
2024-09-18 19:06:33 -04:00

170 lines
3.7 KiB
Go

package bottin
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
}