zoox

package module
v1.10.4 Latest Latest
Warning

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

Go to latest
Published: Jun 11, 2023 License: MIT Imports: 51 Imported by: 50

README

Zoox - A Lightweight Web Framework

PkgGoDev Build Status Go Report Card Coverage Status GitHub issues Release

Installation

To install the package, run:

go get github.com/go-zoox/zoox

Getting Started

package main

import "github.com/go-zoox/zoox"

func main() {
	app := zoox.Default()

	app.Get("/", func(ctx *zoox.Context) {
		ctx.Write([]byte("helloworld"))
	})

	app.Run(":8080")
}

License

GoZoox is released under the MIT License.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultGroupsFns = map[string]func(r *RouterGroup){}

DefaultGroupsFns ...

View Source
var DefaultMiddlewares = map[string]func(app *Application){}

DefaultMiddlewares is the default global middleware

View Source
var DefaultSecretKey = random.String(16)

DefaultSecretKey uses for session encryption and decryption.

View Source
var DefaultSessionMaxAge = 1 * 24 * time.Hour

DefaultSessionMaxAge is the default session max age.

View Source
var Version = "1.10.4"

Version is the current version of the package.

Functions

func DefaultGroup added in v1.0.16

func DefaultGroup(prefix string, fn func(r *RouterGroup))

DefaultGroup ...

func DefaultMiddleware added in v1.0.16

func DefaultMiddleware(name string, fn func(app *Application))

DefaultMiddleware ...

Types

type Application

type Application struct {
	*RouterGroup

	//
	Env    env.Env
	Logger *logger.Logger

	//
	Config ApplicationConfig
	// contains filtered or unexported fields
}

Application is the handler for all requests.

func New

func New() *Application

New is the constructor of zoox.Application.

func (*Application) Address added in v1.7.10

func (app *Application) Address() string

Address ...

func (*Application) AddressForLog added in v1.7.12

func (app *Application) AddressForLog() string

AddressForLog ...

func (*Application) Cache added in v1.0.24

func (app *Application) Cache() cache.Cache

Cache ...

func (*Application) CreateJSONRPC added in v1.2.0

func (app *Application) CreateJSONRPC(path string) jsonrpc.Server[*Context]

CreateJSONRPC creates a new CreateJSONRPC handler.

func (*Application) Cron added in v1.3.3

func (app *Application) Cron() cron.Cron

Cron ...

func (*Application) Debug added in v1.2.4

func (app *Application) Debug() debug.Debug

Debug ...

func (*Application) Fallback

func (app *Application) Fallback(h HandlerFunc)

Fallback is the default handler for all requests.

func (*Application) IsProd added in v1.1.0

func (app *Application) IsProd() bool

IsProd returns true if the app is in production mode.

func (*Application) JobQueue added in v1.9.9

func (app *Application) JobQueue() jobqueue.JobQueue

JobQueue ...

func (*Application) NotFound

func (app *Application) NotFound(h HandlerFunc)

NotFound defines the 404 handler, replaced of built in not found handler.

func (*Application) Run

func (app *Application) Run(addr ...string) (err error)

