httptransport

package module
v1.15.0 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2020 License: MIT Imports: 31 Imported by: 7

README

HTTP Transport

GoDoc Widget Build Status codecov Go Report Card

Courier Transport for HTTP.

Documentation

Documentation

Index

Examples

Constants

This section is empty.

Variables

View Source
var HttpRequestKey = reflect.TypeOf(http.Request{}).String()
View Source
var RxHttpRouterPath = regexp.MustCompile("/:([^/]+)")
View Source
var ServiceMetaKey = reflect.TypeOf(ServiceMeta{}).String()

Functions

func ContextWithHttpRequest

func ContextWithHttpRequest(ctx context.Context, req *http.Request) context.Context

func ContextWithOperationID added in v1.3.0

func ContextWithOperationID(ctx context.Context, operationID string) context.Context

func ContextWithOperatorMeta added in v1.9.1

func ContextWithOperatorMeta(ctx context.Context, om *courier.OperatorMeta) context.Context

func ContextWithServiceMeta

func ContextWithServiceMeta(ctx context.Context, meta ServiceMeta) context.Context

func HttpRequestFromContext

func HttpRequestFromContext(ctx context.Context) *http.Request

func OperationIDFromContext added in v1.3.0

func OperationIDFromContext(ctx context.Context) string

func OperatorMetaFromContext added in v1.9.1

func OperatorMetaFromContext(ctx context.Context) *courier.OperatorMeta

func OperatorParamsFromStruct added in v1.10.0

func OperatorParamsFromStruct(v interface{}) map[string][]string

func ParamsFromMap

func ParamsFromMap(m map[string]string) httprouter.Params

func TryCatch

func TryCatch(fn func()) (err error)

Types

type BadRequest

type BadRequest struct {
	// contains filtered or unexported fields
}

func (*BadRequest) AddErr

func (e *BadRequest) AddErr(err error, in string, nameOrIdx ...interface{})

func (*BadRequest) EnableErrTalk

func (e *BadRequest) EnableErrTalk()

func (*BadRequest) Err

func (e *BadRequest) Err() error

func (*BadRequest) SetMsg

func (e *BadRequest) SetMsg(msg string)

type GroupOperator

type GroupOperator struct {
	courier.EmptyOperator
	// contains filtered or unexported fields
}

func Group

func Group(path string) *GroupOperator
Example
package main

import (
	"fmt"

	"github.com/go-courier/httptransport"
)

func main() {
	g := httptransport.Group("/test")
	fmt.Println(g.Path())
}
Output:

/test

func (*GroupOperator) OperatorParams added in v1.13.0

func (g *GroupOperator) OperatorParams() map[string][]string

func (*GroupOperator) Path

func (g *GroupOperator) Path() string

type HttpMiddleware

type HttpMiddleware func(http.Handler) http.Handler

func MiddlewareChain

func MiddlewareChain(mw ...HttpMiddleware) HttpMiddleware

type HttpRouteHandler

type HttpRouteHandler struct {
	*RequestTransformerMgr
	*HttpRouteMeta
	// contains filtered or unexported fields
}

func NewHttpRouteHandler

func NewHttpRouteHandler(serviceMeta *ServiceMeta, httpRoute *HttpRouteMeta, requestTransformerMgr *RequestTransformerMgr) *HttpRouteHandler

func (*HttpRouteHandler) ServeHTTP

func (handler *HttpRouteHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request)

type HttpRouteMeta

type HttpRouteMeta struct {
	*courier.Route
}
Example
package main

import (
	"fmt"
	"os"
	"sort"

	"github.com/fatih/color"
	"github.com/go-courier/httptransport/__examples__/routes"

	"github.com/go-courier/httptransport"
)

func main() {
	os.Setenv("PROJECT_NAME", "service-example")
	os.Setenv("PROJECT_VERSION", "1.0.0")
	color.NoColor = true

	routeList := routes.RootRouter.Routes()

	sort.Slice(routeList, func(i, j int) bool {
		return httptransport.NewHttpRouteMeta(routeList[i]).Key() <
			httptransport.NewHttpRouteMeta(routeList[j]).Key()
	})

	for i := range routeList {
		httpRouteMeta := httptransport.NewHttpRouteMeta(routeList[i])
		fmt.Println(fmt.Sprintf(httpRouteMeta.String()))
	}
}
Output:

GET /demo openapi.OpenAPI
GET /demo/binary/files routes.DownloadFile
GET /demo/binary/images routes.ShowImage
POS /demo/cookie routes.Cookie
POS /demo/forms/multipart routes.FormMultipartWithFile
POS /demo/forms/multipart-with-files routes.FormMultipartWithFiles
POS /demo/forms/urlencoded routes.FormURLEncoded
GET /demo/proxy routes.Proxy
GET /demo/proxy/v2 routes.ProxyWithReader
GET /demo/redirect routes.Redirect
POS /demo/redirect routes.RedirectWhenError
POS /demo/restful routes.Create
HEA /demo/restful routes.HealthCheck
GET /demo/restful/{id} routes.DataProvider routes.GetByID
DEL /demo/restful/{id} routes.DataProvider routes.RemoveByID
PUT /demo/restful/{id} routes.DataProvider routes.UpdateByID

func NewHttpRouteMeta

