Implémenter client web de base

Déplacer tous les flags vers rootCmd.PersistentFlags()

Ajouter config struct types à models/

Ajouter data/apiclient.go#ApiClient.GetHealth()

Ajouter webCmd avec viper.Unmarshal() pour valeurs de config

Ajouter package web depuis agecem/bottin
This commit is contained in:
Victor Lacasse-Beaudoin 2023-06-09 01:09:02 -04:00
parent 7773b3cf72
commit c850b221a1
8 changed files with 431 additions and 56 deletions

View file

@ -1,9 +1,14 @@
package data
import (
"encoding/json"
"errors"
"fmt"
"io"
"io/ioutil"
"net/http"
"git.agecem.com/agecem/bottin-agenda/responses"
)
type ApiClient struct {
@ -58,3 +63,30 @@ func (a *ApiClient) Call(method, route string, requestBody io.Reader, useKey boo
return response, nil
}
// GetHealth allows checking for API server health
func (a *ApiClient) GetHealth() (string, error) {
var response responses.GetHealthResponse
getHealthResponse, err := a.Call(http.MethodGet, "/v3/health", nil, true)
if err != nil {
return response.Message, err
}
defer getHealthResponse.Body.Close()
body, err := ioutil.ReadAll(getHealthResponse.Body)
if err != nil {
return response.Message, err
}
if err := json.Unmarshal(body, &response); err != nil {
return response.Message, err
}
if response.Message == "" {
return response.Message, errors.New("Could not confirm that API server is up, no response message")
}
return response.Message, nil
}