Merge pull request 'Ajouter api.NewApiClientFromViper() et flags manquants associés' (#70) from feature/new-from-viper into main
Reviewed-on: #70
This commit is contained in:
commit
346df72955
3 changed files with 41 additions and 11 deletions
21
api/api.go
21
api/api.go
|
@ -9,6 +9,9 @@ import (
|
|||
"io/ioutil"
|
||||
"mime/multipart"
|
||||
"net/http"
|
||||
|
||||
"git.agecem.com/agecem/agecem-org/config"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type API struct {
|
||||
|
@ -37,6 +40,24 @@ type UploadDocumentResponseInfo struct {
|
|||
Size float64 `json:"size"`
|
||||
}
|
||||
|
||||
func NewApiClientFromViper() (*API, error) {
|
||||
var config config.Config
|
||||
|
||||
if err := viper.Unmarshal(&config); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
api, err := New(config.Server.Api.Protocol, config.Server.Api.Host, config.Server.Api.Port, APIOptions{
|
||||
KeyAuth: config.Server.Api.Auth,
|
||||
Key: config.Server.Api.Key,
|
||||
})
|
||||
if err != nil {
|
||||
return api, err
|
||||
}
|
||||
|
||||
return api, nil
|
||||
}
|
||||
|
||||
func New(protocol, host string, port int, opts APIOptions) (*API, error) {
|
||||
api := API{
|
||||
Protocol: protocol,
|
||||
|
|
|
@ -110,6 +110,18 @@ func init() {
|
|||
serverCmd.Flags().String("server-api-key", "agecem-org", "Key to use for authenticating to /v1 routes")
|
||||
viper.BindPFlag("server.api.key", serverCmd.Flags().Lookup("server-api-key"))
|
||||
|
||||
// server.api.port
|
||||
serverCmd.Flags().Int("server-api-port", 8080, "API server port (config: server.api.port)")
|
||||
viper.BindPFlag("server.api.port", serverCmd.Flags().Lookup("server-api-port"))
|
||||
|
||||
// server.api.protocol
|
||||
serverCmd.Flags().String("server-api-protocol", "http", "API server protocol (http/https) (config: server.api.protocol)")
|
||||
viper.BindPFlag("server.api.protocol", serverCmd.Flags().Lookup("server-api-protocol"))
|
||||
|
||||
// server.api.host
|
||||
serverCmd.Flags().String("server-api-host", "localhost", "API server host (config: server.api.host)")
|
||||
viper.BindPFlag("server.api.host", serverCmd.Flags().Lookup("server-api-host"))
|
||||
|
||||
// server.admin.auth - --server-admin-auth
|
||||
serverCmd.Flags().Bool("server-admin-auth", true, "Enable to allow basic authentication for /admin routes (config: server.admin.auth)")
|
||||
viper.BindPFlag("server.admin.auth", serverCmd.Flags().Lookup("server-admin-auth"))
|
||||
|
@ -605,10 +617,7 @@ func handleVieEtudianteOrganisme(c echo.Context) error {
|
|||
}
|
||||
|
||||
func handleDocumentation(c echo.Context) error {
|
||||
client, err := api.New("http", "localhost", cfg.Server.Port, api.APIOptions{
|
||||
KeyAuth: cfg.Server.Api.Auth,
|
||||
Key: cfg.Server.Api.Key,
|
||||
})
|
||||
client, err := api.NewApiClientFromViper()
|
||||
if err != nil {
|
||||
return c.Render(http.StatusInternalServerError, "documentation-html", nil)
|
||||
}
|
||||
|
@ -677,10 +686,7 @@ func handleFormulaires(c echo.Context) error {
|
|||
}
|
||||
|
||||
func handlePublicDocumentation(c echo.Context) error {
|
||||
client, err := api.New("http", "localhost", cfg.Server.Port, api.APIOptions{
|
||||
KeyAuth: cfg.Server.Api.Auth,
|
||||
Key: cfg.Server.Api.Key,
|
||||
})
|
||||
client, err := api.NewApiClientFromViper()
|
||||
if err != nil {
|
||||
return c.JSON(http.StatusNotFound, map[string]string{"message": "Not Found"})
|
||||
}
|
||||
|
@ -713,7 +719,7 @@ func handleAdminDocumentsUpload(c echo.Context) error {
|
|||
}
|
||||
|
||||
func handleAdminDocumentsUploadPOST(c echo.Context) error {
|
||||
client, err := api.New("http", "localhost", cfg.Server.Port, api.APIOptions{
|
||||
client, err := api.New(cfg.Server.Api.Protocol, cfg.Server.Api.Host, cfg.Server.Port, api.APIOptions{
|
||||
KeyAuth: cfg.Server.Api.Auth,
|
||||
Key: cfg.Server.Api.Key,
|
||||
BasicAuth: cfg.Server.Admin.Auth,
|
||||
|
|
|
@ -22,7 +22,10 @@ type Config struct {
|
|||
} `mapstructure:"admin"`
|
||||
Api struct {
|
||||
Auth bool `mapstructure:"auth"`
|
||||
Host string `mapstructure:"host"`
|
||||
Key string `mapstructure:"key"`
|
||||
Port int `mapstructure:"port"`
|
||||
Protocol string `mapstructure:"protocol"`
|
||||
} `mapstructure:"api"`
|
||||
Documents struct {
|
||||
AccessKeyId string `mapstructure:"access_key_id"`
|
||||
|
|
Loading…
Reference in a new issue