http

package
v2.1.0 Latest Latest
Warning

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

Go to latest
Published: Apr 23, 2021 License: MIT Imports: 38 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PluginName declares plugin name.
	PluginName = "http"

	// RR_HTTP env variable key (internal) if the HTTP presents
	RR_MODE = "RR_MODE" //nolint:golint,stylecheck

	// HTTPS_SCHEME
	HTTPS_SCHEME = "https" //nolint:golint,stylecheck
)
View Source
const (
	// UploadErrorOK - no error, the file uploaded with success.
	UploadErrorOK = 0

	// UploadErrorNoFile - no file was uploaded.
	UploadErrorNoFile = 4

	// UploadErrorNoTmpDir - missing a temporary folder.
	UploadErrorNoTmpDir = 6

	// UploadErrorCantWrite - failed to write file to disk.
	UploadErrorCantWrite = 7

	// UploadErrorExtension - forbidden file extension.
	UploadErrorExtension = 8
)
View Source
const MB uint64 = 1024 * 1024

MB is 1024 bytes

View Source
const MaxLevel = 127

MaxLevel defines maximum tree depth for incoming request data and files.

Variables

View Source
var TrailerHeaderKey = http.CanonicalHeaderKey("trailer")

TrailerHeaderKey http header key

Functions

func FetchIndexes

func FetchIndexes(s string) []string

FetchIndexes parses input name and splits it into separate indexes list.

Types

type ErrorEvent

type ErrorEvent struct {
	// Request contains client request, must not be stored.
	Request *http.Request

	// Error - associated error, if any.
	Error error
	// contains filtered or unexported fields
}

ErrorEvent represents singular http error event.

func (*ErrorEvent) Elapsed

func (e *ErrorEvent) Elapsed() time.Duration

Elapsed returns duration of the invocation.

type FileUpload

type FileUpload struct {
	// ID contains filename specified by the client.
	Name string `json:"name"`

	// Mime contains mime-type provided by the client.
	Mime string `json:"mime"`

	// Size of the uploaded file.
	Size int64 `json:"size"`

	// Error indicates file upload error (if any). See http://php.net/manual/en/features.file-upload.errors.php
	Error int `json:"error"`

	// TempFilename points to temporary file location.
	TempFilename string `json:"tmpName"`
	// contains filtered or unexported fields
}

FileUpload represents singular file NewUpload.

func NewUpload

func NewUpload(f *multipart.FileHeader) *FileUpload

NewUpload wraps net/http upload into PRS-7 compatible structure.

func (*FileUpload) Open

func (f *FileUpload) Open(cfg config.Uploads) (err error)

Open moves file content into temporary file available for PHP. NOTE: There is 2 deferred functions, and in case of getting 2 errors from both functions error from close of temp file would be overwritten by error from the main file STACK DEFER FILE CLOSE (2) DEFER TMP CLOSE (1)

type Handler

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

Handler serves http connections to underlying PHP application using PSR-7 protocol. Context will include request headers, parsed files and query, payload will include parsed form dataTree (if any).

func NewHandler

func NewHandler(maxReqSize uint64, uploads config.Uploads, trusted config.Cidrs, pool pool.Pool) (*Handler, error)

NewHandler return handle interface implementation

func (*Handler) AddListener

func (h *Handler) AddListener(l events.Listener)

AddListener attaches handler event controller.

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

mdwr serve using PSR-7 requests passed to underlying application. Attempts to serve static files first if enabled.

type Middleware

type Middleware interface {
	Middleware(f http.Handler) http.HandlerFunc
}

Middleware interface

type Plugin

type Plugin struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

Plugin manages pool, http servers. The main http plugin structure

func (*Plugin) AddMiddleware

func (s *Plugin) AddMiddleware(name endure.Named, m Middleware)

AddMiddleware is base requirement for the middleware (name and Middleware)

func (*Plugin) Collects

func (s *Plugin) Collects() []interface{}

Collects collecting http middlewares

func (*Plugin) Init

func (s *Plugin) Init(cfg config.Configurer, rrLogger logger.Logger, server server.Server) error

Init must return configure svc and return true if svc hasStatus enabled. Must return error in case of misconfiguration. Services must not be used without proper configuration pushed first.

