webgo

package
v0.0.0-...-6bf9f54 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2014 License: BSD-3-Clause Imports: 29 Imported by: 0

Documentation

Overview

Package webgo is a lightweight webgo framework for Go.

It's ideal for writing simple, performant backend webgo services.

Example

package main

import (
	"dev.visiontek.wh/webgo"
)

func hello(val string) string { return "hello " + val }

func main() {
	webgo.Get("/(.*)", hello)
	webgo.Run("0.0.0.0:9999")
}

Getting parameters

package main

import (
	"dev.visiontek.wh/webgo"
)

func hello(ctx *webgo.Context, val string) {
	for k,v := range ctx.Params {
		println(k, v)
	}
}

func main() {
	webgo.Get("/(.*)", hello)
	webgo.Run("0.0.0.0:9999")
}

In this example, if you visit `http://localhost:9999/?a=1&b=2`, you'll see the following printed out in the terminal:

a 1
b 2

Index

Constants

This section is empty.

Variables

View Source
var Config = &ServerConfig{
	RecoverPanic: true,
}

Config is the configuration of the main server.

Functions

func Close

func Close()

Close stops the main server.

func Delete

func Delete(route string, handler interface{})

Delete adds a handler for the 'DELETE' http method in the main server.

func Get

func Get(route string, handler interface{})

Get adds a handler for the 'GET' http method in the main server.

func Handler

func Handler(route string, method string, httpHandler http.Handler)

Adds a custom handler. Only for webserver mode. Will have no effect when running as FCGI or SCGI.

func Match

func Match(method string, route string, handler interface{})

Match adds a handler for an arbitrary http method in the main server.

func NewCookie

func NewCookie(name string, value string, age int64) *http.Cookie

NewCookie is a helper method that returns a new http.Cookie object. Duration is specified in seconds. If the duration is zero, the cookie is permanent. This can be used in conjunction with ctx.SetCookie.

func Post

func Post(route string, handler interface{})

Post adds a handler for the 'POST' http method in the main server.

func Process

func Process(c http.ResponseWriter, req *http.Request)

Process invokes the main server's routing system.

func Put

func Put(route string, handler interface{})

Put adds a handler for the 'PUT' http method in the main server.

func Run

func Run(addr string)

Run starts the webgo application and serves HTTP requests for the main server.

func RunFcgi

func RunFcgi(addr string)

RunFcgi starts the webgo application and serves FastCGI requests for the main server.

func RunScgi

func RunScgi(addr string)

RunScgi starts the webgo application and serves SCGI requests for the main server.

func RunTLS

func RunTLS(addr string, config *tls.Config)

RunTLS starts the webgo application and serves HTTPS requests for the main server.

func SetLogger

func SetLogger(logger *log.Logger)

SetLogger sets the logger for the main server.

func Slug

func Slug(s string, sep string) string

Slug is a helper function that returns the URL slug for string s. It's used to return clean, URL-friendly strings that can be used in routing.

func Urlencode

func Urlencode(data map[string]string) string

Urlencode is a helper method that converts a map into URL-encoded form data. It is a useful when constructing HTTP POST requests.

func Websocket

func Websocket(route string, httpHandler websocket.Handler)

Adds a handler for websockets. Only for webserver mode. Will have no effect when running as FCGI or SCGI.

Types

type Context

type Context struct {
	Request *http.Request
	Params  map[string]string
	Server  *Server
	http.ResponseWriter
}

A Context object is created for every incoming HTTP request, and is passed to handlers as an optional first argument. It provides information about the request, including the http.Request object, the GET and POST params, and acts as a Writer for the response.

func (*Context) Abort

func (ctx *Context) Abort(status int, body string)

Abort is a helper method that sends an HTTP header and an optional body. It is useful for returning 4xx or 5xx errors. Once it has been called, any return value from the handler will not be written to the response.

func (*Context) ContentType

func (ctx *Context) ContentType(val string) string

ContentType sets the Content-Type header for an HTTP response. For example, ctx.ContentType("json") sets the content-type to "application/json" If the supplied value contains a slash (/) it is set as the Content-Type verbatim. The return value is the content type as it was set, or an empty string if none was found.

func (*Context) Forbidden

func (ctx *Context) Forbidden()

Forbidden writes a 403 HTTP response

func (*Context) GetBasicAuth

func (ctx *Context) GetBasicAuth() (string, string, error)

GetBasicAuth is a helper method of *Context that returns the decoded user and password from the *Context's authorization header

func (*Context) GetSecureCookie

func (ctx *Context) GetSecureCookie(name string) (string, bool)

func (*Context) NotFound

func (ctx *Context) NotFound(message string)

NotFound writes a 404 HTTP response

func (*Context) NotModified

func (ctx *Context) NotModified()

Notmodified writes a 304 HTTP response

func (*Context) Redirect

func (ctx *Context) Redirect(status int, url_ string)

Redirect is a helper method for 3xx redirects.

