func BuildErrorWithJSON(msg string, logger boshlog.Logger) ([]byte, error) { response := NewExceptionResponse(bosherr.Error(msg)) respJSON, err := json.Marshal(response) if err != nil { return respJSON, bosherr.WrapError(err, "Marshalling JSON") } logger.Info(mbusHandlerLogTag, "Building error", msg) return respJSON, nil }
func (d *Downloader) Download(logger logger.Logger, url string) error { logger.Info("Download", "Downloading %s...", url) req, err := http.NewRequest("GET", url, nil) if err != nil { logger.Error("Download", "Couldn't make the request to %s: %s", url, err.Error()) return err } client, err := d.httpClient() if err != nil { logger.Error("Download", "Couldn't make the http client %s", err.Error()) return err } resp, err := client.Do(req) if err != nil { logger.Error("Download", "Couldn't do the request (%s): %s", req, err.Error()) return err } if resp.StatusCode != http.StatusOK { err := fmt.Errorf("Download failed, bad response: %s", resp.Status) logger.Error("Download", err.Error()) return err } certificateVerifier := auth.CertificateVerifier{AllowedNames: d.config.PkixNames} err = certificateVerifier.Verify(resp.TLS.PeerCertificates) if err != nil { return err } logger.Info("Download", "Downloading complete. Installing...") err = d.installer.Install(resp.Body) if err != nil { return err } logger.Info("Download", "Download succeeded") return nil }
func PerformHandlerWithJSON(rawJSON []byte, handler Func, maxResponseLength int, logger boshlog.Logger) ([]byte, Request, error) { var request Request err := json.Unmarshal(rawJSON, &request) if err != nil { return []byte{}, request, bosherr.WrapError(err, "Unmarshalling JSON payload") } request.Payload = rawJSON logger.Info(mbusHandlerLogTag, "Received request with action %s", request.Method) logger.DebugWithDetails(mbusHandlerLogTag, "Payload", request.Payload) response := handler(request) if response == nil { logger.Info(mbusHandlerLogTag, "Nil response returned from handler") return []byte{}, request, nil } respJSON, err := marshalResponse(response, maxResponseLength, logger) if err != nil { return respJSON, request, err } logger.Info(mbusHandlerLogTag, "Responding") logger.DebugWithDetails(mbusHandlerLogTag, "Payload", respJSON) return respJSON, request, nil }