alox

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Mar 12, 2023 License: MIT Imports: 11 Imported by: 0

README

Alox

Progress

Interface Implementation Status
Server Server (base)
^ API
^ Website
^ File
^ Proxy
Response (base)
^ JSON
^ Page

Alox (client)

Usage

  1. Install with
    NPM
    npm i --save @alox.sh/client
    or YARN
    yarn add @alox.sh/client
  2. Import
    import type { WebsiteState } from '@alox.sh/client'
    
    // Declare 
    export declare global {
        interface Window {
            __websiteState?: WebsiteState
        }
    }
    

Supported application types

Out of the box support
  • SPA (served from file system) - see examples/spaDir
  • SPA (embeded into the binary) - see examples/spaEmbeded
Extendable
  • Any other type - this library is fully customizable to support virtually any application type

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssertHead

func AssertHead(value string, assert func(head string) bool) (passed bool)

func HasPrefix

func HasPrefix(value string, prefix string) bool

func MarshalAndWriteJSON

func MarshalAndWriteJSON(responseWriter http.ResponseWriter, value interface{}) (err error)

func MatchHead

func MatchHead(value string, head string) (matched bool)

func RenderAndWriteHTMLNode

func RenderAndWriteHTMLNode(responseWriter http.ResponseWriter, node *html.Node) (err error)

func ShiftAndAssertHead

func ShiftAndAssertHead(value string, assert func(head string) bool) (passed bool, tail string)

func ShiftAndMatchHead

func ShiftAndMatchHead(value string, head string) (matched bool, tail string)

func ShiftHead

func ShiftHead(value string) (head, tail string)

func WriteFile

func WriteFile(responseWriter http.ResponseWriter, name string, data []byte)

func WriteHTML

func WriteHTML(responseWriter http.ResponseWriter, html []byte)

func WriteJSON

func WriteJSON(responseWriter http.ResponseWriter, json []byte)

Types

type ContextValues

type ContextValues map[interface{}]interface{}

func (ContextValues) Del

func (contextValues ContextValues) Del(key interface{})

func (ContextValues) Get

func (contextValues ContextValues) Get(key interface{}) interface{}

func (ContextValues) Set

func (contextValues ContextValues) Set(key, value interface{})

type ErrorHandler

type ErrorHandler func(Server, http.ResponseWriter, *http.Request, interface{})

type Filter

type Filter func(*http.Request) bool

type Handler

type Handler func(Server, http.ResponseWriter, *http.Request)

type Middleware

type Middleware func(Handler) Handler

type Page

type Page struct {
	Title string
	Meta  [][]html.Attribute
	// contains filtered or unexported fields
}

func NewPage

func NewPage(website Website, request *http.Request, inputHTML io.Reader) (page *Page, err error)

func (*Page) MarshalMap

func (page *Page) MarshalMap() map[string]interface{}

func (*Page) WriteToBuffer

func (page *Page) WriteToBuffer(output *bytes.Buffer) (err error)

func (*Page) WriteToBytes

func (page *Page) WriteToBytes() (output []byte, err error)

func (*Page) WriteToResponse

func (page *Page) WriteToResponse(responseWriter http.ResponseWriter) (err error)

type ResponseMethods

type ResponseMethods interface {
	WriteJSON(responseWriter http.ResponseWriter, json []byte)
	WriteHTML(responseWriter http.ResponseWriter, html []byte)
}

type Server

type Server interface {
	http.Handler
	ResponseMethods

	SetHandler(handler Handler) Server

	ContextValues() ContextValues // map[interface{}]interface{}

	AddFilters(filters ...Filter) Server
	AddMiddlewares(middlewares ...Middleware) Server

	// Match checks whether incoming *http.Request should be handled
	// by this server's handler.
	//
	// Match function will test request against all filters associated
	// with this server. If the request doesn't pass any one of them,
	// the Match function will return false. Otherwise, by default,
	// the Match function will return true.
	Match(request *http.Request) bool
}

type Website

type Website interface {
	GetRootFS() fs.FS
	GetDisableHTTPRedirect() bool
	GetStateGlobalName() string

	SetDisableHTTPRedirect(bool)
	SetStateGlobalName(string)

	NewPage(*http.Request) (*Page, error)

	MarshalStateMap(*Page) map[string]interface{}
	MarshalStateJS(*Page) (string, error)

	ServeHTTP(http.ResponseWriter, *http.Request)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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