func (*Plugin) Name

func (s *Plugin) Name() string

Name returns endure.Named interface implementation

func (*Plugin) Ready added in v2.0.4

func (s *Plugin) Ready() status.Status

Ready return readiness status of the particular plugin

func (*Plugin) Reset

func (s *Plugin) Reset() error

Reset destroys the old pool and replaces it with new one, waiting for old pool to die

func (*Plugin) Serve

func (s *Plugin) Serve() chan error

Serve serves the svc.

func (*Plugin) ServeHTTP

func (s *Plugin) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP handles connection using set of middleware and pool PSR-7 server.

func (*Plugin) Status

func (s *Plugin) Status() status.Status

Status return status of the particular plugin

func (*Plugin) Stop

func (s *Plugin) Stop() error

Stop stops the http.

func (*Plugin) Workers

func (s *Plugin) Workers() []process.State

Workers returns slice with the process states for the workers

type Request

type Request struct {
	// RemoteAddr contains ip address of client, make sure to check X-Real-Ip and X-Forwarded-For for real client address.
	RemoteAddr string `json:"remoteAddr"`

	// Protocol includes HTTP protocol version.
	Protocol string `json:"protocol"`

	// Method contains name of HTTP method used for the request.
	Method string `json:"method"`

	// URI contains full request URI with scheme and query.
	URI string `json:"uri"`

	// Header contains list of request headers.
	Header http.Header `json:"headers"`

	// Cookies contains list of request cookies.
	Cookies map[string]string `json:"cookies"`

	// RawQuery contains non parsed query string (to be parsed on php end).
	RawQuery string `json:"rawQuery"`

	// Parsed indicates that request body has been parsed on RR end.
	Parsed bool `json:"parsed"`

	// Uploads contains list of uploaded files, their names, sized and associations with temporary files.
	Uploads *Uploads `json:"uploads"`

	// Attributes can be set by chained mdwr to safely pass value from Golang to PHP. See: GetAttribute, SetAttribute functions.
	Attributes map[string]interface{} `json:"attributes"`
	// contains filtered or unexported fields
}

Request maps net/http requests to PSR7 compatible structure and managed state of temporary uploaded files.

func NewRequest

func NewRequest(r *http.Request, cfg config.Uploads) (*Request, error)

NewRequest creates new PSR7 compatible request using net/http request.

func (*Request) Close

func (r *Request) Close(log logger.Logger)

Close clears all temp file uploads

func (*Request) Open

func (r *Request) Open(log logger.Logger)

Open moves all uploaded files to temporary directory so it can be given to php later.

func (*Request) Payload

func (r *Request) Payload() (payload.Payload, error)

Payload request marshaled RoadRunner payload based on PSR7 data. values encode method is JSON. Make sure to open files prior to calling this method.

type Response

type Response struct {
	// Status contains response status.
	Status int `json:"status"`

	// Header contains list of response headers.
	Headers map[string][]string `json:"headers"`

	// associated Body payload.
	Body interface{}
	sync.Mutex
}

Response handles PSR7 response logic.

func NewResponse

func NewResponse(p payload.Payload) (*Response, error)

NewResponse creates new response based on given pool payload.

func (*Response) Write

func (r *Response) Write(w http.ResponseWriter) error

Write writes response headers, status and body into ResponseWriter.

type ResponseEvent

type ResponseEvent struct {
	// Request contains client request, must not be stored.
	Request *Request

	// Response contains service response.
	Response *Response
	// contains filtered or unexported fields
}

ResponseEvent represents singular http response event.

func (*ResponseEvent) Elapsed

func (e *ResponseEvent) Elapsed() time.Duration

Elapsed returns duration of the invocation.

type Uploads

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

Uploads tree manages uploaded files tree and temporary files.

func (*Uploads) Clear

func (u *Uploads) Clear(log logger.Logger)

Clear deletes all temporary files.

func (*Uploads) MarshalJSON

func (u *Uploads) MarshalJSON() ([]byte, error)

MarshalJSON marshal tree tree into JSON.

func (*Uploads) Open

func (u *Uploads) Open(log logger.Logger)

Open moves all uploaded files to temp directory, return error in case of issue with temp directory. File errors will be handled individually.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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