reactor

package
v0.0.0-...-a131ce6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 20, 2023 License: MIT Imports: 11 Imported by: 0

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

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

type Reactor struct {
	Logger logger.Logger
}

func NewReactor

func NewReactor(logger logger.Logger) *Reactor

func (*Reactor) AuthenticationRequiredResponse

func (rc *Reactor) AuthenticationRequiredResponse(w http.ResponseWriter, r *http.Request)

func (*Reactor) BadRequestResponse

func (rc *Reactor) BadRequestResponse(w http.ResponseWriter, r *http.Request, err error)

func (*Reactor) EditConflictResponse

func (rc *Reactor) EditConflictResponse(w http.ResponseWriter, r *http.Request)

func (*Reactor) FailedValidationResponse

func (rc *Reactor) FailedValidationResponse(w http.ResponseWriter, r *http.Request, err error)

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

func (rc *Reactor) ReadCSV(qs url.Values, key string, defaultValue []string) []string

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) ReadIDParam

func (rc *Reactor) ReadIDParam(r *http.Request) (int64, error)

func (*Reactor) ReadInt

func (rc *Reactor) ReadInt(qs url.Values, key string, defaultValue int, v *validator.Validator) int

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) ReadJSON

func (rc *Reactor) ReadJSON(w http.ResponseWriter, r *http.Request, dst interface{}) error

func (*Reactor) ReadString

func (rc *Reactor) ReadString(qs url.Values, key string, defaultValue string) string

ReadString returns a string value from the query string, or the provided default value if no matching key could be found.

func (*Reactor) ServerErrorResponse

func (rc *Reactor) ServerErrorResponse(w http.ResponseWriter, r *http.Request, err error)

func (*Reactor) WriteJSON

func (rc *Reactor) WriteJSON(w http.ResponseWriter, status int, data interface{}) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL