Documentation ¶
Overview ¶
Define exported config types so they can be overwritten.
Note that for things such as the Public config, an alternative strategy would be to pass the templates an interface{} so you can pack it with whatever fields you please.
Derived from zeebo's https://github.com/zeebo/gostbook/blob/master/template.go
Index ¶
- Constants
- Variables
- func AboutHandler(w http.ResponseWriter, r *http.Request) error
- func CloseContext(req *http.Request, buf http.ResponseWriter) (httpStatus int)
- func DeleteContext(req *http.Request, w http.ResponseWriter)
- func ErrorHTML(w http.ResponseWriter, r *http.Request, errorTitle, errorMessage string, ...) error
- func ForumHandler(w http.ResponseWriter, r *http.Request) (err error)
- func IndexHandler(w http.ResponseWriter, r *http.Request) error
- func Initialize(cfg *ConfigFile, d *sql.DB, s *sessions.FilesystemStore, r *mux.Router, ...)
- func LoginHandler(w http.ResponseWriter, r *http.Request) (err error)
- func LogoutHandler(w http.ResponseWriter, r *http.Request) error
- func OpenContext(req *http.Request)
- func PostLoginHandler(w http.ResponseWriter, r *http.Request) error
- func PostRegisterHandler(w http.ResponseWriter, r *http.Request) error
- func PostThreadHandler(w http.ResponseWriter, r *http.Request) error
- func PostVoteHandler(w http.ResponseWriter, r *http.Request) error
- func RegisterHandler(w http.ResponseWriter, r *http.Request) (err error)
- func T(name string) *template.Template
- func ThreadHandler(w http.ResponseWriter, r *http.Request) error
- func ThreadRootHandler(w http.ResponseWriter, r *http.Request) (err error)
- func ThreadWsHandler(w http.ResponseWriter, req *http.Request)
- func ValidUrl(u *url.URL) bool
- type ConfigApp
- type ConfigDB
- type ConfigFile
- type ConfigPublic
- type Handler
- type ResponseLogger
Constants ¶
const (
ThisUser = 0
)
Variables ¶
var ( Config *ConfigFile LogWriter *log.Logger ErrorLogWriter *log.Logger )
Functions ¶
func AboutHandler ¶
func AboutHandler(w http.ResponseWriter, r *http.Request) error
func CloseContext ¶
func CloseContext(req *http.Request, buf http.ResponseWriter) (httpStatus int)
Anything that satisfies the http.ResponseWriter interface is sufficient
func DeleteContext ¶
func DeleteContext(req *http.Request, w http.ResponseWriter)
func ErrorHTML ¶
func ErrorHTML(w http.ResponseWriter, r *http.Request, errorTitle, errorMessage string, errorCode int, internalError error) error
Produce an HTML error page based on a title and a message, and return a desired error code. It is encouraged but not mandatory to use http.StatusXXX codes instead of raw integers for errorCode
func ForumHandler ¶
func ForumHandler(w http.ResponseWriter, r *http.Request) (err error)
func IndexHandler ¶
func IndexHandler(w http.ResponseWriter, r *http.Request) error
For now, the index is actually just a hardlink to the forum with ID #1
func Initialize ¶
func Initialize(cfg *ConfigFile, d *sql.DB, s *sessions.FilesystemStore, r *mux.Router, de *schema.Decoder)
func LoginHandler ¶
func LoginHandler(w http.ResponseWriter, r *http.Request) (err error)
func LogoutHandler ¶
func LogoutHandler(w http.ResponseWriter, r *http.Request) error
func OpenContext ¶
func PostLoginHandler ¶
func PostLoginHandler(w http.ResponseWriter, r *http.Request) error
func PostRegisterHandler ¶
func PostRegisterHandler(w http.ResponseWriter, r *http.Request) error
func PostThreadHandler ¶
func PostThreadHandler(w http.ResponseWriter, r *http.Request) error
func PostVoteHandler ¶
func PostVoteHandler(w http.ResponseWriter, r *http.Request) error
func RegisterHandler ¶
func RegisterHandler(w http.ResponseWriter, r *http.Request) (err error)
func ThreadHandler ¶
func ThreadHandler(w http.ResponseWriter, r *http.Request) error
func ThreadRootHandler ¶
func ThreadRootHandler(w http.ResponseWriter, r *http.Request) (err error)
Handles the specific URL /thread without any ID affixed to it
func ThreadWsHandler ¶
func ThreadWsHandler(w http.ResponseWriter, req *http.Request)
Types ¶
type ConfigApp ¶
type ConfigApp struct { Identifier string //This distinguishes this app for logging and other purposes Environment string //production, dev, ... LogAccess io.Writer //Log every request LogError io.Writer //Errors Port string Secret string RootForumID string //The numeric (but stringified) identifier for your root forum }
App-level settings like HTTP ports and secret keys
type ConfigDB ¶
type ConfigDB struct { User string Password string DBName string Port string PoolSize int //Should be <= max_connections in /etc/postgresql/(version #)/main/postgresql.conf }
DB connection config
type ConfigFile ¶
type ConfigFile struct { App *ConfigApp DB *ConfigDB Public *ConfigPublic }
A config file type is an object that nests various public and other config structures
type ConfigPublic ¶
type ConfigPublic struct { Site string //Site name Url string //Full URL, e.g., http://www.google.com ContactEmail string //Webmaster email address GACode string //Google Analytics Code GAUrl string //URL of your site, according to Google Analytics }
Public values that can be passed around into e.g., templates
type ResponseLogger ¶
Derived from https://github.com/gorilla/handlers/blob/master/handlers.go The main purpose here is to be able to pass around http.Status codes, which the net/http package does not natively enable.
func (*ResponseLogger) Write ¶
func (l *ResponseLogger) Write(b []byte) (int, error)
Call Status before you call this
func (*ResponseLogger) WriteHeader ¶
func (l *ResponseLogger) WriteHeader(s int)
Set a status code. ints are accepted, but http.StatusXXX is easier to read. Your choice.