From fca0fd270861cb1418961280260f765639349e8c Mon Sep 17 00:00:00 2001 From: "Gustavo L de Mello (Guz)" Date: Sat, 25 Jan 2025 10:22:53 -0300 Subject: [PATCH] feat(blogo,core): support for recovr functions --- blogo/core/core.go | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/blogo/core/core.go b/blogo/core/core.go index 3b4bb8b..2d886f9 100644 --- a/blogo/core/core.go +++ b/blogo/core/core.go @@ -161,7 +161,7 @@ func (srv *server) serveHTTPSource(w http.ResponseWriter, r *http.Request) error "Failed to get file system, handling error to ErrorHandler", ) - ok := srv.onerror.Handle(&ServeError{ + recovr, ok := srv.onerror.Handle(&ServeError{ Res: w, Req: r, Err: &SourceError{ @@ -180,9 +180,17 @@ func (srv *server) serveHTTPSource(w http.ResponseWriter, r *http.Request) error srv.onerror.Name(), ))) + return err } - return err + r, ok := recovr.(plugin.Sourcer) + + if !ok { + return err + } + + fs, err = r.Source() + srv.assert.Nil(err) } srv.files = fs @@ -228,7 +236,7 @@ func (srv *server) serveHTTPOpenFile( "Failed to open file, handling error to ErrorHandler", ) - ok := srv.onerror.Handle(&ServeError{ + recovr, ok := srv.onerror.Handle(&ServeError{ Res: w, Req: r, Err: &SourceError{ @@ -246,14 +254,18 @@ func (srv *server) serveHTTPOpenFile( srv.onerror.Name(), ))) + return nil, err } - return nil, err - r, ok := recovr.(fs.FS) + if !ok { + return nil, err } + f, err = r.Open(name) + srv.assert.Nil(err) + } return f, err @@ -284,7 +296,7 @@ func (srv *server) serveHTTPRender(file fs.File, w http.ResponseWriter, r *http. "Failed to render file, handling error to ErrorHandler", ) - ok := srv.onerror.Handle(&ServeError{ + recovr, ok := srv.onerror.Handle(&ServeError{ Res: w, Req: r, Err: &RenderError{ @@ -303,9 +315,19 @@ func (srv *server) serveHTTPRender(file fs.File, w http.ResponseWriter, r *http. err.Error(), srv.onerror.Name(), ))) + + return err } - return err + r, ok := recovr.(plugin.Renderer) + + if !ok { + return err + } + + err = r.Render(file, w) + srv.assert.Nil(err) + } return nil