webmachine

package
v0.0.0-...-f4a46bf Latest Latest
Warning

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

Go to latest
Published: Apr 5, 2016 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CONNECT = "CONNECT"
	DELETE  = "DELETE"
	GET     = "GET"
	HEAD    = "HEAD"
	OPTIONS = "OPTIONS"
	PUT     = "PUT"
	POST    = "POST"
	TRACE   = "TRACE"
)
View Source
const (
	HTML_DIRECTORY_LISTING_SUCCESS_TEMPLATE_STRING = "" /* 734-byte string literal not displayed */
	HTML_DIRECTORY_LISTING_ERROR_TEMPLATE_STRING   = "" /* 273-byte string literal not displayed */
)
View Source
const (
	MIME_TYPE_HTML           = "text/html"
	MIME_TYPE_XHTML_XML      = "application/xhtml+xml"
	MIME_TYPE_XML            = "application/xml"
	MIME_TYPE_CSS            = "text/css"
	MIME_TYPE_JAVASCRIPT     = "application/x-javascript"
	MIME_TYPE_JSON           = "application/json"
	MIME_TYPE_JPEG           = "image/jpeg"
	MIME_TYPE_GIF            = "image/gif"
	MIME_TYPE_PNG            = "image/png"
	MIME_TYPE_ICO            = "image/x-icon"
	MIME_TYPE_SWF            = "application/x-shockwave-flash"
	MIME_TYPE_ZIP            = "application/zip"
	MIME_TYPE_BZIP2          = "application/x-bzip2"
	MIME_TYPE_GZ             = "application/x-gzip"
	MIME_TYPE_TAR            = "application/x-tar"
	MIME_TYPE_COMPONENT      = "text/x-component"
	MIME_TYPE_CACHE_MANIFEST = "text/cache-manifest"
	MIME_TYPE_SVG            = "image/svg+xml"
	MIME_TYPE_TEXT_PLAIN     = "text/plain"
	MIME_TYPE_CSV            = "text/csv"
	MIME_TYPE_OCTET_STREAM   = "application/octet-stream"
)
View Source
const (
	ENCODING_IDENTITY = "identity"
	ENCODING_COMPRESS = "compress"
	ENCODING_DEFLATE  = "deflate"
	ENCODING_GZIP     = "gzip"
	ENCODING_CHUNKED  = "chunked"
)
View Source
const (
	ISO_8601_DATETIME_FORMAT = "2006-01-02T03:04:05Z"
)

Variables

View Source
var ALL_METHODS []string
View Source
var HTML_DIRECTORY_LISTING_ERROR_TEMPLATE *template.Template
View Source
var HTML_DIRECTORY_LISTING_SUCCESS_TEMPLATE *template.Template

Functions

func NewChunkedReader

func NewChunkedReader(r io.Reader) io.ReadCloser

NewChunkedReader returns a new reader that translates reads from HTTP "chunked" format before writing them to w. Closing the returned writer sends the final 0-length chunk that marks the end of the stream.

func NewChunkedWriter

func NewChunkedWriter(w io.Writer) io.WriteCloser

NewChunkedWriter returns a new writer that translates writes into HTTP "chunked" format before writing them to w. Closing the returned writer sends the final 0-length chunk that marks the end of the stream.

Types

type CharsetHandler

type CharsetHandler interface {
	Charset() string
	CharsetConverter(req Request, cxt Context, reader io.Reader) io.Reader
}

type Context

type Context interface{}

type DefaultRequestHandler

type DefaultRequestHandler struct{}

func NewDefaultRequestHandler

func NewDefaultRequestHandler() *DefaultRequestHandler

func (*DefaultRequestHandler) AllowMissingPost

func (p *DefaultRequestHandler) AllowMissingPost(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) AllowedMethods

func (p *DefaultRequestHandler) AllowedMethods(req Request, cxt Context) ([]string, Request, Context, int, error)

func (*DefaultRequestHandler) CharsetsProvided

func (p *DefaultRequestHandler) CharsetsProvided(charsets []string, req Request, cxt Context) ([]CharsetHandler, Request, Context, int, error)

func (*DefaultRequestHandler) ContentTypesAccepted

func (p *DefaultRequestHandler) ContentTypesAccepted(req Request, cxt Context) ([]MediaTypeInputHandler, Request, Context, int, error)

func (*DefaultRequestHandler) ContentTypesProvided

func (p *DefaultRequestHandler) ContentTypesProvided(req Request, cxt Context) ([]MediaTypeHandler, Request, Context, int, error)

