From 46ebe58ac21937e9cb1d6792f17a4ce5716f7eb3 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 29 Apr 2022 15:13:38 +0200 Subject: [PATCH] internal: introduce NewErrorResponse Same as NewOKResponse but for errors. --- internal/elements.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/internal/elements.go b/internal/elements.go index eb76842..ebabbf7 100644 --- a/internal/elements.go +++ b/internal/elements.go @@ -2,6 +2,7 @@ package internal import ( "encoding/xml" + "errors" "fmt" "net/http" "net/url" @@ -134,6 +135,27 @@ func NewOKResponse(path string) *Response { } } +func NewErrorResponse(path string, err error) *Response { + code := http.StatusInternalServerError + var httpErr *HTTPError + if errors.As(err, &httpErr) { + code = httpErr.Code + } + + var errElt *Error + if !errors.As(err, &errElt) { + errElt = &Error{} + } + + href := Href{Path: path} + return &Response{ + Hrefs: []Href{href}, + Status: &Status{Code: code}, + ResponseDescription: err.Error(), + Error: errElt, + } +} + func (resp *Response) Path() (string, error) { err := resp.Status.Err() var path string