func NewHttpRouteMeta(route *courier.Route) *HttpRouteMeta

func (*HttpRouteMeta) Key

func (route *HttpRouteMeta) Key() string

func (*HttpRouteMeta) Method

func (route *HttpRouteMeta) Method() string

func (*HttpRouteMeta) Path

func (route *HttpRouteMeta) Path() string

func (*HttpRouteMeta) String

func (route *HttpRouteMeta) String() string

type HttpTransport

type HttpTransport struct {
	ServiceMeta

	Port int

	// for modifying http.Server
	ServerModifiers []ServerModifier

	// Middlewares
	// can use https://github.com/gorilla/handlers
	Middlewares []HttpMiddleware

	// validator mgr for parameter validating
	ValidatorMgr validator.ValidatorMgr
	// transformer mgr for parameter transforming
	TransformerMgr transformers.TransformerMgr

	// Logger
	Logger *logrus.Entry

	CertFile string
	KeyFile  string
	// contains filtered or unexported fields
}

func NewHttpTransport

func NewHttpTransport(serverModifiers ...ServerModifier) *HttpTransport

func (*HttpTransport) Serve

func (t *HttpTransport) Serve(router *courier.Router) error

func (*HttpTransport) ServeHTTP

func (t *HttpTransport) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*HttpTransport) SetDefaults

func (t *HttpTransport) SetDefaults()

type MethodDescriber

type MethodDescriber interface {
	Method() string
}

type PathDescriber

type PathDescriber interface {
	Path() string
}

type PathnamePattern

type PathnamePattern struct {
	// contains filtered or unexported fields
}

func NewPathnamePattern

func NewPathnamePattern(p string) *PathnamePattern

func (*PathnamePattern) Parse

func (pattern *PathnamePattern) Parse(pathname string) (params httprouter.Params, err error)

func (*PathnamePattern) String

func (pattern *PathnamePattern) String() string

func (*PathnamePattern) Stringify

func (pattern *PathnamePattern) Stringify(params httprouter.Params) string

type PostValidator

type PostValidator interface {
	PostValidate(badRequest *BadRequest)
}

type RequestInfo

type RequestInfo struct {
	Request *http.Request
	// contains filtered or unexported fields
}

func NewRequestInfo

func NewRequestInfo(r *http.Request) *RequestInfo

func (*RequestInfo) Body

func (info *RequestInfo) Body() io.Reader

func (*RequestInfo) CookieValues

func (info *RequestInfo) CookieValues(name string) []string

func (*RequestInfo) HeaderValues

func (info *RequestInfo) HeaderValues(name string) []string

func (*RequestInfo) Param

func (info *RequestInfo) Param(name string) string

func (*RequestInfo) QueryValues

func (info *RequestInfo) QueryValues(name string) []string

func (*RequestInfo) Value

func (info *RequestInfo) Value(in string, name string) string

func (*RequestInfo) Values

func (info *RequestInfo) Values(in string, name string) []string

type RequestParameter

type RequestParameter struct {
	Name string
	In   string
	transformers.CommonTransformOption
	Transformer transformers.Transformer
	Validator   validator.Validator
}

func NewRequestParameter

func NewRequestParameter(name string, in string) *RequestParameter

type RequestTransformer

type RequestTransformer struct {
	Type       reflect.Type
	Parameters map[string]*RequestParameter
}

func (*RequestTransformer) DecodeFrom added in v1.10.0

func (t *RequestTransformer) DecodeFrom(info *RequestInfo, meta *courier.OperatorMeta, v interface{}) error

func (*RequestTransformer) NewRequest

func (t *RequestTransformer) NewRequest(method string, rawUrl string, v interface{}) (*http.Request, error)

type RequestTransformerMgr

type RequestTransformerMgr struct {
	validator.ValidatorMgr
	transformers.TransformerMgr
	// contains filtered or unexported fields
}

func NewRequestTransformerMgr

func NewRequestTransformerMgr(
	transformerMgr transformers.TransformerMgr,
	validatorMgr validator.ValidatorMgr,
) *RequestTransformerMgr

func (*RequestTransformerMgr) NewRequest

func (mgr *RequestTransformerMgr) NewRequest(method string, rawUrl string, v interface{}) (*http.Request, error)

func (*RequestTransformerMgr) NewRequestTransformer

func (mgr *RequestTransformerMgr) NewRequestTransformer(ctx context.Context, typ reflect.Type) (*RequestTransformer, error)

func (*RequestTransformerMgr) SetDefaults

func (mgr *RequestTransformerMgr) SetDefaults()

type ServerModifier

type ServerModifier func(server *http.Server) error

type ServiceMeta

type ServiceMeta struct {
	Name    string
	Version string
}

func ServerMetaFromContext

func ServerMetaFromContext(ctx context.Context) ServiceMeta

func (*ServiceMeta) SetDefaults

func (s *ServiceMeta) SetDefaults()

func (ServiceMeta) String

func (s ServiceMeta) String() string

type ServiceMetaHook

type ServiceMetaHook struct {
	ServiceMeta
}

func (*ServiceMetaHook) Fire

func (s *ServiceMetaHook) Fire(entry *logrus.Entry) error

func (ServiceMetaHook) Levels

func (ServiceMetaHook) Levels() []logrus.Level

Jump to

Keyboard shortcuts

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