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:
parent
7773b3cf72
commit
c850b221a1
8 changed files with 431 additions and 56 deletions
|
@ -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
|
||||
}
|
||||
|
|
Reference in a new issue