func (*DefaultRequestHandler) CreatePath

func (p *DefaultRequestHandler) CreatePath(req Request, cxt Context) (string, Request, Context, int, error)

func (*DefaultRequestHandler) DeleteCompleted

func (p *DefaultRequestHandler) DeleteCompleted(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) DeleteResource

func (p *DefaultRequestHandler) DeleteResource(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) EncodingsProvided

func (p *DefaultRequestHandler) EncodingsProvided(encodings []string, req Request, cxt Context) ([]EncodingHandler, Request, Context, int, error)

func (*DefaultRequestHandler) Expires

func (p *DefaultRequestHandler) Expires(req Request, cxt Context) (time.Time, Request, Context, int, error)

func (*DefaultRequestHandler) FinishRequest

func (p *DefaultRequestHandler) FinishRequest(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) Forbidden

func (p *DefaultRequestHandler) Forbidden(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) GenerateETag

func (p *DefaultRequestHandler) GenerateETag(req Request, cxt Context) (string, Request, Context, int, error)

func (*DefaultRequestHandler) HasRespBody

func (p *DefaultRequestHandler) HasRespBody(req Request, cxt Context) bool

func (*DefaultRequestHandler) IsAuthorized

func (p *DefaultRequestHandler) IsAuthorized(req Request, cxt Context) (bool, string, Request, Context, int, error)

func (*DefaultRequestHandler) IsConflict

func (p *DefaultRequestHandler) IsConflict(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) IsLanguageAvailable

func (p *DefaultRequestHandler) IsLanguageAvailable(language []string, req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) KnownContentType

func (p *DefaultRequestHandler) KnownContentType(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) LastModified

func (p *DefaultRequestHandler) LastModified(req Request, cxt Context) (time.Time, Request, Context, int, error)

func (*DefaultRequestHandler) MalformedRequest

func (p *DefaultRequestHandler) MalformedRequest(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) MovedPermanently

func (p *DefaultRequestHandler) MovedPermanently(req Request, cxt Context) (string, Request, Context, int, error)

func (*DefaultRequestHandler) MovedTemporarily

func (p *DefaultRequestHandler) MovedTemporarily(req Request, cxt Context) (string, Request, Context, int, error)

func (*DefaultRequestHandler) MultipleChoices

func (p *DefaultRequestHandler) MultipleChoices(req Request, cxt Context) (bool, http.Header, Request, Context, int, error)

func (*DefaultRequestHandler) Options

func (p *DefaultRequestHandler) Options(req Request, cxt Context) ([]string, Request, Context, int, error)

func (*DefaultRequestHandler) PostIsCreate

func (p *DefaultRequestHandler) PostIsCreate(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) PreviouslyExisted

func (p *DefaultRequestHandler) PreviouslyExisted(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) ProcessPost

func (*DefaultRequestHandler) ResourceExists

func (p *DefaultRequestHandler) ResourceExists(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) ResponseIsRedirect

func (p *DefaultRequestHandler) ResponseIsRedirect(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) ServiceAvailable

func (p *DefaultRequestHandler) ServiceAvailable(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) StartRequest

func (p *DefaultRequestHandler) StartRequest(req Request, cxt Context) (Request, Context)

func (*DefaultRequestHandler) URITooLong

func (p *DefaultRequestHandler) URITooLong(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) ValidContentHeaders

func (p *DefaultRequestHandler) ValidContentHeaders(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) ValidEntityLength

func (p *DefaultRequestHandler) ValidEntityLength(req Request, cxt Context) (bool, Request, Context, int, error)

func (*DefaultRequestHandler) Variances

func (p *DefaultRequestHandler) Variances(req Request, cxt Context) ([]string, Request, Context, int, error)

type EncodingHandler

type EncodingHandler interface {
	Encoding() string
	Encoder(req Request, cxt Context, writer io.Writer) io.Writer
	Decoder(req Request, cxt Context, reader io.Reader) io.Reader
}

func NewChunkedEncoder

func NewChunkedEncoder() EncodingHandler

func NewCompressEncoder

func NewCompressEncoder() EncodingHandler

func NewDeflateEncoder

func NewDeflateEncoder() EncodingHandler

func NewGZipEncoder

func NewGZipEncoder() EncodingHandler

func NewIdentityEncoder

func NewIdentityEncoder() EncodingHandler

type FileResource

type FileResource struct {
	DefaultRequestHandler
	// contains filtered or unexported fields
}

func NewFileResource

func NewFileResource(directoryPath, urlPathPrefix string, allowWrite bool, allowDirectoryListing bool) *FileResource

