Documentation ¶
Overview ¶
* Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @author Aeneas Rekkas <aeneas+oss@aeneas.io> * @copyright 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * @license Apache-2.0
* Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @author Aeneas Rekkas <aeneas+oss@aeneas.io> * @copyright 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * @license Apache-2.0
* Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @author Aeneas Rekkas <aeneas+oss@aeneas.io> * @copyright 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * @license Apache-2.0
* Copyright © 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @author Aeneas Rekkas <aeneas+oss@aeneas.io> * @copyright 2015-2018 Aeneas Rekkas <aeneas+oss@aeneas.io> * @license Apache-2.0
Index ¶
- Variables
- func DefaultErrorReporter(logger *logrusx.Logger, args ...interface{}) func(w http.ResponseWriter, r *http.Request, code int, err error)
- type DefaultError
- func (e DefaultError) Debug() string
- func (e DefaultError) Details() map[string]interface{}
- func (e DefaultError) Error() string
- func (e DefaultError) Format(s fmt.State, verb rune)
- func (e DefaultError) Is(err error) bool
- func (e DefaultError) Reason() string
- func (e DefaultError) RequestID() string
- func (e *DefaultError) StackTrace() (trace errors.StackTrace)
- func (e DefaultError) Status() string
- func (e DefaultError) StatusCode() int
- func (e DefaultError) Unwrap() error
- func (e DefaultError) WithDebug(debug string) *DefaultError
- func (e DefaultError) WithDebugf(debug string, args ...interface{}) *DefaultError
- func (e DefaultError) WithDetail(key string, detail interface{}) *DefaultError
- func (e DefaultError) WithDetailf(key string, message string, args ...interface{}) *DefaultError
- func (e DefaultError) WithError(message string) *DefaultError
- func (e DefaultError) WithErrorf(message string, args ...interface{}) *DefaultError
- func (e DefaultError) WithReason(reason string) *DefaultError
- func (e DefaultError) WithReasonf(reason string, args ...interface{}) *DefaultError
- func (e *DefaultError) WithTrace(err error) *DefaultError
- func (e DefaultError) WithWrap(err error) *DefaultError
- func (e *DefaultError) Wrap(err error)
- type JSONWriter
- func (h *JSONWriter) Write(w http.ResponseWriter, r *http.Request, e interface{})
- func (h *JSONWriter) WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{})
- func (h *JSONWriter) WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{})
- func (h *JSONWriter) WriteError(w http.ResponseWriter, r *http.Request, err error, opts ...Option)
- func (h *JSONWriter) WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err error, opts ...Option)
- type NegotiationHandler
- func (h *NegotiationHandler) Write(w http.ResponseWriter, r *http.Request, e interface{})
- func (h *NegotiationHandler) WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{})
- func (h *NegotiationHandler) WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{})
- func (h *NegotiationHandler) WriteError(w http.ResponseWriter, r *http.Request, err error)
- func (h *NegotiationHandler) WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err error)
- type Option
- type TextWriter
- func (h *TextWriter) Write(w http.ResponseWriter, r *http.Request, e interface{})
- func (h *TextWriter) WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{})
- func (h *TextWriter) WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{})
- func (h *TextWriter) WriteError(w http.ResponseWriter, r *http.Request, err interface{})
- func (h *TextWriter) WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err interface{})
- type Writer
Constants ¶
This section is empty.
Variables ¶
var ErrBadRequest = DefaultError{ StatusField: http.StatusText(http.StatusBadRequest), ErrorField: "The request was malformed or contained invalid parameters", CodeField: http.StatusBadRequest, }
var ErrConflict = DefaultError{ StatusField: http.StatusText(http.StatusConflict), ErrorField: "The resource could not be created due to a conflict", CodeField: http.StatusConflict, }
var ErrForbidden = DefaultError{ StatusField: http.StatusText(http.StatusForbidden), ErrorField: "The requested action was forbidden", CodeField: http.StatusForbidden, }
var ErrInternalServerError = DefaultError{ StatusField: http.StatusText(http.StatusInternalServerError), ErrorField: "An internal server error occurred, please contact the system administrator", CodeField: http.StatusInternalServerError, }
var ErrNotFound = DefaultError{ StatusField: http.StatusText(http.StatusNotFound), ErrorField: "The requested resource could not be found", CodeField: http.StatusNotFound, }
http.StatusText(http.StatusUnauthorized), ErrorField: "The request could not be authorized", CodeField: http.StatusUnauthorized, }StatusField:
var ErrUnsupportedMediaType = DefaultError{ StatusField: http.StatusText(http.StatusUnsupportedMediaType), ErrorField: "The request is using an unknown content type", CodeField: http.StatusUnsupportedMediaType, }
Functions ¶
func DefaultErrorReporter ¶
Types ¶
type DefaultError ¶
type DefaultError struct { CodeField int `json:"code,omitempty"` StatusField string `json:"status,omitempty"` RIDField string `json:"request,omitempty"` ReasonField string `json:"reason,omitempty"` DebugField string `json:"debug,omitempty"` DetailsField map[string]interface{} `json:"details,omitempty"` ErrorField string `json:"message"` // contains filtered or unexported fields }
func ToDefaultError ¶
func ToDefaultError(err error, id string) *DefaultError
func (DefaultError) Debug ¶
func (e DefaultError) Debug() string
func (DefaultError) Details ¶
func (e DefaultError) Details() map[string]interface{}
func (DefaultError) Error ¶
func (e DefaultError) Error() string
func (DefaultError) Is ¶
func (e DefaultError) Is(err error) bool
func (DefaultError) Reason ¶
func (e DefaultError) Reason() string
func (DefaultError) RequestID ¶
func (e DefaultError) RequestID() string
func (*DefaultError) StackTrace ¶
func (e *DefaultError) StackTrace() (trace errors.StackTrace)
StackTrace returns the error's stack trace.
func (DefaultError) Status ¶
func (e DefaultError) Status() string
func (DefaultError) StatusCode ¶
func (e DefaultError) StatusCode() int
func (DefaultError) Unwrap ¶
func (e DefaultError) Unwrap() error
func (DefaultError) WithDebug ¶
func (e DefaultError) WithDebug(debug string) *DefaultError
func (DefaultError) WithDebugf ¶
func (e DefaultError) WithDebugf(debug string, args ...interface{}) *DefaultError
func (DefaultError) WithDetail ¶
func (e DefaultError) WithDetail(key string, detail interface{}) *DefaultError
func (DefaultError) WithDetailf ¶
func (e DefaultError) WithDetailf(key string, message string, args ...interface{}) *DefaultError
func (DefaultError) WithError ¶
func (e DefaultError) WithError(message string) *DefaultError
func (DefaultError) WithErrorf ¶
func (e DefaultError) WithErrorf(message string, args ...interface{}) *DefaultError
func (DefaultError) WithReason ¶
func (e DefaultError) WithReason(reason string) *DefaultError
func (DefaultError) WithReasonf ¶
func (e DefaultError) WithReasonf(reason string, args ...interface{}) *DefaultError
func (*DefaultError) WithTrace ¶
func (e *DefaultError) WithTrace(err error) *DefaultError
func (DefaultError) WithWrap ¶
func (e DefaultError) WithWrap(err error) *DefaultError
func (*DefaultError) Wrap ¶
func (e *DefaultError) Wrap(err error)
type JSONWriter ¶
type JSONWriter struct { Reporter reporter ErrorEnhancer func(r *http.Request, err error) interface{} // contains filtered or unexported fields }
json outputs JSON.
func NewJSONWriter ¶
func NewJSONWriter(logger *logrusx.Logger) *JSONWriter
NewJSONWriter returns a json
func (*JSONWriter) Write ¶
func (h *JSONWriter) Write(w http.ResponseWriter, r *http.Request, e interface{})
Write a response object to the ResponseWriter with status code 200.
func (*JSONWriter) WriteCode ¶
func (h *JSONWriter) WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{})
WriteCode writes a response object to the ResponseWriter and sets a response code.
func (*JSONWriter) WriteCreated ¶
func (h *JSONWriter) WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{})
WriteCreated writes a response object to the ResponseWriter with status code 201 and the Location header set to location.
func (*JSONWriter) WriteError ¶
func (h *JSONWriter) WriteError(w http.ResponseWriter, r *http.Request, err error, opts ...Option)
WriteError writes an error to ResponseWriter and tries to extract the error's status code by asserting statusCodeCarrier. If the error does not implement statusCodeCarrier, the status code is set to 500.
func (*JSONWriter) WriteErrorCode ¶
func (h *JSONWriter) WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err error, opts ...Option)
WriteErrorCode writes an error to ResponseWriter and forces an error code.
type NegotiationHandler ¶
type NegotiationHandler struct {
// contains filtered or unexported fields
}
NegotiationHandler automatically negotiates the content type with the request client.
func NewNegotiationHandler ¶
func NewNegotiationHandler(logger *logrusx.Logger) *NegotiationHandler
NewNegotiationHandler creates a new NewNegotiationHandler.
func (*NegotiationHandler) Write ¶
func (h *NegotiationHandler) Write(w http.ResponseWriter, r *http.Request, e interface{})
Write a response object to the ResponseWriter with status code 200.
func (*NegotiationHandler) WriteCode ¶
func (h *NegotiationHandler) WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{})
WriteCode writes a response object to the ResponseWriter and sets a response code.
func (*NegotiationHandler) WriteCreated ¶
func (h *NegotiationHandler) WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{})
WriteCreated writes a response object to the ResponseWriter with status code 201 and the Location header set to location.
func (*NegotiationHandler) WriteError ¶
func (h *NegotiationHandler) WriteError(w http.ResponseWriter, r *http.Request, err error)
WriteError writes an error to ResponseWriter and tries to extract the error's status code by asserting statusCodeCarrier. If the error does not implement statusCodeCarrier, the status code is set to 500.
func (*NegotiationHandler) WriteErrorCode ¶
func (h *NegotiationHandler) WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err error)
WriteErrorCode writes an error to ResponseWriter and forces an error code.
type TextWriter ¶
type TextWriter struct { Reporter reporter // contains filtered or unexported fields }
json outputs JSON.
func NewTextWriter ¶
func NewTextWriter(logger *logrusx.Logger, contentType string) *TextWriter
NewPlainWriter returns a json
func (*TextWriter) Write ¶
func (h *TextWriter) Write(w http.ResponseWriter, r *http.Request, e interface{})
Write a response object to the ResponseWriter with status code 200.
func (*TextWriter) WriteCode ¶
func (h *TextWriter) WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{})
WriteCode writes a response object to the ResponseWriter and sets a response code.
func (*TextWriter) WriteCreated ¶
func (h *TextWriter) WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{})
WriteCreated writes a response object to the ResponseWriter with status code 201 and the Location header set to location.
func (*TextWriter) WriteError ¶
func (h *TextWriter) WriteError(w http.ResponseWriter, r *http.Request, err interface{})
WriteError writes an error to ResponseWriter and tries to extract the error's status code by asserting statusCodeCarrier. If the error does not implement statusCodeCarrier, the status code is set to 500.
func (*TextWriter) WriteErrorCode ¶
func (h *TextWriter) WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err interface{})
WriteErrorCode writes an error to ResponseWriter and forces an error code.
type Writer ¶
type Writer interface { // Write a response object to the ResponseWriter with status code 200. Write(w http.ResponseWriter, r *http.Request, e interface{}) // WriteCode writes a response object to the ResponseWriter and sets a response code. WriteCode(w http.ResponseWriter, r *http.Request, code int, e interface{}) // WriteCreated writes a response object to the ResponseWriter with status code 201 and // the Location header set to location. WriteCreated(w http.ResponseWriter, r *http.Request, location string, e interface{}) // WriteError writes an error to ResponseWriter and tries to extract the error's status code by // asserting statusCodeCarrier. If the error does not implement statusCodeCarrier, the status code // is set to 500. WriteError(w http.ResponseWriter, r *http.Request, err error, opts ...Option) // WriteErrorCode writes an error to ResponseWriter and forces an error code. WriteErrorCode(w http.ResponseWriter, r *http.Request, code int, err error, opts ...Option) }
Writer is a helper to write arbitrary data to a ResponseWriter