Skip to content

Commit

Permalink
feat(libserver): improving api names.
Browse files Browse the repository at this point in the history
  • Loading branch information
razshare committed Feb 24, 2025
1 parent 277c49c commit ab6773c
Showing 1 changed file with 56 additions and 13 deletions.
69 changes: 56 additions & 13 deletions libserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,11 @@ type Route struct {

// RouteCreate creates a route configuration from a callback function.
func RouteCreate(
callback func(server *Server, request *Request, response *Response),
callback func(
server *Server,
request *Request,
response *Response,
),
) *Route {
return &Route{
isPage: false,
Expand All @@ -529,17 +533,22 @@ func RouteCreate(
}
}

// PageRouteCreate creates a route configuration from a callback function, just like RouteCreate.
// RouteCreateWithPage creates a route configuration from a callback function, just like RouteCreate.
//
// Unlike RouteCreate, PageRouteCreate also creates a Page, which is used to automatically
// Unlike RouteCreate, RouteCreateWithPage also creates a Page, which is used to automatically
// to serve a svelte page after invoking callback.
//
// Generally speaking, you should never manually invoke SendEcho or similar functions.
//
// However, it is safe to invoke receive functions, like ReceiveHeader, ReceiveCookie, etc.
func PageRouteCreate(
func RouteCreateWithPage(
pageId string,
callback func(server *Server, request *Request, response *Response, page *Page),
callback func(
server *Server,
request *Request,
response *Response,
page *Page,
),
) *Route {
var pattern string
if strings.HasSuffix(pageId, ".svelte") {
Expand All @@ -549,7 +558,11 @@ func PageRouteCreate(
return &Route{
isPage: true,
pageId: pageId,
callback: func(server *Server, request *Request, response *Response) {
callback: func(
server *Server,
request *Request,
response *Response,
) {
page := &Page{
renderMode: RenderModeFull,
data: map[string]interface{}{},
Expand Down Expand Up @@ -615,6 +628,34 @@ func PageRouteCreate(
}
}

// RouteCreateWithPageAndHeadless creates a headless route configuration from a callback function, just like RouteCreate.
//
// Unlike RouteCreate, RouteCreateWithPageAndHeadless also creates a Page, which is used to automatically
// to serve a svelte page after invoking callback.
//
// Generally speaking, you should never manually invoke SendEcho or similar functions.
//
// However, it is safe to invoke receive functions, like ReceiveHeader, ReceiveCookie, etc.
//
// Rendering a headless page means it's automatically rendering in server mode,
// it omits the head tag, the body tag and all css.
func RouteCreateWithPageAndHeadless(
pageId string,
callback func(
server *Server,
request *Request,
response *Response,
page *Page,
),
) *Route {
return RouteCreateWithPage(pageId,
func(server *Server, request *Request, response *Response, page *Page) {
page.headless = true
callback(server, request, response, page)
},
)
}

var entryCreated = false

// ServerWithRoute registers a callback for the given pattern.
Expand Down Expand Up @@ -1290,8 +1331,11 @@ func PageCreate(
}
}

// PageHeadlessCreate creates a headless page.
func PageHeadlessCreate(
// PageCreateHeadless creates a headless page.
//
// Rendering a headless page means it's automatically rendering in server mode,
// it omits the head tag, the body tag and all css.
func PageCreateHeadless(
embeddedFileSystem embed.FS,
pageId string,
data map[string]any,
Expand Down Expand Up @@ -1392,14 +1436,14 @@ func ServerWithPage(self *Server,
page *Page,
),
) {
ServerWithRoute(self, pattern, PageRouteCreate(pageId, callback))
ServerWithRoute(self, pattern, RouteCreateWithPage(pageId, callback))
}

// ServerWithHeadlessPage maps a page route and renders it in headless mode.
// ServerWithPageAndHeadless maps a page route and renders it in headless mode.
//
// Rendering a headless page means it's automatically rendering in server mode,
// it omits the head tag, the body tag and all css.
func ServerWithHeadlessPage(
func ServerWithPageAndHeadless(
self *Server,
pattern string,
pageId string,
Expand All @@ -1411,9 +1455,8 @@ func ServerWithHeadlessPage(
),
) {
ServerWithRoute(self, pattern,
PageRouteCreate(pageId,
RouteCreateWithPageAndHeadless(pageId,
func(server *Server, request *Request, response *Response, page *Page) {
page.headless = true
callback(server, request, response, page)
},
),
Expand Down

0 comments on commit ab6773c

Please sign in to comment.