mirror of
https://github.com/mainnika/nikita-tokarch-uk.git
synced 2026-05-25 01:03:35 +00:00
Implement the renderer routing basics
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
|||||||
"github.com/valyala/fasthttp"
|
"github.com/valyala/fasthttp"
|
||||||
|
|
||||||
"code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/config"
|
"code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/config"
|
||||||
|
"code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/renderer"
|
||||||
|
|
||||||
_ "code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/templates"
|
_ "code.tokarch.uk/mainnika/nikita-tokarch-uk/frontend/templates"
|
||||||
)
|
)
|
||||||
@@ -50,8 +51,13 @@ func main() {
|
|||||||
logrus.Fatal(err)
|
logrus.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rendererHandler := &renderer.Renderer{
|
||||||
|
Base: config.Base,
|
||||||
|
}
|
||||||
|
|
||||||
httpServer := fasthttp.Server{
|
httpServer := fasthttp.Server{
|
||||||
Logger: logrus.StandardLogger(),
|
Logger: logrus.StandardLogger(),
|
||||||
|
Handler: rendererHandler.Handler,
|
||||||
Name: frontendServerIdentity,
|
Name: frontendServerIdentity,
|
||||||
GetOnly: true,
|
GetOnly: true,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
package renderer
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
routing "github.com/jackwhelpton/fasthttp-routing/v2"
|
||||||
|
"github.com/valyala/fasthttp"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Renderer is the main handler that contains all routes handlers
|
||||||
|
type Renderer struct {
|
||||||
|
Base string
|
||||||
|
|
||||||
|
router *routing.Router
|
||||||
|
handler fasthttp.RequestHandler
|
||||||
|
|
||||||
|
initOnce sync.Once
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handler invokes the lazy once-initializer and then does the request
|
||||||
|
func (r *Renderer) Handler(ctx *fasthttp.RequestCtx) {
|
||||||
|
r.initOnce.Do(r.init)
|
||||||
|
r.handler(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// init has the renderer initialization
|
||||||
|
func (r *Renderer) init() {
|
||||||
|
|
||||||
|
router := routing.New()
|
||||||
|
|
||||||
|
router.Use(r.useTemplateWriter)
|
||||||
|
|
||||||
|
r.router = router
|
||||||
|
r.handler = router.HandleRequest
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user