func (*Context) SetCookie

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

SetCookie adds a cookie header to the response.

func (*Context) SetHeader

func (ctx *Context) SetHeader(hdr string, val string, unique bool)

SetHeader sets a response header. If `unique` is true, the current value of that header will be overwritten . If false, it will be appended.

func (*Context) SetSecureCookie

func (ctx *Context) SetSecureCookie(name string, val string, age int64)

func (*Context) Unauthorized

func (ctx *Context) Unauthorized()

Unauthorized writes a 401 HTTP response

func (*Context) WriteString

func (ctx *Context) WriteString(content string)

WriteString writes string data into the response object.

type Server

type Server struct {
	Config *ServerConfig

	Logger *log.Logger
	Env    map[string]interface{}
	// contains filtered or unexported fields
}

Server represents a webgo.go server.

func NewServer

func NewServer() *Server

func (*Server) Close

func (s *Server) Close()

Close stops server s.

func (*Server) Delete

func (s *Server) Delete(route string, handler interface{})

Delete adds a handler for the 'DELETE' http method for server s.

func (*Server) Get

func (s *Server) Get(route string, handler interface{})

Get adds a handler for the 'GET' http method for server s.

func (*Server) Handler

func (s *Server) Handler(route string, method string, httpHandler http.Handler)

Adds a custom handler. Only for webserver mode. Will have no effect when running as FCGI or SCGI.

func (*Server) Match

func (s *Server) Match(method string, route string, handler interface{})

Match adds a handler for an arbitrary http method for server s.

func (*Server) Post

func (s *Server) Post(route string, handler interface{})

Post adds a handler for the 'POST' http method for server s.

func (*Server) Process

func (s *Server) Process(c http.ResponseWriter, req *http.Request)

Process invokes the routing system for server s

func (*Server) Put

func (s *Server) Put(route string, handler interface{})

Put adds a handler for the 'PUT' http method for server s.

func (*Server) Run

func (s *Server) Run(addr string)

Run starts the webgo application and serves HTTP requests for s

func (*Server) RunFcgi

func (s *Server) RunFcgi(addr string)

RunFcgi starts the webgo application and serves FastCGI requests for s.

func (*Server) RunScgi

func (s *Server) RunScgi(addr string)

RunScgi starts the webgo application and serves SCGI requests for s.

func (*Server) RunTLS

func (s *Server) RunTLS(addr string, config *tls.Config) error

RunTLS starts the webgo application and serves HTTPS requests for s.

func (*Server) ServeHTTP

func (s *Server) ServeHTTP(c http.ResponseWriter, req *http.Request)

ServeHTTP is the interface method for Go's http server package

func (*Server) SetLogger

func (s *Server) SetLogger(logger *log.Logger)

SetLogger sets the logger for server s

func (*Server) Websocket

func (s *Server) Websocket(route string, httpHandler websocket.Handler)

Adds a handler for websockets. Only for webserver mode. Will have no effect when running as FCGI or SCGI.

type ServerConfig

type ServerConfig struct {
	StaticDir         string
	StaticFilesServer bool // FilesServerRoot: StaticDir + "/files"
	Addr              string
	Port              int
	CookieSecret      string
	RecoverPanic      bool
	Profiler          bool
}

ServerConfig is configuration for server objects.

type Session

type Session struct {
	Id    string
	Value interface{}
	// contains filtered or unexported fields
}

Session stores the id and value for a session.

func (*Session) Abandon

func (session *Session) Abandon()

func (*Session) Cookie

func (session *Session) Cookie() string

type SessionManager

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

SessionManager manager sessions.

func NewSessionManager

func NewSessionManager(logger *log.Logger) *SessionManager

func (*SessionManager) Abandon

func (p *SessionManager) Abandon()

func (*SessionManager) GetPath

func (p *SessionManager) GetPath() string

func (*SessionManager) GetSession

func (p *SessionManager) GetSession(res http.ResponseWriter, req *http.Request) (session *Session)

func (*SessionManager) GetSessionById

func (p *SessionManager) GetSessionById(id string) (session *Session)

func (*SessionManager) GetTimeout

func (p *SessionManager) GetTimeout() uint

func (*SessionManager) Has

func (p *SessionManager) Has(id string) (found bool)

func (*SessionManager) OnEnd

func (p *SessionManager) OnEnd(f func(*Session))

func (*SessionManager) OnStart

func (p *SessionManager) OnStart(f func(*Session))

func (*SessionManager) OnTouch

func (p *SessionManager) OnTouch(f func(*Session))

func (*SessionManager) SetPath

func (p *SessionManager) SetPath(t string)

func (*SessionManager) SetTimeout

func (p *SessionManager) SetTimeout(t uint)

Directories

Path Synopsis
examples
sqlite3
Package sqlite3 provides interface to SQLite3 databases.
Package sqlite3 provides interface to SQLite3 databases.

Jump to

Keyboard shortcuts

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