ghttp

package
v1.11.3 Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2025 License: Apache-2.0 Imports: 44 Imported by: 8

Documentation

Index

Constants

View Source
const (
	GET     string = "GET"
	POST    string = "POST"
	PUT     string = "PUT"
	DELETE  string = "DELETE"
	OPTIONS string = "OPTIONS"
	PATCH   string = "PATCH"
	TRACE   string = "TRACE"
	CONNECT string = "CONNECT"
)
View Source
const (
	ProtoHTTP1_1 string = "HTTP/1.1"
	ProtoHTTP2   string = "HTTP/2"
	ProtoHTTP3   string = "HTTP/3"
)
View Source
const ConnChCtx = "conn_ch"
View Source
const ConnCtx = "conn"
View Source
const LogHandlerDefaultMaxBodySize = 204800
View Source
const ParamMaxBodyBytes = channel.ParamKey("max_body_bytes")

var ParamMaxMultiPartMemory channel.ParamKey = "max_multi_part_memory"

Variables

View Source
var AcceptanceInterrupt = &DefaultAcceptanceInterrupt{}
View Source
var DefaultSessionType = memory.SessionTypeMemory
View Source
var NotImplemented = erresponse.NotImplemented
View Source
var ParamAcceptWaitCount channel.ParamKey = "accept_wait_count"
View Source
var ParamIdleTimeout channel.ParamKey = "idle_timeout"
View Source
var ParamMaxHeaderBytes channel.ParamKey = "max_header_bytes"
View Source
var ParamReadHeaderTimeout channel.ParamKey = "read_header_timeout"
View Source
var ParamReadTimeout channel.ParamKey = "read_timeout"
View Source
var ParamWriteTimeout channel.ParamKey = "write_timeout"
View Source
var SessionDomain = ""
View Source
var SessionExpireTime = 86400
View Source
var SessionHttpOnly = false
View Source
var SessionKey = "DEFAULT"
View Source
var SessionSecure = false

Functions

func GetSession

func GetSession(req *Request) httpsession.Session

func NewEndPoint

func NewEndPoint(name string, task HandlerTask, acceptances []Acceptance) *_EndPoint

func NewGroup

func NewGroup(name string, acceptances []Acceptance) *_RouteGroup

func ParseRange added in v1.11.2

func ParseRange(rangeHeader string, contentSize int64) (int64, int64, bool)

ParseRange parses HTTP Range header and returns start, end, valid

func RegisterSessionProvider added in v1.6.1

func RegisterSessionProvider(provider httpsession.SessionProvider)

func SessionProvider added in v1.6.2

func SessionProvider() httpsession.SessionProvider

Types

type Acceptance

type Acceptance interface {
	Do(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) error
	SkipMethodOptions() bool
}

type AutoRangeSupporter added in v1.11.2

type AutoRangeSupporter interface {
	EnableAutoRangeSupport() bool
}

AutoRangeSupporter enables automatic HTTP Range request handling by the dispatcher

type Channel

type Channel struct {
	channel.DefaultNetChannel
}

func (*Channel) UnsafeIsAutoRead

func (c *Channel) UnsafeIsAutoRead() bool

func (*Channel) UnsafeRead

func (c *Channel) UnsafeRead() (any, error)

func (*Channel) UnsafeWrite

func (c *Channel) UnsafeWrite(obj any) error

type DefaultAcceptanceInterrupt

type DefaultAcceptanceInterrupt struct {
}

func (DefaultAcceptanceInterrupt) Error

type DefaultHTTPHandlerTask

type DefaultHTTPHandlerTask struct {
	DefaultHandlerTask
}

func (*DefaultHTTPHandlerTask) After

