Documentation
¶
Overview ¶
Example (Httprouter) ¶
package main import ( "bytes" "fmt" "net/http" "net/http/httptest" "os" "github.com/unknowntpo/todos/internal/logger/zerolog" "github.com/julienschmidt/httprouter" ) type hello struct { rc *Reactor } func NewHello(router *httprouter.Router, rc *Reactor) { hello := &hello{rc} router.HandlerFunc(http.MethodGet, "/", hello.helloHandler) } func (h *hello) helloHandler(w http.ResponseWriter, r *http.Request) { h.rc.WriteJSON(w, http.StatusOK, "Hello from helloHandler") } func main() { logBuf := bytes.NewBufferString("") logger := zerolog.New(logBuf) rc := NewReactor(logger) rr := httptest.NewRecorder() r, err := http.NewRequest(http.MethodGet, "/", nil) if err != nil { fmt.Printf("failed to create new request: %v", err) os.Exit(1) } router := httprouter.New() NewHello(router, rc) router.ServeHTTP(rr, r) fmt.Println(rr.Body.String()) }
Output: "Hello from helloHandler"
Index ¶
- type ErrorResponse
- type Reactor
- func (rc *Reactor) AuthenticationRequiredResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) BadRequestResponse(w http.ResponseWriter, r *http.Request, err error)
- func (rc *Reactor) EditConflictResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) FailedValidationResponse(w http.ResponseWriter, r *http.Request, err error)
- func (rc *Reactor) InactiveAccountResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) InvalidAuthenticationTokenResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) InvalidCredentialsResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) MethodNotAllowedResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) NotFoundResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) NotPermittedResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) RateLimitExceededResponse(w http.ResponseWriter, r *http.Request)
- func (rc *Reactor) ReadCSV(qs url.Values, key string, defaultValue []string) []string
- func (rc *Reactor) ReadIDParam(r *http.Request) (int64, error)
- func (rc *Reactor) ReadInt(qs url.Values, key string, defaultValue int, v *validator.Validator) int
- func (rc *Reactor) ReadJSON(w http.ResponseWriter, r *http.Request, dst interface{}) error
- func (rc *Reactor) ReadString(qs url.Values, key string, defaultValue string) string
- func (rc *Reactor) ServerErrorResponse(w http.ResponseWriter, r *http.Request, err error)
- func (rc *Reactor) WriteJSON(w http.ResponseWriter, status int, data interface{}) error
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ErrorResponse ¶
type ErrorResponse struct {
ErrMsg interface{} `json:"error"`
}
type Reactor ¶
func NewReactor ¶
func (*Reactor) AuthenticationRequiredResponse ¶
func (rc *Reactor) AuthenticationRequiredResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) BadRequestResponse ¶
func (*Reactor) EditConflictResponse ¶
func (rc *Reactor) EditConflictResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) FailedValidationResponse ¶
func (*Reactor) InactiveAccountResponse ¶
func (rc *Reactor) InactiveAccountResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) InvalidAuthenticationTokenResponse ¶
func (rc *Reactor) InvalidAuthenticationTokenResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) InvalidCredentialsResponse ¶
func (rc *Reactor) InvalidCredentialsResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) MethodNotAllowedResponse ¶
func (rc *Reactor) MethodNotAllowedResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) NotFoundResponse ¶
func (rc *Reactor) NotFoundResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) NotPermittedResponse ¶
func (rc *Reactor) NotPermittedResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) RateLimitExceededResponse ¶
func (rc *Reactor) RateLimitExceededResponse(w http.ResponseWriter, r *http.Request)
func (*Reactor) ReadCSV ¶
The ReadCSV reads a string value from the query string and then splits it into a slice on the comma character. If no matching key count be found, it returns the provided default value.
func (*Reactor) ReadInt ¶
The ReadInt reads a string value from the query string and converts it to an integer before returning. If no matching key count be found it returns the provided default value. If the value couldn't be converted to an integer, then we record an error message in the provided Validator instance. TODO: Use interface to accept different validator.
func (*Reactor) ReadString ¶
ReadString returns a string value from the query string, or the provided default value if no matching key could be found.