func (*FileResource) AllowMissingPost

func (p *FileResource) AllowMissingPost(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) AllowedMethods

func (p *FileResource) AllowedMethods(req Request, cxt Context) ([]string, Request, Context, int, error)

func (*FileResource) ContentTypesAccepted

func (p *FileResource) ContentTypesAccepted(req Request, cxt Context) ([]MediaTypeInputHandler, Request, Context, int, error)

func (*FileResource) ContentTypesProvided

func (p *FileResource) ContentTypesProvided(req Request, cxt Context) ([]MediaTypeHandler, Request, Context, int, error)

func (*FileResource) CreatePath

func (p *FileResource) CreatePath(req Request, cxt Context) (string, Request, Context, int, error)

func (*FileResource) DeleteResource

func (p *FileResource) DeleteResource(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) FinishRequest

func (p *FileResource) FinishRequest(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) Forbidden

func (p *FileResource) Forbidden(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) GenerateContext

func (p *FileResource) GenerateContext(req Request, cxt Context) FileResourceContext

func (*FileResource) HandlerFor

func (p *FileResource) HandlerFor(req Request, writer ResponseWriter) RequestHandler

func (*FileResource) HasRespBody

func (p *FileResource) HasRespBody(req Request, cxt Context) bool

func (*FileResource) IsAuthorized

func (p *FileResource) IsAuthorized(req Request, cxt Context) (bool, string, Request, Context, int, error)

func (*FileResource) IsConflict

func (p *FileResource) IsConflict(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) LastModified

func (p *FileResource) LastModified(req Request, cxt Context) (time.Time, Request, Context, int, error)

func (*FileResource) MalformedRequest

func (p *FileResource) MalformedRequest(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) MultipleChoices

func (p *FileResource) MultipleChoices(req Request, cxt Context) (bool, http.Header, Request, Context, int, error)

func (*FileResource) PostIsCreate

func (p *FileResource) PostIsCreate(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) ProcessPost

func (p *FileResource) ProcessPost(req Request, cxt Context) (Request, Context, int, http.Header, io.WriterTo, error)

func (*FileResource) ResourceExists

func (p *FileResource) ResourceExists(req Request, cxt Context) (bool, Request, Context, int, error)
func (p *FileResource) ServiceAvailable(req Request, cxt Context) (bool, Request, Context, int, os.Error) {
  return true, req, cxt, 0, nil
}

func (*FileResource) ResponseIsRedirect

func (p *FileResource) ResponseIsRedirect(req Request, cxt Context) (bool, Request, Context, int, error)

func (*FileResource) StartRequest

func (p *FileResource) StartRequest(req Request, cxt Context) (Request, Context)

func (*FileResource) URITooLong

func (p *FileResource) URITooLong(req Request, cxt Context) (bool, Request, Context, int, error)

type FileResourceContext

type FileResourceContext interface {
	FullPath() string
	SetFullPath(fullPath string)
	ReaderOpen() (io.ReadCloser, error)
	WriterOpen(append bool) (io.WriteCloser, error)
	Close() error
	Read(data []byte) (int, error)
	Write(data []byte) (int, error)
	Exists() bool
	CanRead() bool
	CanWrite(append bool) bool
	IsDir() bool
	IsFile() bool
	LastModified() time.Time
	Len() int64
	HasMultipleResources() bool
	MultipleResourceNames() []string
}

func NewFileResourceContext

func NewFileResourceContext() FileResourceContext

func NewFileResourceContextWithPath

func NewFileResourceContextWithPath(fullPath string) FileResourceContext

type Flusher

type Flusher interface {
	Flush() error
}

type HtmlDirectoryListing

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

func NewHtmlDirectoryListing

func NewHtmlDirectoryListing(fullPath string, urlPath string) *HtmlDirectoryListing

func (*HtmlDirectoryListing) MediaTypeHandleOutputTo

func (p *HtmlDirectoryListing) MediaTypeHandleOutputTo(req Request, cxt Context, writer io.Writer, resp ResponseWriter)

func (*HtmlDirectoryListing) MediaTypeOutput

func (p *HtmlDirectoryListing) MediaTypeOutput() string

type JsonDirectoryListing

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

func NewJsonDirectoryListing

func NewJsonDirectoryListing(fullPath string, urlPath string) *JsonDirectoryListing

func (*JsonDirectoryListing) MediaTypeHandleOutputTo

func (p *JsonDirectoryListing) MediaTypeHandleOutputTo(req Request, cxt Context, writer io.Writer, resp ResponseWriter)