func (h *DefaultHTTPHandlerTask) After(req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Before

func (h *DefaultHTTPHandlerTask) Before(req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) CORSHelper

func (h *DefaultHTTPHandlerTask) CORSHelper(req *Request, resp *Response, params map[string]any)

func (*DefaultHTTPHandlerTask) Connect

func (h *DefaultHTTPHandlerTask) Connect(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Create

func (h *DefaultHTTPHandlerTask) Create(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Delete

func (h *DefaultHTTPHandlerTask) Delete(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) EnableAutoRangeSupport added in v1.11.2

func (h *DefaultHTTPHandlerTask) EnableAutoRangeSupport() bool

func (*DefaultHTTPHandlerTask) ErrorCaught

func (h *DefaultHTTPHandlerTask) ErrorCaught(req *Request, resp *Response, params map[string]any, err ErrorResponse) error

func (*DefaultHTTPHandlerTask) Get

func (*DefaultHTTPHandlerTask) Index

func (h *DefaultHTTPHandlerTask) Index(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Options

func (h *DefaultHTTPHandlerTask) Options(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Patch

func (h *DefaultHTTPHandlerTask) Patch(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Post

func (h *DefaultHTTPHandlerTask) Post(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) PreCheck

func (h *DefaultHTTPHandlerTask) PreCheck(req *Request, resp *Response, params map[string]any) ErrorResponse

func (*DefaultHTTPHandlerTask) Put

func (*DefaultHTTPHandlerTask) SSEMode

func (h *DefaultHTTPHandlerTask) SSEMode(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) SSEOperation

func (*DefaultHTTPHandlerTask) SkipPreCheckForOptions added in v1.11.3

func (h *DefaultHTTPHandlerTask) SkipPreCheckForOptions() bool

func (*DefaultHTTPHandlerTask) ThrowErrorResponse

func (h *DefaultHTTPHandlerTask) ThrowErrorResponse(err ErrorResponse)

func (*DefaultHTTPHandlerTask) Trace

func (h *DefaultHTTPHandlerTask) Trace(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

type DefaultHandlerTask

type DefaultHandlerTask struct {
}

func NewDefaultHandlerTask

func NewDefaultHandlerTask() *DefaultHandlerTask

func (*DefaultHandlerTask) GetID

func (h *DefaultHandlerTask) GetID(name string, params map[string]any) string

func (*DefaultHandlerTask) GetNodeName

func (h *DefaultHandlerTask) GetNodeName(params map[string]any) string

func (*DefaultHandlerTask) IsIndex

func (h *DefaultHandlerTask) IsIndex(params map[string]any) bool

func (*DefaultHandlerTask) LogExtend

func (h *DefaultHandlerTask) LogExtend(key string, value any, params map[string]any)

func (*DefaultHandlerTask) Register added in v1.6.4

func (h *DefaultHandlerTask) Register()

type DefaultRoute

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

func NewRoute

func NewRoute() *DefaultRoute

func (*DefaultRoute) AddEndPoint

func (r *DefaultRoute) AddEndPoint(point *_EndPoint) *DefaultRoute

func (*DefaultRoute) AddGroup

func (r *DefaultRoute) AddGroup(group *_RouteGroup) *DefaultRoute

func (*DefaultRoute) AddRecursivePoint

func (r *DefaultRoute) AddRecursivePoint(point *_EndPoint) *DefaultRoute

func (*DefaultRoute) RouteNode

func (r *DefaultRoute) RouteNode(path string) (node RouteNode, nodeParams map[string]any, isLast bool)

func (*DefaultRoute) SetRoot

func (r *DefaultRoute) SetRoot(point *_EndPoint) *DefaultRoute

type DefaultSSEOperation

type DefaultSSEOperation struct {
}

func (*DefaultSSEOperation) WriteHeader

func (h *DefaultSSEOperation) WriteHeader(ctx channel.HandlerContext, header http.Header, params map[string]any) channel.Future

func (*DefaultSSEOperation) WriteMessage

func (h *DefaultSSEOperation) WriteMessage(ctx channel.HandlerContext, message SSEMessage, params map[string]any) channel.Future

func (*DefaultSSEOperation) WriteMessages

func (h *DefaultSSEOperation) WriteMessages(ctx channel.HandlerContext, messages []SSEMessage, params map[string]any) channel.Future

type DispatchAcceptance

type DispatchAcceptance struct {
}

func (*DispatchAcceptance) Do

func (a *DispatchAcceptance) Do(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) error

func (*DispatchAcceptance) GetID

func (a *DispatchAcceptance) GetID(name string, params map[string]any) string

func (*DispatchAcceptance) GetNodeName

func (a *DispatchAcceptance) GetNodeName(params map[string]any) string

func (*DispatchAcceptance) IsIndex

func (a *DispatchAcceptance) IsIndex(params map[string]any) string

func (*DispatchAcceptance) LogExtend

func (a *DispatchAcceptance) LogExtend(key string, value any, params map[string]any)

func (*DispatchAcceptance) SkipMethodOptions

func (a *DispatchAcceptance) SkipMethodOptions() bool

SkipMethodOptions helpful for CORS xhr preflight

type DispatchHandler

type DispatchHandler struct {
	channel.DefaultHandler

	DefaultStatusCode     int
	DefaultStatusResponse map[int]func(req *Request, resp *Response, params map[string]any)
	// contains filtered or unexported fields
}

func NewDispatchHandler

func NewDispatchHandler(route Route) *DispatchHandler

func (*DispatchHandler) ErrorCaught

func (h *DispatchHandler) ErrorCaught(ctx channel.HandlerContext, err error)

func (*DispatchHandler) Read

func (h *DispatchHandler) Read(ctx channel.HandlerContext, obj any)

type ErrorResponse

type ErrorResponse interface {
	erresponse.ErrorResponse
}

type ErrorResponseImpl

type ErrorResponseImpl struct {
	erresponse.ErrorResponse
	Caught *kkpanic.CaughtImpl `json:"caught,omitempty"`
}

func (*ErrorResponseImpl) String

func (e *ErrorResponseImpl) String() string

type GZipHandler

type GZipHandler struct {
	channel.DefaultHandler
	CompressThreshold int
}

func (*GZipHandler) Added

func (h *GZipHandler) Added(ctx channel.HandlerContext)

func (*GZipHandler) Write

func (h *GZipHandler) Write(ctx channel.HandlerContext, obj any, future channel.Future)

type HandlerTask

type HandlerTask interface {
	Register()
	GetNodeName(params map[string]any) string
	GetID(name string, params map[string]any) string
}

type HttpHandlerTask

type HttpHandlerTask interface {
	HttpTask
	CORSHelper(req *Request, resp *Response, params map[string]any)
	PreCheck(req *Request, resp *Response, params map[string]any) ErrorResponse
	Before(req *Request, resp *Response, params map[string]any) ErrorResponse
	After(req *Request, resp *Response, params map[string]any) ErrorResponse
	ErrorCaught(req *Request, resp *Response, params map[string]any, err ErrorResponse) error
}

type HttpTask

type HttpTask interface {
	Index(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Get(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Create(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Post(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Put(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Delete(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Options(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Patch(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Trace(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
	Connect(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse
}

type LanguageValue

type LanguageValue struct {
	Value  language.Tag
	Factor float32
}

type LogHandler

type LogHandler struct {
	channel.DefaultHandler

	MaxBodySize int
	FilterFunc  func(req *Request, resp *Response, params map[string]any) bool
	// contains filtered or unexported fields
}

func NewLogHandler

func NewLogHandler(printBody bool) *LogHandler

func (*LogHandler) Read

func (h *LogHandler) Read(ctx channel.HandlerContext, obj any)

func (*LogHandler) Write

func (h *LogHandler) Write(ctx channel.HandlerContext, obj any, future channel.Future)

type LogStruct

type LogStruct struct {
	ChannelID       string             `json:"cid,omitempty"`
	TrackID         string             `json:"tid,omitempty"`
	Method          string             `json:"method,omitempty"`
	URI             string             `json:"uri,omitempty"`
	StatusCode      int                `json:"status_code,omitempty"`
	RemoteAddr      string             `json:"remote_addr,omitempty"`
	RemoteAddrs     string             `json:"remote_addrs,omitempty"`
	Request         *RequestLogStruct  `json:"request,omitempty"`
	Response        *ResponseLogStruct `json:"response,omitempty"`
	AcceptTime      int64              `json:"accept_time,omitempty"`
	HLocateTime     int64              `json:"h_locate_time,omitempty"`
	HAcceptanceTime int64              `json:"h_acceptance_time,omitempty"`
	HandlerTime     int64              `json:"handler_time,omitempty"`
	HErrorTime      int64              `json:"h_error_time,omitempty"`
	CompressTime    int64              `json:"compress_time,omitempty"`
	ProcessTime     int64              `json:"process_time,omitempty"`
	Extend          any                `json:"extend,omitempty"`
}

type MockHTTPServerChannel added in v1.9.0

type MockHTTPServerChannel struct {
	channel.MockServerChannel
}

MockHTTPServerChannel is a mock implementation for HTTP server channels

func NewMockHTTPServerChannel added in v1.9.0

func NewMockHTTPServerChannel() *MockHTTPServerChannel

NewMockHTTPServerChannel creates a new MockHTTPServerChannel instance

func (*MockHTTPServerChannel) ServeHTTP added in v1.9.0

ServeHTTP implements the http.Handler interface for testing

type MockHttpHandlerTask added in v1.9.0

type MockHttpHandlerTask struct {
	mock.Mock
}

MockHttpHandlerTask is a mock implementation of HttpHandlerTask interface It provides complete testify/mock integration for testing HTTP handler behaviors

func NewMockHttpHandlerTask added in v1.9.0

func NewMockHttpHandlerTask() *MockHttpHandlerTask

NewMockHttpHandlerTask creates a new MockHttpHandlerTask instance

func (*MockHttpHandlerTask) After added in v1.9.0

func (m *MockHttpHandlerTask) After(req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Before added in v1.9.0

func (m *MockHttpHandlerTask) Before(req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) CORSHelper added in v1.9.0

func (m *MockHttpHandlerTask) CORSHelper(req *Request, resp *Response, params map[string]any)

HttpHandlerTask specific methods implementation

func (*MockHttpHandlerTask) Connect added in v1.9.0

func (m *MockHttpHandlerTask) Connect(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Create added in v1.9.0

func (m *MockHttpHandlerTask) Create(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Delete added in v1.9.0

func (m *MockHttpHandlerTask) Delete(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) ErrorCaught added in v1.9.0

func (m *MockHttpHandlerTask) ErrorCaught(req *Request, resp *Response, params map[string]any, err ErrorResponse) error

func (*MockHttpHandlerTask) Get added in v1.9.0

func (m *MockHttpHandlerTask) Get(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) GetID added in v1.9.0

func (m *MockHttpHandlerTask) GetID(name string, params map[string]any) string

func (*MockHttpHandlerTask) GetNodeName added in v1.9.0

func (m *MockHttpHandlerTask) GetNodeName(params map[string]any) string

func (*MockHttpHandlerTask) Index added in v1.9.0

func (m *MockHttpHandlerTask) Index(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

HttpTask methods implementation

func (*MockHttpHandlerTask) Options added in v1.9.0

func (m *MockHttpHandlerTask) Options(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Patch added in v1.9.0

func (m *MockHttpHandlerTask) Patch(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Post added in v1.9.0

func (m *MockHttpHandlerTask) Post(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) PreCheck added in v1.9.0

func (m *MockHttpHandlerTask) PreCheck(req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Put added in v1.9.0

func (m *MockHttpHandlerTask) Put(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

func (*MockHttpHandlerTask) Register added in v1.9.0

func (m *MockHttpHandlerTask) Register()

HandlerTask methods implementation

func (*MockHttpHandlerTask) Trace added in v1.9.0

func (m *MockHttpHandlerTask) Trace(ctx channel.HandlerContext, req *Request, resp *Response, params map[string]any) ErrorResponse

type MockRequest added in v1.9.0

type MockRequest struct {
	mock.Mock
}

MockRequest is a mock implementation for HTTP requests

func NewMockRequest added in v1.9.0

func NewMockRequest() *MockRequest

NewMockRequest creates a new MockRequest instance

func (*MockRequest) Channel added in v1.9.0

func (m *MockRequest) Channel() *Channel

Channel returns the associated channel

func (*MockRequest) GetRequest added in v1.9.0

func (m *MockRequest) GetRequest() *http.Request

GetRequest returns the underlying HTTP request

type MockResponse added in v1.9.0

type MockResponse struct {
	mock.Mock
}

MockResponse is a mock implementation for HTTP responses

func NewMockResponse added in v1.9.0

func NewMockResponse() *MockResponse

NewMockResponse creates a new MockResponse instance

func (*MockResponse) GetHeader added in v1.9.0

func (m *MockResponse) GetHeader(key string) string

GetHeader gets a response header

func (*MockResponse) Header added in v1.9.0

func (m *MockResponse) Header() http.Header

Header returns response headers (implementing http.ResponseWriter)

func (*MockResponse) SetHeader added in v1.9.0

func (m *MockResponse) SetHeader(key, value string)

SetHeader sets a response header

func (*MockResponse) SetStatus added in v1.9.0

func (m *MockResponse) SetStatus(code int)

SetStatus sets the HTTP status code

func (*MockResponse) Status added in v1.9.0

func (m *MockResponse) Status() int

Status returns the HTTP status code

func (*MockResponse) Write added in v1.9.0

func (m *MockResponse) Write(data []byte) (int, error)

Write writes response body

func (*MockResponse) WriteHeader added in v1.9.0

func (m *MockResponse) WriteHeader(statusCode int)

WriteHeader writes response status code (implementing http.ResponseWriter)

func (*MockResponse) WriteString added in v1.9.0

func (m *MockResponse) WriteString(data string) (int, error)

WriteString writes string response body

type MockRoute added in v1.9.0

type MockRoute struct {
	mock.Mock
}

MockRoute is a mock implementation of Route interface It provides complete testify/mock integration for testing route behaviors

func NewMockRoute added in v1.9.0

func NewMockRoute() *MockRoute

NewMockRoute creates a new MockRoute instance

func (*MockRoute) RouteNode added in v1.9.0

func (m *MockRoute) RouteNode(path string) (node RouteNode, nodeParams map[string]any, isLast bool)

RouteNode returns a route node for the given path

type MockRouteNode added in v1.9.0

type MockRouteNode struct {
	mock.Mock
}

MockRouteNode is a mock implementation of RouteNode interface It provides complete testify/mock integration for testing route node behaviors

func NewMockRouteNode added in v1.9.0

func NewMockRouteNode() *MockRouteNode

NewMockRouteNode creates a new MockRouteNode instance

func (*MockRouteNode) Acceptances added in v1.9.0

func (m *MockRouteNode) Acceptances() []Acceptance

Acceptances returns the acceptances for this node

func (*MockRouteNode) AggregatedAcceptances added in v1.9.0

func (m *MockRouteNode) AggregatedAcceptances() []Acceptance

AggregatedAcceptances returns the aggregated acceptances for this node

func (*MockRouteNode) HandlerTask added in v1.9.0

func (m *MockRouteNode) HandlerTask() HandlerTask

HandlerTask returns the handler task for this node

func (*MockRouteNode) Name added in v1.9.0

func (m *MockRouteNode) Name() string

Name returns the name of this route node

func (*MockRouteNode) Parent added in v1.9.0

func (m *MockRouteNode) Parent() RouteNode

Parent returns the parent route node

func (*MockRouteNode) Resources added in v1.9.0

func (m *MockRouteNode) Resources() map[string]RouteNode

Resources returns the child resources for this node

func (*MockRouteNode) RouteType added in v1.9.0

func (m *MockRouteNode) RouteType() RouteType

RouteType returns the type of this route node

type MockSSEOperation added in v1.9.0

type MockSSEOperation struct {
	mock.Mock
}

MockSSEOperation is a mock implementation of SSEOperation interface It provides complete testify/mock integration for testing Server-Sent Events behaviors

func NewMockSSEOperation added in v1.9.0

func NewMockSSEOperation() *MockSSEOperation

NewMockSSEOperation creates a new MockSSEOperation instance

func (*MockSSEOperation) WriteHeader added in v1.9.0

func (m *MockSSEOperation) WriteHeader(ctx channel.HandlerContext, header http.Header, params map[string]any) channel.Future

WriteHeader writes HTTP headers for SSE

func (*MockSSEOperation) WriteMessage added in v1.9.0

func (m *MockSSEOperation) WriteMessage(ctx channel.HandlerContext, message SSEMessage, params map[string]any) channel.Future

WriteMessage writes a single SSE message

func (*MockSSEOperation) WriteMessages added in v1.9.0

func (m *MockSSEOperation) WriteMessages(ctx channel.HandlerContext, messages []SSEMessage, params map[string]any) channel.Future

WriteMessages writes multiple SSE messages

type ObjectLogStruct

type ObjectLogStruct struct {
	ChannelID  string `json:"cid,omitempty"`
	TrackID    string `json:"tid,omitempty"`
	State      string `json:"state,omitempty"`
	Handler    string `json:"handler,omitempty"`
	URI        string `json:"uri,omitempty"`
	Message    any    `json:"message,omitempty"`
	RemoteAddr string `json:"remote_addr,omitempty"`
}

type Pack

type Pack struct {
	Request   *Request       `json:"request"`
	Response  *Response      `json:"response"`
	RouteNode RouteNode      `json:"route_node"`
	Params    map[string]any `json:"params"`
	Writer    ResponseWriter `json:"writer"`
	// contains filtered or unexported fields
}

type PreCheckSkipOptions added in v1.11.3

type PreCheckSkipOptions interface {
	SkipPreCheckForOptions() bool
}

PreCheckSkipOptions allows skipping PreCheck for OPTIONS method

type QualityValue

type QualityValue struct {
	Value  string
	Factor float32
}

type ReadRequestLogStruct

type ReadRequestLogStruct struct {
	ChannelID   string            `json:"cid,omitempty"`
	TrackID     string            `json:"tid,omitempty"`
	RemoteAddr  string            `json:"remote_addr,omitempty"`
	RemoteAddrs string            `json:"remote_addrs,omitempty"`
	URI         string            `json:"uri,omitempty"`
	Request     *RequestLogStruct `json:"request"`
}

type Request

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

func WrapRequest

func WrapRequest(ch channel.Channel, req *ghttp.Request) *Request

func (*Request) Accept

func (r *Request) Accept() []QualityValue

func (*Request) AcceptCharset

func (r *Request) AcceptCharset() []QualityValue

func (*Request) AcceptEncoding

func (r *Request) AcceptEncoding() []QualityValue

func (*Request) AcceptLanguage

func (r *Request) AcceptLanguage() []LanguageValue

func (*Request) AddCookie

func (r *Request) AddCookie(c *ghttp.Cookie)

func (*Request) Body

func (r *Request) Body() buf.ByteBuf

func (*Request) Channel

func (r *Request) Channel() channel.Channel

func (*Request) ContentLength

func (r *Request) ContentLength() int64

func (*Request) Cookie

func (r *Request) Cookie(name string) (*ghttp.Cookie, error)

func (*Request) Cookies

func (r *Request) Cookies() []*ghttp.Cookie

func (*Request) CreatedAt

func (r *Request) CreatedAt() *time.Time

func (*Request) FormFile

func (r *Request) FormFile(key string) (multipart.File, *multipart.FileHeader, error)

func (*Request) FormValue

func (r *Request) FormValue(key string) string

func (*Request) Header

func (r *Request) Header() ghttp.Header

func (*Request) Host

func (r *Request) Host() string

func (*Request) Method

func (r *Request) Method() string

func (*Request) Origin

func (r *Request) Origin() string

func (*Request) PreferLang

func (r *Request) PreferLang() *language.Tag

func (*Request) Proto

func (r *Request) Proto() string

func (*Request) Referer

func (r *Request) Referer() string

func (*Request) RemoteAddr

func (r *Request) RemoteAddr() (ip net.IP, port string)

func (*Request) RemoteAddrs

func (r *Request) RemoteAddrs() []string

func (*Request) RemoteIP

func (r *Request) RemoteIP() (ip net.IP)

func (*Request) RenewSession

func (r *Request) RenewSession()

func (*Request) Request

func (r *Request) Request() *ghttp.Request

func (*Request) RequestURI

func (r *Request) RequestURI() string

func (*Request) Session

func (r *Request) Session() httpsession.Session

func (*Request) TE

func (r *Request) TE() []QualityValue

func (*Request) TrackID

func (r *Request) TrackID() string

func (*Request) Url

func (r *Request) Url() *url.URL

func (*Request) UserAgent

func (r *Request) UserAgent() string

type RequestLogStruct

type RequestLogStruct struct {
	URI        string         `json:"uri,omitempty"`
	Method     string         `json:"method,omitempty"`
	Headers    map[string]any `json:"headers,omitempty"`
	HOST       string         `json:"host,omitempty"`
	Body       string         `json:"body,omitempty"`
	BodyLength int            `json:"body_length,omitempty"`
}

type Response

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

func EmptyResponse

func EmptyResponse() *Response

func NewResponse

func NewResponse(request *Request) *Response

func WrapResponse

func WrapResponse(ch channel.NetChannel, response *ghttp.Response) *Response

func (*Response) AddHeader

func (r *Response) AddHeader(name string, value string) *Response

func (*Response) Body

func (r *Response) Body() buf.ByteBuf

func (*Response) Cookie

func (r *Response) Cookie(name string) *ghttp.Cookie

func (*Response) Cookies

func (r *Response) Cookies() map[string][]ghttp.Cookie

func (*Response) DelHeader

func (r *Response) DelHeader(name string) *Response

func (*Response) DoneFuture

func (r *Response) DoneFuture() channel.Future

func (*Response) GetHeader

func (r *Response) GetHeader(name string) string

func (*Response) Header

func (r *Response) Header() ghttp.Header

func (*Response) JsonResponse

func (r *Response) JsonResponse(obj any)

func (*Response) Redirect

func (r *Response) Redirect(redirectUrl string)

func (*Response) Request

func (r *Response) Request() *Request

func (*Response) ResponseError

func (r *Response) ResponseError(er ErrorResponse)

func (*Response) SetBody

func (r *Response) SetBody(buf buf.ByteBuf)

func (*Response) SetContentType

func (r *Response) SetContentType(ct string)

func (*Response) SetCookie

func (r *Response) SetCookie(cookie *ghttp.Cookie) *Response

func (*Response) SetHeader

func (r *Response) SetHeader(name string, value string) *Response

func (*Response) SetStatusCode

func (r *Response) SetStatusCode(statusCode int) *Response

func (*Response) StatusCode

func (r *Response) StatusCode() int

func (*Response) TextResponse

func (r *Response) TextResponse(buf buf.ByteBuf)

type ResponseLogStruct

type ResponseLogStruct struct {
	URI               string         `json:"uri,omitempty"`
	StatusCode        int            `json:"status_code,omitempty"`
	Headers           map[string]any `json:"headers,omitempty"`
	Body              string         `json:"body,omitempty"`
	OutBodyLength     int            `json:"out_body_length,omitempty"`
	PreCompressLength int            `json:"pre_compress_length,omitempty"`
}

type ResponseWriter

type ResponseWriter interface {
	ghttp.ResponseWriter
}

type ReturnCatch

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

type Route

type Route interface {
	RouteNode(path string) (node RouteNode, nodeParams map[string]any, isLast bool)
}

type RouteNode

type RouteNode interface {
	Parent() RouteNode
	HandlerTask() HandlerTask
	Name() string
	AggregatedAcceptances() []Acceptance
	Acceptances() []Acceptance
	Resources() map[string]RouteNode
	RouteType() RouteType
}

type RouteType

type RouteType int
const (
	RouteTypeEndPoint RouteType = iota
	RouteTypeGroup
	RouteTypeRecursiveEndPoint
	RouteTypeRootEndPoint
)

type SSEMessage

type SSEMessage struct {
	Comment string   `json:"comment"`
	Event   string   `json:"event"`
	Data    []string `json:"data"`
	Id      string   `json:"id"`
	Retry   int      `json:"retry"`
}

func (SSEMessage) Validate

func (m SSEMessage) Validate() bool

type SSEMessages

type SSEMessages []SSEMessage

type SSEOperation

type SSEOperation interface {
	WriteHeader(ctx channel.HandlerContext, header http.Header, params map[string]any) channel.Future
	WriteMessage(ctx channel.HandlerContext, message SSEMessage, params map[string]any) channel.Future
	WriteMessages(ctx channel.HandlerContext, messages []SSEMessage, params map[string]any) channel.Future
}

type ServerChannel

type ServerChannel struct {
	channel.DefaultNetServerChannel
	// contains filtered or unexported fields
}

func (*ServerChannel) IsActive

func (c *ServerChannel) IsActive() bool

func (*ServerChannel) ServeHTTP

func (c *ServerChannel) ServeHTTP(w http.ResponseWriter, r *http.Request)

func (*ServerChannel) UnsafeAccept

func (c *ServerChannel) UnsafeAccept() (channel.Channel, channel.Future)

func (*ServerChannel) UnsafeBind

func (c *ServerChannel) UnsafeBind(localAddr net.Addr) error

func (*ServerChannel) UnsafeClose

func (c *ServerChannel) UnsafeClose() error

type SimpleRoute

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

func NewSimpleRoute

func NewSimpleRoute() *SimpleRoute

func (*SimpleRoute) FindNode

func (r *SimpleRoute) FindNode(path string) RouteNode

func (*SimpleRoute) RouteNode

func (r *SimpleRoute) RouteNode(path string) (node RouteNode, parameters map[string]any, isLast bool)

func (*SimpleRoute) SetEndpoint

func (r *SimpleRoute) SetEndpoint(path string, handler HandlerTask, acceptances ...Acceptance) *SimpleRoute

func (*SimpleRoute) SetGroup

func (r *SimpleRoute) SetGroup(path string, acceptances ...Acceptance) *SimpleRoute

func (*SimpleRoute) SetRoot

func (r *SimpleRoute) SetRoot(handler HandlerTask, acceptances ...Acceptance) *SimpleRoute

func (*SimpleRoute) String

func (r *SimpleRoute) String() string

type StaticFilesHandlerTask

type StaticFilesHandlerTask struct {
	DefaultHTTPHandlerTask
	FolderPath string
	DoMinify   bool
	DoCache    bool
	// contains filtered or unexported fields
}

func NewStaticFilesHandlerTask

func NewStaticFilesHandlerTask(folderPath string) *StaticFilesHandlerTask

func (*StaticFilesHandlerTask) Get

type TaskHelper

type TaskHelper struct {
}

func (*TaskHelper) GetID

func (h *TaskHelper) GetID(name string, params map[string]any) string

func (*TaskHelper) GetNode

func (h *TaskHelper) GetNode(params map[string]any) RouteNode

func (*TaskHelper) GetNodeName

func (h *TaskHelper) GetNodeName(params map[string]any) string

func (*TaskHelper) IsIndex

func (h *TaskHelper) IsIndex(params map[string]any) bool

func (*TaskHelper) LogExtend

func (h *TaskHelper) LogExtend(key string, value any, params map[string]any)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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