Run defines the method to start the server Example:

		IP:
	   default(http://0.0.0.0:8080): Run(":8080")
		 port(http://0.0.0.0:8888): Run(":8888")
		 host+port(http://127.0.0.1:8888): Run("127.0.0.1:8888")

   HTTP:
		 scheme://host+port(http://127.0.0.1:8888): Run("http://127.0.0.1:8888")

		Unix Domain Socket:
			/tmp/xxx.sock: Run("unix:///tmp/xxx.sock")

func (*Application) Runtime added in v1.10.3

func (app *Application) Runtime() runtime.Runtime

Runtime ...

func (*Application) ServeHTTP

func (app *Application) ServeHTTP(w http.ResponseWriter, req *http.Request)

func (*Application) SetTemplates

func (app *Application) SetTemplates(dir string, fns ...template.FuncMap)

SetTemplates set the template

type ApplicationConfig added in v1.10.0

type ApplicationConfig struct {
	Protocol string
	Host     string
	Port     int

	//
	NetworkType      string
	UnixDomainSocket string

	// TLS
	// TLS Certificate
	TLSCertFile string
	// TLS Private Key
	TLSKeyFile string
	// TLS Ca Certificate
	TLSCaCertFile string

	//
	LogLevel string `config:"log_level"`
	//
	SecretKey string `config:"secret_key"`
	//
	Session session.Config `config:"session"`
	//
	Cache cache.Config `config:"cache"`
}

ApplicationConfig defines the config of zoox.Application.

type Context

type Context struct {
	// origin objects
	Writer  ResponseWriter
	Request *http.Request
	// request
	Method string
	Path   string

	//
	App *Application
	//
	Logger *logger.Logger
	// contains filtered or unexported fields
}

Context is the request context

func (*Context) Accept added in v1.6.12

func (ctx *Context) Accept() string

Accept returns the request accept header.

func (*Context) AcceptEncoding added in v1.6.12

func (ctx *Context) AcceptEncoding() string

AcceptEncoding returns the request accept header.

func (*Context) AcceptHTML added in v1.3.12

func (ctx *Context) AcceptHTML() bool

AcceptHTML returns true if the request accepts html.

func (*Context) AcceptJSON added in v1.0.19

func (ctx *Context) AcceptJSON() bool

AcceptJSON returns true if the request accepts json.

func (*Context) AcceptLanguage added in v1.6.12

func (ctx *Context) AcceptLanguage() string

AcceptLanguage returns the request accept header.

func (*Context) AddHeader added in v1.0.6

func (ctx *Context) AddHeader(key string, value string)

AddHeader adds a header to the response.

func (*Context) Authorization added in v1.3.16

func (ctx *Context) Authorization() string

Authorization returns the authorization header for auth.

func (*Context) BasicAuth added in v1.0.1

func (ctx *Context) BasicAuth() (username string, password string, ok bool)

BasicAuth returns the user/password pair for Basic Authentication.

func (*Context) BearerToken added in v1.3.16

func (ctx *Context) BearerToken() (token string, ok bool)

BearerToken returns the token for bearer authentication.

func (*Context) BindBody added in v1.9.10

func (ctx *Context) BindBody(obj interface{}) error

BindBody binds the body into the given struct.

func (*Context) BindForm added in v1.0.1

func (ctx *Context) BindForm(obj interface{}) error

BindForm binds the query into the given struct.

func (*Context) BindHeader added in v1.0.1

func (ctx *Context) BindHeader(obj interface{}) error

BindHeader binds the header into the given struct.

func (*Context) BindJSON added in v1.0.1

func (ctx *Context) BindJSON(obj interface{}) (err error)

BindJSON binds the request body into the given struct.

func (*Context) BindParams added in v1.0.1

func (ctx *Context) BindParams(obj interface{}) error

BindParams binds the params into the given struct.

func (*Context) BindQuery added in v1.0.1

func (ctx *Context) BindQuery(obj interface{}) error

BindQuery binds the query into the given struct.

func (*Context) BindYAML added in v1.0.1

func (ctx *Context) BindYAML(obj interface{}) (err error)

BindYAML binds the request body into the given struct.

func (*Context) Bodies added in v1.0.1

func (ctx *Context) Bodies() map[string]any

Bodies gets all bodies.

func (*Context) Body added in v1.3.12

func (ctx *Context) Body() body.Body

Body returns the request body.

func (*Context) BodyBytes added in v1.8.12

func (ctx *Context) BodyBytes() ([]byte, error)

BodyBytes reads all bodies as string.

func (*Context) Cache added in v1.0.24

func (ctx *Context) Cache() cache.Cache

Cache returns the cache of the application.

func (*Context) ClientIP added in v1.8.0

func (ctx *Context) ClientIP() string

ClientIP is the client ip.

func (*Context) CloneBody added in v1.8.1

func (ctx *Context) CloneBody() (body io.ReadCloser, err error)

CloneBody clones the body of the request, should be used carefully.

func (*Context) Connection added in v1.7.14

func (ctx *Context) Connection() string

Connection return the request connection header.

func (*Context) Cookie added in v1.0.1

func (ctx *Context) Cookie() cookie.Cookie

Cookie returns the cookie of the request.

func (*Context) Cookies added in v1.0.1

func (ctx *Context) Cookies() map[string]string

Cookies gets all cookies.

func (*Context) Cron added in v1.3.3

func (ctx *Context) Cron() cron.Cron

Cron returns the cache of the application.

func (*Context) Data added in v1.2.19

func (ctx *Context) Data(status int, contentType string, data []byte)

Data writes some data into the body stream and updates the HTTP code. Align to gin framework.

func (*Context) Debug added in v1.2.4

func (ctx *Context) Debug() debug.Debug

Debug returns the debug of the app.

func (*Context) Env added in v1.0.17

func (ctx *Context) Env() env.Env

Env returns the env of the

func (*Context) Error

func (ctx *Context) Error(status int, message string)

Error writes the given error to the response. Use for system errors

  1. Internal server error
  2. Not found

func (*Context) Fail

func (ctx *Context) Fail(err error, code int, message string, status ...int)

Fail writes the given error with code-message-result specification to the response.

func (*Context) FailWithError added in v1.1.0

func (ctx *Context) FailWithError(err HTTPError)

FailWithError writes the given error with code-message-result specification to the response.

func (*Context) Fetch added in v1.3.1

func (ctx *Context) Fetch() *fetch.Fetch

Fetch is the context request utils, based on go-zoox/fetch.

func (*Context) File added in v1.0.1

func (ctx *Context) File(key string) (multipart.File, *multipart.FileHeader)

File gets the file by key.

func (*Context) Files added in v1.0.1

func (ctx *Context) Files() map[string]*multipart.FileHeader

Files gets all files.

func (*Context) Form added in v1.0.5

func (ctx *Context) Form() form.Form

Form returns the form data from POST or PUT request body.

func (*Context) Forms added in v1.0.1

func (ctx *Context) Forms() *safe.Map

Forms gets all forms.

func (*Context) Get added in v1.0.20

func (ctx *Context) Get(key string) string

Get alias for ctx.Header.

func (*Context) GetRawData added in v1.2.19

func (ctx *Context) GetRawData() ([]byte, error)

GetRawData returns stream data. Align to gin framework.

func (*Context) HTML

func (ctx *Context) HTML(status int, html string)

HTML renders the given template with the given data and writes the result

func (*Context) Header added in v1.0.1

func (ctx *Context) Header() http.Header

Header gets the header value by key.

func (*Context) Headers added in v1.0.1

func (ctx *Context) Headers() *safe.Map

Headers gets all headers.

func (*Context) Host added in v1.0.4

func (ctx *Context) Host() string

Host gets the host from HTTP Header. format: `host:port`

func (*Context) Hostname added in v1.5.7

func (ctx *Context) Hostname() string

Hostname gets the hostname from HTTP Header. format: `hostname`

func (*Context) IP added in v1.0.4

func (ctx *Context) IP() string

IP gets the ip from X-Forwarded-For or X-Real-IP or RemoteIP. RemoteIP parses the IP from Request.RemoteAddr, normializes and returns the IP (without the port).

func (*Context) IsConnectionUpgrade added in v1.7.14

func (ctx *Context) IsConnectionUpgrade() bool

IsConnectionUpgrade checks if the connection upgrade.

func (*Context) JSON

func (ctx *Context) JSON(status int, obj interface{})

JSON serializes the given struct as JSON into the response body.

func (*Context) JobQueue added in v1.9.9

func (ctx *Context) JobQueue() jobqueue.JobQueue

JobQueue returns the queue of the application.

func (*Context) Jwt added in v1.6.16

func (ctx *Context) Jwt() jwt.Jwt

Jwt returns the jwt of the request.

func (*Context) Next

func (ctx *Context) Next()

Next runs the next handler in the middleware stack

func (*Context) Origin added in v1.0.20

func (ctx *Context) Origin() string

Origin returns the origin of the request.

func (*Context) Param

func (ctx *Context) Param() param.Param

Param returns the named URL parameter value if it exists.

func (*Context) Params

func (ctx *Context) Params() *safe.Map

Params gets all params.

func (*Context) Protocol added in v1.3.16

func (ctx *Context) Protocol() string

Protocol returns the protocol, usally http or https

func (*Context) Proxy added in v1.8.0

func (ctx *Context) Proxy(target string, cfg *proxy.SingleTargetConfig)

Proxy customize the request to proxy the backend services.

func (*Context) Queries added in v1.0.1

func (ctx *Context) Queries() *safe.Map

Queries gets all queries.

func (*Context) Query

func (ctx *Context) Query() query.Query

Query returns the query string parameter with the given name.

func (*Context) Redirect

func (ctx *Context) Redirect(url string, status ...int)

Redirect redirects the request to the given URL.

func (*Context) Referrer added in v1.8.15

func (ctx *Context) Referrer() string

Referrer returns the referrer of the request.

func (*Context) Render

func (ctx *Context) Render(status int, name string, data interface{})

Render renders a template with data and writes the result to the response.

func (*Context) RequestID added in v1.1.2

func (ctx *Context) RequestID() string

RequestID returns the request id of the request.

func (*Context) SSE added in v1.9.12

func (ctx *Context) SSE() sse.SSE

SSE sets the response header for server-sent events.

func (*Context) SaveFile added in v1.0.1

func (ctx *Context) SaveFile(key, path string) error

SaveFile saves the file to the given path.

func (*Context) Session added in v1.0.14

func (ctx *Context) Session() session.Session

Session returns the session of the request.

func (*Context) Set added in v1.0.5

func (ctx *Context) Set(key string, value string)

Set alias for ctx.SetHeader.

func (*Context) SetHeader

func (ctx *Context) SetHeader(key string, value string)

SetHeader sets a header in the response.

func (*Context) State added in v1.0.6

func (ctx *Context) State() state.State

State returns the state of the

func (*Context) Status

func (ctx *Context) Status(status int)

Status sets the HTTP response status code.

func (*Context) StatusCode

func (ctx *Context) StatusCode() int

StatusCode returns the HTTP response status code.

func (*Context) Stream added in v1.0.1

func (ctx *Context) Stream() io.ReadCloser

Stream get the body stream.

func (*Context) String

func (ctx *Context) String(status int, format string, values ...interface{})

String writes the given string to the response.

func (*Context) Success

func (ctx *Context) Success(result interface{})

Success writes the given data with code-message-result specification to the response.

func (*Context) Template added in v1.6.7

func (ctx *Context) Template(status int, name string, data interface{})

Template renders the given template with the given data and writes the result

func (*Context) URL added in v1.0.4

func (ctx *Context) URL() string

URL is http.Request.RequestURI.

func (*Context) Upgrade added in v1.8.15

func (ctx *Context) Upgrade() string

Upgrade return the request upgrade header.

func (*Context) User added in v1.1.0

func (ctx *Context) User() user.User

User returns the user of the

func (*Context) UserAgent added in v1.8.15

func (ctx *Context) UserAgent() string

UserAgent return the request user-agent header.

func (*Context) Write

func (ctx *Context) Write(b []byte)

Write writes the data to the connection.

func (*Context) XForwardedFor added in v1.8.15

func (ctx *Context) XForwardedFor() string

XForwardedFor return the request x-forwarded-for header.

func (*Context) XForwardedHost added in v1.8.15

func (ctx *Context) XForwardedHost() string

XForwardedHost return the request x-forwarded-host header.

func (*Context) XForwardedPort added in v1.8.15

func (ctx *Context) XForwardedPort() string

XForwardedPort return the request x-forwarded-port header.

func (*Context) XForwardedProto added in v1.8.15

func (ctx *Context) XForwardedProto() string

XForwardedProto return the request x-forwarded-proto header.

func (*Context) XRealIP added in v1.8.15

func (ctx *Context) XRealIP() string

XRealIP return the request x-real-ip header.

type GroupFunc added in v1.8.2

type GroupFunc func(group *RouterGroup)

GroupFunc defines the group handler used by zoox

type H

type H map[string]interface{}

H is a shortcut for map[string]interface{}

type HTTPError added in v1.1.0

type HTTPError interface {
	Status() int
	Code() int
	Message() string
	Error() string
	Raw() error
}

HTTPError is a custom error type for HTTP errors.

type HandlerFunc

type HandlerFunc func(ctx *Context)

HandlerFunc defines the request handler used by zoox

func NotFound

func NotFound() HandlerFunc

NotFound returns a HandlerFunc that replies with a 404 not found

func WrapH

func WrapH(handler http.Handler) HandlerFunc

WrapH wraps a http.Handler to a HandlerFunc

type Middleware added in v1.0.20

type Middleware = HandlerFunc

Middleware defines the signature of the middleware function.

type ResponseWriter added in v1.0.12

type ResponseWriter interface {
	http.ResponseWriter
	http.Hijacker
	http.CloseNotifier
	http.Flusher

	// Status returns the HTTP response status code of the current request.
	Status() int

	// Size returns the number of bytes already written into the response http body.
	// See Written()
	Size() int

	// WriteString writes the string into the response body.
	WriteString(string) (int, error)

	// Written returns true if the response body was already written.
	Written() bool

	// Pusher get the http.Pusher for server push
	Pusher() http.Pusher

	// WriteHeaderNow forces to write the http header (status code + headers).
	WriteHeaderNow()
}

ResponseWriter ...

type RouterGroup

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

RouterGroup is a group of routes.

func (*RouterGroup) Any added in v1.0.3

func (g *RouterGroup) Any(path string, handler ...HandlerFunc) *RouterGroup

Any defines all request methods (anyMethods)

func (*RouterGroup) Connect added in v1.5.5

func (g *RouterGroup) Connect(path string, handler ...HandlerFunc) *RouterGroup

Connect defines the method to add CONNECT request

func (*RouterGroup) Delete

func (g *RouterGroup) Delete(path string, handler ...HandlerFunc) *RouterGroup

Delete defines the method to add DELETE request

func (*RouterGroup) Get

func (g *RouterGroup) Get(path string, handler ...HandlerFunc) *RouterGroup

Get defines the method to add GET request

func (*RouterGroup) Group

func (g *RouterGroup) Group(prefix string, cb ...GroupFunc) *RouterGroup

Group defines a new router group

func (*RouterGroup) Head

func (g *RouterGroup) Head(path string, handler ...HandlerFunc) *RouterGroup

Head defines the method to add HEAD request

func (*RouterGroup) Options added in v1.0.3

func (g *RouterGroup) Options(path string, handler ...HandlerFunc) *RouterGroup

Options defines the method to add OPTIONS request

func (*RouterGroup) Patch

func (g *RouterGroup) Patch(path string, handler ...HandlerFunc) *RouterGroup

Patch defines the method to add PATCH request

func (*RouterGroup) Post

func (g *RouterGroup) Post(path string, handler ...HandlerFunc) *RouterGroup

Post defines the method to add POST request

func (*RouterGroup) Proxy added in v1.8.0

func (g *RouterGroup) Proxy(path, target string, options ...func(cfg *proxy.SingleTargetConfig)) *RouterGroup

Proxy defines the method to proxy the request to the backend service.

Example:

app.Proxy("/api/v1/tasks/(.*)", "http://zmicro.services.tasks:8080", &proxy.SingleTargetConfig{
	Rewrites: rewriter.Rewriters{
    {From: "/api/v1/tasks/(.*)", To: "/$1"},
  },
})

app.Proxy("*", "https://httpbin.org")

func (*RouterGroup) Put

func (g *RouterGroup) Put(path string, handler ...HandlerFunc) *RouterGroup

Put defines the method to add PUT request

func (*RouterGroup) Static

func (g *RouterGroup) Static(relativePath string, root string, options ...StaticOptions)

Static defines the method to serve static files

func (*RouterGroup) StaticFS added in v1.0.15

func (g *RouterGroup) StaticFS(relativePath string, fs http.FileSystem)

StaticFS defines the method to serve static files

func (*RouterGroup) Use

func (g *RouterGroup) Use(middlewares ...HandlerFunc)

Use adds a middleware to the group

func (*RouterGroup) WebSocket added in v1.0.28

func (g *RouterGroup) WebSocket(path string, handler WsHandlerFunc) *RouterGroup

WebSocket defines the method to add websocket route

func (*RouterGroup) WebSocketGorilla added in v1.6.7

func (g *RouterGroup) WebSocketGorilla(path string, handler WsGorillaHandlerFunc) *RouterGroup

WebSocketGorilla defines the method to add websocket route

type StaticOptions

type StaticOptions struct {
	Gzip         bool
	Md5          bool
	CacheControl string
	MaxAge       time.Duration
	Index        bool
	Suffix       string
}

StaticOptions is the options for static method

type WsGorillaHandlerFunc added in v1.6.7

type WsGorillaHandlerFunc func(ctx *Context, client *websocket.GorillaConn)

WsGorillaHandlerFunc defines the websocket handler used by zoox

type WsHandlerFunc added in v1.0.28

type WsHandlerFunc func(ctx *Context, client *websocket.Client)

WsHandlerFunc defines the websocket handler used by zoox

Jump to

Keyboard shortcuts

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