func (*JsonDirectoryListing) MediaTypeOutput

func (p *JsonDirectoryListing) MediaTypeOutput() string

type MediaTypeHandler

type MediaTypeHandler interface {
	MediaTypeOutput() string
	MediaTypeHandleOutputTo(req Request, cxt Context, writer io.Writer, resp ResponseWriter)
}

type MediaTypeInputHandler

type MediaTypeInputHandler interface {
	MediaTypeInput() string
	MediaTypeHandleInputFrom(req Request, cxt Context) (int, http.Header, io.WriterTo)
}

type MockResponseWriter

type MockResponseWriter struct {
	Headers    http.Header   `json:"headers,omitempty"`
	Buffer     *bytes.Buffer `json:"buffer,omitempty"`
	StatusCode int           `json:"status_code,omitempty"`
	Request    *http.Request `json:"request,omitempty"`
}

func NewMockResponseWriter

func NewMockResponseWriter(request *http.Request) *MockResponseWriter

func (*MockResponseWriter) Header

func (p *MockResponseWriter) Header() http.Header

func (*MockResponseWriter) MarshalJSON

func (p *MockResponseWriter) MarshalJSON() ([]byte, error)

func (*MockResponseWriter) ResponseWriter

func (p *MockResponseWriter) ResponseWriter() http.ResponseWriter

func (*MockResponseWriter) String

func (p *MockResponseWriter) String() string

func (*MockResponseWriter) Write

func (p *MockResponseWriter) Write(data []byte) (int, error)

func (*MockResponseWriter) WriteHeader

func (p *MockResponseWriter) WriteHeader(statusCode int)

type PassThroughMediaTypeHandler

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

func NewPassThroughMediaTypeHandler

func NewPassThroughMediaTypeHandler(mediaType string, reader io.ReadCloser, numberOfBytes int64, lastModified time.Time) *PassThroughMediaTypeHandler

func (*PassThroughMediaTypeHandler) MediaTypeHandleOutputTo

func (p *PassThroughMediaTypeHandler) MediaTypeHandleOutputTo(req Request, cxt Context, writer io.Writer, resp ResponseWriter)

func (*PassThroughMediaTypeHandler) MediaTypeOutput

func (p *PassThroughMediaTypeHandler) MediaTypeOutput() string

func (*PassThroughMediaTypeHandler) SetStatusCode

func (p *PassThroughMediaTypeHandler) SetStatusCode(statusCode int)

type PassThroughMediaTypeInputHandler

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

func NewPassThroughMediaTypeInputHandler

func NewPassThroughMediaTypeInputHandler(mediaType, charset, language, filename, urlPath string, append bool, numberOfBytes int64, reader io.Reader) *PassThroughMediaTypeInputHandler

func (*PassThroughMediaTypeInputHandler) MediaTypeHandleInputFrom

func (p *PassThroughMediaTypeInputHandler) MediaTypeHandleInputFrom(req Request, cxt Context) (int, http.Header, io.WriterTo)

func (*PassThroughMediaTypeInputHandler) MediaTypeInput

func (p *PassThroughMediaTypeInputHandler) MediaTypeInput() string

type Request

type Request interface {
	UnderlyingRequest() *http.Request
	Method() string  // GET, POST, PUT, etc.
	RawURL() string  // The raw URL given in the request
	URL() *url.URL   // Parsed URL
	Proto() string   // "HTTP/1.0"
	ProtoMajor() int // 1
	ProtoMinor() int // 0

	Header() http.Header
	AddCookie(c *http.Cookie)
	Cookie(name string) (*http.Cookie, error)
	Cookies() []*http.Cookie
	Body() io.ReadCloser
	ContentLength() int64
	TransferEncoding() []string
	CloseAfterReply() bool
	Host() string
	Referer() string
	UserAgent() string
	Form() map[string][]string
	FormFile(key string) (multipart.File, *multipart.FileHeader, error)
	FormValue(key string) string
	MultipartReader() (*multipart.Reader, error)
	ParseForm() (err error)
	ParseMultipartForm(maxMemory int64) error
	Trailer() http.Header
	HostParts() []string
	URLParts() []string
}

func NewRequestFromHttpRequest

func NewRequestFromHttpRequest(req *http.Request) Request

type RequestHandler

