 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Overview ¶
Package handler provides the HTTP handlers for the Defacto2 website. Using the Echo web framework, the handler is the entry point for the web server.
Index ¶
- Constants
- Variables
- func EmbedDirs(e *echo.Echo, currentFs fs.FS) *echo.Echo
- func MovedPermanently(e *echo.Echo) *echo.Echo
- type Configuration
- func (c *Configuration) Controller(db *sql.DB, sl *slog.Logger) *echo.Echo
- func (c *Configuration) FilesRoutes(e *echo.Echo, db *sql.DB, sl *slog.Logger, public embed.FS) (*echo.Echo, error)
- func (c *Configuration) NoCrawl(next echo.HandlerFunc) echo.HandlerFunc
- func (c *Configuration) PortErr(sl *slog.Logger, port uint16, err error)
- func (c *Configuration) ReadOnlyLock(next echo.HandlerFunc, sl *slog.Logger) echo.HandlerFunc
- func (c *Configuration) Registry(db *sql.DB, sl *slog.Logger) (*TemplateRegistry, error)
- func (c *Configuration) RequestLoggerConfig(sl *slog.Logger) middleware.RequestLoggerConfig
- func (c *Configuration) SessionLock(next echo.HandlerFunc, sl *slog.Logger) echo.HandlerFunc
- func (c *Configuration) ShutdownHTTP(w io.Writer, e *echo.Echo, sl *slog.Logger)
- func (c *Configuration) Start(e *echo.Echo, sl *slog.Logger, configs config.Config) error
- func (c *Configuration) StartHTTP(e *echo.Echo, sl *slog.Logger)
- func (c *Configuration) StartTLS(e *echo.Echo, sl *slog.Logger)
- func (c *Configuration) StartTLSLocal(e *echo.Echo, sl *slog.Logger)
- func (c *Configuration) StartupBranding(sl *slog.Logger, w io.Writer)
 
