mirror of
https://github.com/davidallendj/configurator.git
synced 2025-12-20 03:27:02 -07:00
server: fixed error message handling
This commit is contained in:
parent
cccf6321cc
commit
34bbd1ce85
2 changed files with 30 additions and 17 deletions
12
cmd/fetch.go
12
cmd/fetch.go
|
|
@ -24,6 +24,11 @@ var fetchCmd = &cobra.Command{
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check if we actually have any targets to run
|
||||||
|
if len(targets) <= 0 {
|
||||||
|
log.Error().Msg("must specify a target")
|
||||||
|
}
|
||||||
|
|
||||||
// check to see if an access token is available from env
|
// check to see if an access token is available from env
|
||||||
if conf.AccessToken == "" {
|
if conf.AccessToken == "" {
|
||||||
// check if OCHAMI_ACCESS_TOKEN env var is set if no access token is provided and use that instead
|
// check if OCHAMI_ACCESS_TOKEN env var is set if no access token is provided and use that instead
|
||||||
|
|
@ -49,14 +54,13 @@ var fetchCmd = &cobra.Command{
|
||||||
url := fmt.Sprintf("%s/generate?target=%s", remoteHost, target)
|
url := fmt.Sprintf("%s/generate?target=%s", remoteHost, target)
|
||||||
res, body, err := util.MakeRequest(url, http.MethodGet, nil, headers)
|
res, body, err := util.MakeRequest(url, http.MethodGet, nil, headers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error().Err(err).Msg("failed to make request")
|
log.Error().Err(err).Msg("failed to fetch files")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// handle getting other error codes other than a 200
|
// handle getting other error codes other than a 200
|
||||||
if res != nil {
|
if res != nil {
|
||||||
if res.StatusCode == http.StatusOK {
|
// NOTE: the server responses are already marshaled to JSON
|
||||||
log.Info().Msgf("%s\n", string(body))
|
fmt.Print(string(body))
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ func (s *Server) Generate(opts ...client.Option) func(w http.ResponseWriter, r *
|
||||||
)
|
)
|
||||||
s.GeneratorParams = parseGeneratorParams(r, opts...)
|
s.GeneratorParams = parseGeneratorParams(r, opts...)
|
||||||
if targetParam == "" {
|
if targetParam == "" {
|
||||||
writeErrorResponse(w, "must specify a target")
|
writeErrorResponse(w, true, "must specify a target")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -159,7 +159,8 @@ func (s *Server) Generate(opts ...client.Option) func(w http.ResponseWriter, r *
|
||||||
// try and generate a new config file from supplied params
|
// try and generate a new config file from supplied params
|
||||||
outputs, err = generator.GenerateWithTarget(s.Config, targetParam)
|
outputs, err = generator.GenerateWithTarget(s.Config, targetParam)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeErrorResponse(w, "failed to generate file: %v", err)
|
writeErrorResponse(w, false, "failed to generate file")
|
||||||
|
log.Error().Err(err).Msg("failed to generate file")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -168,12 +169,12 @@ func (s *Server) Generate(opts ...client.Option) func(w http.ResponseWriter, r *
|
||||||
tmp := generator.ConvertContentsToString(outputs)
|
tmp := generator.ConvertContentsToString(outputs)
|
||||||
b, err := json.Marshal(tmp)
|
b, err := json.Marshal(tmp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeErrorResponse(w, "failed to marshal output: %v", err)
|
writeErrorResponse(w, true, "failed to marshal output: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
_, err = w.Write(b)
|
_, err = w.Write(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeErrorResponse(w, "failed to write response: %v", err)
|
writeErrorResponse(w, true, "failed to write response: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -193,34 +194,34 @@ func (s *Server) createTarget(w http.ResponseWriter, r *http.Request) {
|
||||||
err error
|
err error
|
||||||
)
|
)
|
||||||
if r == nil {
|
if r == nil {
|
||||||
writeErrorResponse(w, "request is invalid")
|
writeErrorResponse(w, true, "request is invalid")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes, err = io.ReadAll(r.Body)
|
bytes, err = io.ReadAll(r.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeErrorResponse(w, "failed to read response body: %v", err)
|
writeErrorResponse(w, true, "failed to read response body: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
defer r.Body.Close()
|
defer r.Body.Close()
|
||||||
|
|
||||||
err = json.Unmarshal(bytes, &target)
|
err = json.Unmarshal(bytes, &target)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
writeErrorResponse(w, "failed to unmarshal target: %v", err)
|
writeErrorResponse(w, true, "failed to unmarshal target: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure a plugin and at least one template is supplied
|
// make sure a plugin and at least one template is supplied
|
||||||
if target.Name == "" {
|
if target.Name == "" {
|
||||||
writeErrorResponse(w, "target name is required")
|
writeErrorResponse(w, true, "target name is required")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if target.PluginPath == "" {
|
if target.PluginPath == "" {
|
||||||
writeErrorResponse(w, "must supply a generator name")
|
writeErrorResponse(w, true, "must supply a generator name")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(target.Templates) <= 0 {
|
if len(target.Templates) <= 0 {
|
||||||
writeErrorResponse(w, "must provided at least one template")
|
writeErrorResponse(w, true, "must provided at least one template")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -238,10 +239,18 @@ func (s *Server) getTarget(target string) *Target {
|
||||||
|
|
||||||
// Wrapper function to simplify writting error message responses. This function
|
// Wrapper function to simplify writting error message responses. This function
|
||||||
// is only intended to be used with the service and nothing else.
|
// is only intended to be used with the service and nothing else.
|
||||||
func writeErrorResponse(w http.ResponseWriter, format string, a ...any) error {
|
func writeErrorResponse(w http.ResponseWriter, logServer bool, format string, a ...any) error {
|
||||||
errmsg := fmt.Sprintf(format, a...)
|
errmsg := fmt.Sprintf(format, a...)
|
||||||
log.Error().Msg(errmsg)
|
if logServer {
|
||||||
http.Error(w, errmsg, http.StatusInternalServerError)
|
|
||||||
|
log.Error().Msg(errmsg)
|
||||||
|
}
|
||||||
|
bytes, _ := json.Marshal(map[string]any{
|
||||||
|
"level": "error",
|
||||||
|
"time": time.Now().Unix(),
|
||||||
|
"message": errmsg,
|
||||||
|
})
|
||||||
|
http.Error(w, string(bytes), http.StatusInternalServerError)
|
||||||
return fmt.Errorf(errmsg)
|
return fmt.Errorf(errmsg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue