Gemini.Site behaviour (Gemini v0.2.0)

Base module for sites. Use it with use Gemini.Site. If the use call is made with the option :check_path then forward_request/2 will only be called if the URL path matches exactly. It is a good idea to enable that for "leaf" sites, i.e. sites that do not forward to other sites.

start_link receives a list with three arguments:

  • the name to register the GenServer
  • the path
  • arguments from the site-map

The server state must contain the path and path(state) must return that path.

Link to this section Summary

Callbacks

Handle/Forward request. Think of it as GenServer.handle_call/3 without the middle from argument.

Return path supplied in start_link/1 using the state.

Start site's GenServer.

Link to this section Types

Link to this type

status_decl()

Specs

status_decl() ::
  {pos_integer(), non_neg_integer()}
  | :input
  | :sensitive_input
  | :success
  | :redirect_temporary
  | :redirect_permanent
  | :temporary_failure
  | :server_unavailable
  | :cgi_error
  | :proxy_error
  | :slow_down
  | :permanent_failure
  | :not_found
  | :gone
  | :proxy_request_refused
  | :bad_request
  | :client_certificate_required
  | :certificate_not_authorised
  | :certificate_not_valid

Link to this section Functions

Link to this function

make_response(status, meta, body, attrs)

Specs

make_response(
  status :: status_decl(),
  meta :: binary() | {atom(), any()},
  body :: any(),
  attrs :: keyword() | []
) :: Gemini.Response.t()

Specs

Return two digit status tuple.

Link to this section Callbacks

Link to this callback

forward_request(request, state)

Specs

forward_request(request :: Gemini.Request.t(), state :: any()) ::
  {:reply, any(), any()}

Handle/Forward request. Think of it as GenServer.handle_call/3 without the middle from argument.

Specs

path(state :: any()) :: binary()

Return path supplied in start_link/1 using the state.

Link to this callback

start_link(list)

Specs

start_link(list()) :: GenServer.on_start()

Start site's GenServer.

  • the name to register the GenServer
  • the path
  • arguments from the site-map