- type TemplateRegistry
Constants ¶
const ( // ShutdownCounter is the number of iterations to wait before shutting down the server. ShutdownCounter = 1 // ShutdownWait is the number of seconds to wait before shutting down the server. ShutdownWait = ShutdownCounter * time.Second // Downloader is the route for the file download handler. Downloader = "/d/:id" )
Variables ¶
Functions ¶
func MovedPermanently ¶
func MovedPermanently(e *echo.Echo) *echo.Echo
MovedPermanently redirects are partial URL routers that are to be redirected with a HTTP 301 Moved Permanently.
Types ¶
type Configuration ¶
type Configuration struct {
	Public      embed.FS      // Public facing files.
	View        embed.FS      // View contains Go templates.
	Version     string        // Version is the results of GoReleaser build command.
	Brand       []byte        // Brand contains the Defacto2 ASCII logo.
	Environment config.Config // Environment configurations from the host system.
	RecordCount int           // The total number of file records in the database.
}
    Configuration of the handler.
func (*Configuration) Controller ¶
func (c *Configuration) Controller(db *sql.DB, sl *slog.Logger) *echo.Echo
Controller is the primary instance of the Echo router.
func (*Configuration) FilesRoutes ¶
func (c *Configuration) FilesRoutes(e *echo.Echo, db *sql.DB, sl *slog.Logger, public embed.FS, ) (*echo.Echo, error)
FilesRoutes defines the file locations and routes for the web server.
func (*Configuration) NoCrawl ¶
func (c *Configuration) NoCrawl(next echo.HandlerFunc) echo.HandlerFunc
NoCrawl middleware adds a `X-Robots-Tag` header to the response. The header contains the noindex and nofollow values that tell search engine crawlers to not index or crawl the page or asset. See https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag#xrobotstag
func (*Configuration) PortErr ¶
func (c *Configuration) PortErr(sl *slog.Logger, port uint16, err error)
PortErr handles the error when the HTTP or HTTPS server cannot start.
func (*Configuration) ReadOnlyLock ¶
func (c *Configuration) ReadOnlyLock(next echo.HandlerFunc, sl *slog.Logger) echo.HandlerFunc
ReadOnlyLock disables all PATCH, POST, PUT and DELETE requests for the modification of the database and any related user interface.
func (*Configuration) Registry ¶
func (c *Configuration) Registry(db *sql.DB, sl *slog.Logger) (*TemplateRegistry, error)
Registry returns the template renderer.
func (*Configuration) RequestLoggerConfig ¶ added in v1.8.0
func (c *Configuration) RequestLoggerConfig(sl *slog.Logger) middleware.RequestLoggerConfig
RequestLoggerConfig handles logging for HTTP page requests. A slog Logger is required otherwise it will panic.
If Configuration.LogAll is false then this returns a nil. Otherwise it logs all web server HTTP requests to info logs.
func (*Configuration) SessionLock ¶
func (c *Configuration) SessionLock(next echo.HandlerFunc, sl *slog.Logger) echo.HandlerFunc
SessionLock middleware checks the session cookie for a valid signed in client.
func (*Configuration) ShutdownHTTP ¶
func (c *Configuration) ShutdownHTTP(w io.Writer, e *echo.Echo, sl *slog.Logger)
ShutdownHTTP waits for a Ctrl-C keyboard press to initiate a graceful shutdown of the HTTP web server. The shutdown procedure occurs a few seconds after the key press.
func (*Configuration) StartHTTP ¶
func (c *Configuration) StartHTTP(e *echo.Echo, sl *slog.Logger)
StartHTTP starts the insecure HTTP web server.
func (*Configuration) StartTLS ¶
func (c *Configuration) StartTLS(e *echo.Echo, sl *slog.Logger)
StartTLS starts the encrypted TLS web server.
func (*Configuration) StartTLSLocal ¶
func (c *Configuration) StartTLSLocal(e *echo.Echo, sl *slog.Logger)
StartTLSLocal starts the localhost, encrypted TLS web server. This should only be triggered when the server is running in local mode.
func (*Configuration) StartupBranding ¶ added in v1.8.0
func (c *Configuration) StartupBranding(sl *slog.Logger, w io.Writer)
StartupBranding prints the application logo and information to the w io.writer.
type TemplateRegistry ¶
TemplateRegistry is template registry struct.
       Directories
      ¶
      Directories
      ¶
    
    | Path | Synopsis | 
|---|---|
| Package app handles the routes and views for the Defacto2 website. | Package app handles the routes and views for the Defacto2 website. | 
| 
          
            internal/filerecord
            
            
          
           Package filerecord provides functions for the file model which is an artifact record. | Package filerecord provides functions for the file model which is an artifact record. | 
| 
          
            internal/fileslice
            
            
          
           Package fileslice provides functions that return model FileSlices, which are multiple artifact records. | Package fileslice provides functions that return model FileSlices, which are multiple artifact records. | 
| 
          
            internal/simple
            
            
          
           Package simple provides functions for handling string or integer input data. | Package simple provides functions for handling string or integer input data. | 
| 
          
            remote
            
            
          
           Package remote provides the remote download and update of artifact data from third-party sources such as API's. | Package remote provides the remote download and update of artifact data from third-party sources such as API's. | 
| Package areacode provides information about North American Numbering Plan telephone area codes. | Package areacode provides information about North American Numbering Plan telephone area codes. | 
| Package cache provides a lightweight engine for storing key/value pairs. | Package cache provides a lightweight engine for storing key/value pairs. | 
| Package demozoo handles the retrieval of [production records] from the [Demozoo] API and the extraction of relevant data for the Defacto2 website. | Package demozoo handles the retrieval of [production records] from the [Demozoo] API and the extraction of relevant data for the Defacto2 website. | 
| Package download handles the client file downloads. | Package download handles the client file downloads. | 
| Package form provides functions for providing data for form and input elements. | Package form provides functions for providing data for form and input elements. | 
| Package html3 renders the html3 sub-route of the website. | Package html3 renders the html3 sub-route of the website. | 
| 
          
            ext
            
            
          
           Package ext contains common filename extensions used by the file records. | Package ext contains common filename extensions used by the file records. | 
| Package htmx handles the routes and views for the AJAX responses using the htmx library. | Package htmx handles the routes and views for the AJAX responses using the htmx library. | 
| Package jsdos configures the js-dos v6.22 emulator. | Package jsdos configures the js-dos v6.22 emulator. | 
| 
          
            msdos
            
            
          
           Package msdos provides functions for working with MS-DOS FAT 12/16 file system filenames. | Package msdos provides functions for working with MS-DOS FAT 12/16 file system filenames. | 
| Package pouet provides production, user voting data sourced from the Pouet website API. | Package pouet provides production, user voting data sourced from the Pouet website API. | 
| Package readme provides functions for reading and suggesting readme files. | Package readme provides functions for reading and suggesting readme files. | 
| Package render provides the file content rendering for the web server. | Package render provides the file content rendering for the web server. | 
| Package sess provides functions for handling session and cookies. | Package sess provides functions for handling session and cookies. | 
| Package site proves links and titles for recommended websites. | Package site proves links and titles for recommended websites. | 
| Package sitemap generates site mappings and a mapping indexes that can be rendered in XML. | Package sitemap generates site mappings and a mapping indexes that can be rendered in XML. | 
| Package sixteen provides data about releasers and groups on the 16colors website. | Package sixteen provides data about releasers and groups on the 16colors website. | 
| Package tidbit offers hyperlinked historical information about the Scene releasers and groups. | Package tidbit offers hyperlinked historical information about the Scene releasers and groups. |