Send proper content-type for responses
This commit is contained in:
parent
0e2066b712
commit
dce5676a17
7 changed files with 23 additions and 12 deletions
|
@ -5,7 +5,7 @@ defmodule Mebe2.Web.Routes.Index do
|
|||
|
||||
@impl Raxx.SimpleServer
|
||||
def handle_request(%Raxx.Request{path: ["p", page]} = _req, _state) do
|
||||
Utils.render_posts(page, &post_getter/2, &Index.render/4)
|
||||
Utils.render_posts(page, &post_getter/2, &renderer/4)
|
||||
end
|
||||
|
||||
@impl Raxx.SimpleServer
|
||||
|
@ -15,7 +15,11 @@ defmodule Mebe2.Web.Routes.Index do
|
|||
|
||||
@impl Raxx.SimpleServer
|
||||
def handle_request(%Raxx.Request{} = _req, _state) do
|
||||
Utils.render_posts(&post_getter/2, &Index.render/4)
|
||||
Utils.render_posts(&post_getter/2, &renderer/4)
|
||||
end
|
||||
|
||||
defp renderer(response, posts, total, page) do
|
||||
Utils.render_template(response, Index, [posts, total, page])
|
||||
end
|
||||
|
||||
defp post_getter(first, limit),
|
||||
|
|
|
@ -49,5 +49,5 @@ defmodule Mebe2.Web.Routes.Month do
|
|||
}
|
||||
|
||||
defp renderer(year, month, response, posts, total, page),
|
||||
do: Mebe2.Web.Views.Month.render(response, year, month, posts, total, page)
|
||||
do: Utils.render_template(response, Mebe2.Web.Views.Month, [year, month, posts, total, page])
|
||||
end
|
||||
|
|
|
@ -7,7 +7,7 @@ defmodule Mebe2.Web.Routes.Page do
|
|||
def handle_request(%Raxx.Request{path: [slug]} = _req, _state) do
|
||||
with {:page, %Models.Page{} = page} <- {:page, DB.get_page(slug)} do
|
||||
Utils.html_response(200)
|
||||
|> Mebe2.Web.Views.Page.render(page)
|
||||
|> Utils.render_template(Mebe2.Web.Views.Page, [page])
|
||||
else
|
||||
_ -> Utils.render_404()
|
||||
end
|
||||
|
|
|
@ -10,7 +10,7 @@ defmodule Mebe2.Web.Routes.Post do
|
|||
{:day, {day, ""}} <- {:day, Integer.parse(d_str)},
|
||||
{:post, %Models.Post{} = post} <- {:post, DB.get_post(year, month, day, slug)} do
|
||||
Utils.html_response(200)
|
||||
|> Mebe2.Web.Views.SinglePost.render(post)
|
||||
|> Utils.render_template(Mebe2.Web.Views.SinglePost, [post])
|
||||
else
|
||||
_ -> Utils.render_404()
|
||||
end
|
||||
|
|
|
@ -28,5 +28,5 @@ defmodule Mebe2.Web.Routes.Tag do
|
|||
}
|
||||
|
||||
defp renderer(tag, response, posts, total, page),
|
||||
do: Mebe2.Web.Views.Tag.render(response, tag, posts, total, page)
|
||||
do: Utils.render_template(response, Mebe2.Web.Views.Tag, [tag, posts, total, page])
|
||||
end
|
||||
|
|
|
@ -68,7 +68,7 @@ defmodule Mebe2.Web.Routes.Utils do
|
|||
{posts, _} = post_getter.(first, limit)
|
||||
|
||||
rss_response(200)
|
||||
|> Mebe2.Web.Views.Feeds.PostList.render(posts)
|
||||
|> render_template(Mebe2.Web.Views.Feeds.PostList, [posts])
|
||||
else
|
||||
_ -> render_404()
|
||||
end
|
||||
|
@ -80,7 +80,7 @@ defmodule Mebe2.Web.Routes.Utils do
|
|||
@spec render_404() :: Raxx.Response.t()
|
||||
def render_404() do
|
||||
html_response(404)
|
||||
|> Mebe2.Web.Views.NotFound.render()
|
||||
|> render_template(Mebe2.Web.Views.NotFound)
|
||||
end
|
||||
|
||||
@doc """
|
||||
|
@ -89,8 +89,7 @@ defmodule Mebe2.Web.Routes.Utils do
|
|||
@spec html_response(integer) :: Raxx.Response.t()
|
||||
def html_response(code) when is_integer(code) do
|
||||
Raxx.response(code)
|
||||
# TODO: Fix these when Raxx doesn't crash on setting content type when using views
|
||||
# |> Raxx.set_header("content-type", "text/html; charset=utf-8")
|
||||
|> Raxx.set_header("content-type", "text/html; charset=utf-8")
|
||||
end
|
||||
|
||||
@doc """
|
||||
|
@ -99,6 +98,14 @@ defmodule Mebe2.Web.Routes.Utils do
|
|||
@spec rss_response(integer) :: Raxx.Response.t()
|
||||
def rss_response(code) when is_integer(code) do
|
||||
Raxx.response(code)
|
||||
# |> Raxx.set_header("content-type", "application/xml+rss; charset=utf-8")
|
||||
|> Raxx.set_header("content-type", "application/xml+rss; charset=utf-8")
|
||||
end
|
||||
|
||||
@doc """
|
||||
Render a template with the given args into the response.
|
||||
"""
|
||||
@spec render_template(Raxx.Response.t(), module, [any]) :: Raxx.Response.t()
|
||||
def render_template(response, template, args \\ []) do
|
||||
Raxx.set_body(response, apply(template, :html, args).data)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -43,5 +43,5 @@ defmodule Mebe2.Web.Routes.Year do
|
|||
}
|
||||
|
||||
defp renderer(year, response, posts, total, page),
|
||||
do: Mebe2.Web.Views.Year.render(response, year, posts, total, page)
|
||||
do: Utils.render_template(response, Mebe2.Web.Views.Year, [year, posts, total, page])
|
||||
end
|
||||
|
|
Reference in a new issue