mirror of
https://github.com/1f349/go-webdav.git
synced 2024-12-22 08:14:15 +00:00
internal: introduce NewErrorResponse
Same as NewOKResponse but for errors.
This commit is contained in:
parent
4e8c5effe3
commit
46ebe58ac2
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user