type RequestHandler interface {
	StartRequest(req Request, cxt Context) (Request, Context)
	ResourceExists(req Request, cxt Context) (bool, Request, Context, int, error)
	ServiceAvailable(req Request, cxt Context) (bool, Request, Context, int, error)
	IsAuthorized(req Request, cxt Context) (bool, string, Request, Context, int, error)
	Forbidden(req Request, cxt Context) (bool, Request, Context, int, error)
	AllowMissingPost(req Request, cxt Context) (bool, Request, Context, int, error)
	MalformedRequest(req Request, cxt Context) (bool, Request, Context, int, error)
	URITooLong(req Request, cxt Context) (bool, Request, Context, int, error)
	KnownContentType(req Request, cxt Context) (bool, Request, Context, int, error)
	ValidContentHeaders(req Request, cxt Context) (bool, Request, Context, int, error)
	ValidEntityLength(req Request, cxt Context) (bool, Request, Context, int, error)
	Options(req Request, cxt Context) ([]string, Request, Context, int, error)
	AllowedMethods(req Request, cxt Context) ([]string, Request, Context, int, error)
	DeleteResource(req Request, cxt Context) (bool, Request, Context, int, error)
	DeleteCompleted(req Request, cxt Context) (bool, Request, Context, int, error)
	PostIsCreate(req Request, cxt Context) (bool, Request, Context, int, error)
	CreatePath(req Request, cxt Context) (string, Request, Context, int, error)
	ProcessPost(req Request, cxt Context) (Request, Context, int, http.Header, io.WriterTo, error)
	ContentTypesProvided(req Request, cxt Context) ([]MediaTypeHandler, Request, Context, int, error)
	ContentTypesAccepted(req Request, cxt Context) ([]MediaTypeInputHandler, Request, Context, int, error)
	IsLanguageAvailable(languages []string, req Request, cxt Context) (bool, Request, Context, int, error)
	CharsetsProvided(charsets []string, req Request, cxt Context) ([]CharsetHandler, Request, Context, int, error)
	EncodingsProvided(encodings []string, req Request, cxt Context) ([]EncodingHandler, Request, Context, int, error)
	Variances(req Request, cxt Context) ([]string, Request, Context, int, error)
	IsConflict(req Request, cxt Context) (bool, Request, Context, int, error)
	MultipleChoices(req Request, cxt Context) (bool, http.Header, Request, Context, int, error)
	PreviouslyExisted(req Request, cxt Context) (bool, Request, Context, int, error)
	MovedPermanently(req Request, cxt Context) (string, Request, Context, int, error)
	MovedTemporarily(req Request, cxt Context) (string, Request, Context, int, error)
	LastModified(req Request, cxt Context) (time.Time, Request, Context, int, error)
	Expires(req Request, cxt Context) (time.Time, Request, Context, int, error)
	GenerateETag(req Request, cxt Context) (string, Request, Context, int, error)
	FinishRequest(req Request, cxt Context) (bool, Request, Context, int, error)
	ResponseIsRedirect(req Request, cxt Context) (bool, Request, Context, int, error)

	HasRespBody(req Request, cxt Context) bool
}

type ResponseWriter

type ResponseWriter interface {
	http.ResponseWriter
	io.Closer
	Flusher
	AddEncoding(h EncodingHandler, req Request, cxt Context) io.Writer
}

func NewResponseWriter

func NewResponseWriter(rw http.ResponseWriter) ResponseWriter

type RouteHandler

type RouteHandler interface {
	HandlerFor(Request, ResponseWriter) RequestHandler
}

type StandardCharsetHandler

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

func NewStandardCharsetHandler

func NewStandardCharsetHandler(charset string) *StandardCharsetHandler

func (*StandardCharsetHandler) Charset

func (p *StandardCharsetHandler) Charset() string

func (*StandardCharsetHandler) CharsetConverter

func (p *StandardCharsetHandler) CharsetConverter(req Request, cxt Context, reader io.Reader) io.Reader

func (*StandardCharsetHandler) String

func (p *StandardCharsetHandler) String() string

type WMDecision

type WMDecision int

func (WMDecision) String

func (p WMDecision) String() string

type WebMachine

type WebMachine interface {
	ServeHTTP(http.ResponseWriter, *http.Request)
	AddRouteHandler(RouteHandler)
	RemoveRouteHandler(RouteHandler)
}

func NewWebMachine

func NewWebMachine() WebMachine

type WriteThrough

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

func NewWriteThrough

func NewWriteThrough(from, to io.Writer) *WriteThrough

func (*WriteThrough) Close

func (p *WriteThrough) Close() error

func (*WriteThrough) Flush

func (p *WriteThrough) Flush() error

func (*WriteThrough) Write

func (p *WriteThrough) Write(data []byte) (int, error)

Jump to

Keyboard shortcuts

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