Documentation ¶
Index ¶
- Variables
- func CommandHandler(commandFunc interface{}, args command.Args, resultsWriter ResultsWriter, ...) http.HandlerFunc
- func CommandHandlerRequestBodyArg(bodyConverter RequestBodyArgConverter, commandFunc interface{}, ...) http.HandlerFunc
- func CommandHandlerWithQueryParams(commandFunc interface{}, args command.Args, resultsWriter ResultsWriter, ...) http.HandlerFunc
- func DetectContentType(data []byte) string
- func JSONBodyFieldsAsVars(wrappedHandler http.Handler) http.HandlerFunc
- func MapJSONBodyFieldsAsVars(mapping map[string]string, wrappedHandler http.Handler) http.HandlerFunc
- type RequestBodyArgConverter
- type RequestBodyArgConverterFunc
- type ResultsWriter
- type ResultsWriterFunc
Constants ¶
This section is empty.
Variables ¶
View Source
var ( CatchPanics = true PrettyPrint = true PrettyPrintIndent = " " )
Functions ¶
func CommandHandler ¶
func CommandHandler(commandFunc interface{}, args command.Args, resultsWriter ResultsWriter, errHandlers ...httperr.Handler) http.HandlerFunc
func CommandHandlerRequestBodyArg ¶
func CommandHandlerRequestBodyArg(bodyConverter RequestBodyArgConverter, commandFunc interface{}, args command.Args, resultsWriter ResultsWriter, errHandlers ...httperr.Handler) http.HandlerFunc
func CommandHandlerWithQueryParams ¶
func CommandHandlerWithQueryParams(commandFunc interface{}, args command.Args, resultsWriter ResultsWriter, errHandlers ...httperr.Handler) http.HandlerFunc
func DetectContentType ¶
DetectContentType tries to detect the MIME content-type of data, or returns "application/octet-stream" if none could be identified.
func JSONBodyFieldsAsVars ¶
func JSONBodyFieldsAsVars(wrappedHandler http.Handler) http.HandlerFunc
func MapJSONBodyFieldsAsVars ¶
Types ¶
type RequestBodyArgConverter ¶
type RequestBodyArgConverterFunc ¶
func RequestBodyAsArg ¶
func RequestBodyAsArg(name string) RequestBodyArgConverterFunc
func (RequestBodyArgConverterFunc) RequestBodyToArg ¶
func (f RequestBodyArgConverterFunc) RequestBodyToArg(request *http.Request) (name, value string, err error)
type ResultsWriter ¶
type ResultsWriter interface {
WriteResults(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error
}
func RespondContentType ¶
func RespondContentType(contentType string) ResultsWriter
type ResultsWriterFunc ¶
type ResultsWriterFunc func(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error
var RespondDetectContentType ResultsWriterFunc = func(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error { if resultErr != nil { return resultErr } if len(resultVals) != 1 { return fmt.Errorf("RespondDetectContentType needs 1 result, got %d", len(resultVals)) } data, ok := resultVals[0].Interface().([]byte) if !ok { return fmt.Errorf("RespondDetectContentType needs []byte result, got %s", resultVals[0].Type()) } writer.Header().Add("Content-Type", DetectContentType(data)) _, err := writer.Write(data) return err }
var RespondHTML ResultsWriterFunc = func(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error { if resultErr != nil { return resultErr } var buf bytes.Buffer for _, resultVal := range resultVals { result := resultVal.Interface() if b, ok := result.([]byte); ok { buf.Write(b) } else { fmt.Fprint(&buf, result) } } writer.Header().Add("Content-Type", "text/html; charset=utf-8") _, err := writer.Write(buf.Bytes()) return err }
var RespondJSON ResultsWriterFunc = func(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error { if resultErr != nil { return resultErr } var buf []byte for _, resultVal := range resultVals { b, err := encodeJSON(resultVal.Interface()) if err != nil { return err } buf = append(buf, b...) } writer.Header().Set("Content-Type", "application/json; charset=utf-8") _, err := writer.Write(buf) return err }
var RespondPlaintext ResultsWriterFunc = func(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error { if resultErr != nil { return resultErr } var buf bytes.Buffer for _, resultVal := range resultVals { result := resultVal.Interface() if b, ok := result.([]byte); ok { buf.Write(b) } else { fmt.Fprint(&buf, result) } } writer.Header().Add("Content-Type", "text/plain; charset=utf-8") _, err := writer.Write(buf.Bytes()) return err }
var RespondXML ResultsWriterFunc = func(args command.Args, vars map[string]string, resultVals []reflect.Value, resultErr error, writer http.ResponseWriter, request *http.Request) error { if resultErr != nil { return resultErr } var buf []byte for _, resultVal := range resultVals { b, err := encodeXML(resultVal.Interface()) if err != nil { return err } buf = append(buf, b...) } writer.Header().Set("Content-Type", "application/xml; charset=utf-8") _, err := writer.Write(buf) return err }
func RespondBinary ¶
func RespondBinary(contentType string) ResultsWriterFunc
RespondBinary responds with contentType using the binary data from results of type []byte, string, or io.Reader.
func RespondJSONField ¶
func RespondJSONField(fieldName string) ResultsWriterFunc
func (ResultsWriterFunc) WriteResults ¶
Click to show internal directories.
Click to hide internal directories.