Update to latest deps

This commit is contained in:
Mikko Ahlroth 2020-04-04 23:05:31 +03:00
parent f29aaffefb
commit 0ff7598679
9 changed files with 127 additions and 84 deletions

View file

@ -19,7 +19,7 @@ defmodule Mebe2.Application do
# List all child processes to be supervised
children = [
Mebe2.Engine.Worker.child_spec(name: Mebe2.Engine.Worker),
{Mebe2.Web.Router, [[], [port: port]]}
{Mebe2.Web.Server, [port: port, cleartext: true]}
]
# See https://hexdocs.pm/elixir/Supervisor.html

View file

@ -1,26 +1,32 @@
defmodule Mebe2.Web.Middleware.Archives do
require Logger
@behaviour Raxx.Middleware
@month_archives_key :mebe2_month_archives
@tag_archives_key :mebe2_tag_archives
defmacro __using__(_opts) do
quote do
@before_compile unquote(__MODULE__)
end
@impl true
def process_head(request, state, inner_server) do
put_archives()
{parts, inner_server} = Raxx.Server.handle_head(inner_server, request)
{parts, state, inner_server}
end
defmacro __before_compile__(_env) do
quote do
defoverridable Raxx.Server
@impl true
def process_tail(tail, state, inner_server) do
{parts, inner_server} = Raxx.Server.handle_tail(inner_server, tail)
{parts, state, inner_server}
end
@impl Raxx.Server
def handle_head(head, config) do
unquote(__MODULE__).put_archives()
@impl true
def process_data(data, state, inner_server) do
{parts, inner_server} = Raxx.Server.handle_data(inner_server, data)
{parts, state, inner_server}
end
super(head, config)
end
end
@impl true
def process_info(info, state, inner_server) do
{parts, inner_server} = Raxx.Server.handle_info(inner_server, info)
{parts, state, inner_server}
end
@doc """

View file

@ -1,40 +1,35 @@
defmodule Mebe2.Web.Middleware.RequestTime do
require Logger
@behaviour Raxx.Middleware
@timer_key :mebe2_request_started
@timer_cookie_name "mebe2-request-timer"
defmacro __using__(_opts) do
quote do
@before_compile unquote(__MODULE__)
end
@impl true
def process_head(request, state, inner_server) do
put_response_timer()
{parts, inner_server} = Raxx.Server.handle_head(inner_server, request)
{parts, state, inner_server}
end
defmacro __before_compile__(_env) do
quote do
defoverridable Raxx.Server
@impl Raxx.Server
def handle_head(head, config) do
unquote(__MODULE__).put_response_timer()
super(head, config)
|> unquote(__MODULE__).process_response()
end
end
@impl true
def process_tail(tail, state, inner_server) do
{parts, inner_server} = Raxx.Server.handle_tail(inner_server, tail)
parts = modify_response_parts(parts, state)
{parts, state, inner_server}
end
@doc false
def process_response(response = %Raxx.Response{}) do
add_timer_cookie(response)
@impl true
def process_data(data, state, inner_server) do
{parts, inner_server} = Raxx.Server.handle_data(inner_server, data)
{parts, state, inner_server}
end
def process_response({[response = %Raxx.Response{} | parts], state}) do
{[add_timer_cookie(response) | parts], state}
end
def process_response(reaction) do
reaction
@impl true
def process_info(info, state, inner_server) do
{parts, inner_server} = Raxx.Server.handle_info(inner_server, info)
{parts, state, inner_server}
end
@spec put_response_timer() :: :ok
@ -43,8 +38,20 @@ defmodule Mebe2.Web.Middleware.RequestTime do
:ok
end
defp modify_response_parts(parts, :disengage) do
parts
end
defp modify_response_parts(parts, :engage) do
Enum.flat_map(parts, &do_handle_response_part(&1))
end
defp do_handle_response_part(response = %Raxx.Response{}) do
[add_timer_cookie(response)]
end
@spec add_timer_cookie(Raxx.Response.t()) :: Raxx.Response.t()
def add_timer_cookie(%Raxx.Response{} = response) do
defp add_timer_cookie(%Raxx.Response{} = response) do
old_time = Process.get(@timer_key)
diff = get_time() - old_time

View file

@ -1,13 +1,9 @@
defmodule Mebe2.Web.Router do
use Ace.HTTP.Service, port: 2142, cleartext: true
use Raxx.Server
use Raxx.Logger
use Mebe2.Web.Middleware.RequestTime
use Raxx.Static, "../../priv/static"
use Mebe2.Web.Middleware.Archives
use Raxx.Router
alias Mebe2.Web.Routes
use Raxx.Router, [
section([{Raxx.Logger, level: :debug}], [
{%{method: :GET, path: ["tag", _tag, "p", _page]}, Routes.Tag},
{%{method: :GET, path: ["tag", _tag, "feed"]}, Routes.Tag},
{%{method: :GET, path: ["tag", _tag]}, Routes.Tag},
@ -23,5 +19,5 @@ defmodule Mebe2.Web.Router do
{%{method: :GET, path: [_slug]}, Routes.Page},
{%{method: :GET, path: []}, Routes.Index},
{_, Routes.NotFound}
]
])
end

31
lib/web/server.ex Normal file
View file

@ -0,0 +1,31 @@
defmodule Mebe2.Web.Server do
@files Raxx.Static.setup(source: Path.expand("priv/static"))
def child_spec(server_options) do
{:ok, port} = Keyword.fetch(server_options, :port)
%{
id: {__MODULE__, port},
start: {__MODULE__, :start_link, [server_options]},
type: :supervisor
}
end
def init(init_arg) do
{:ok, init_arg}
end
def start_link(server_options) do
stack =
Raxx.Stack.new(
[
{Raxx.Static, @files},
{Mebe2.Web.Middleware.RequestTime, []},
{Mebe2.Web.Middleware.Archives, []}
],
{Mebe2.Web.Router, []}
)
Ace.HTTP.Service.start_link(stack, server_options)
end
end

View file

@ -1,5 +1,5 @@
defmodule Mebe2.Web.Views.BaseLayout do
use Raxx.Layout,
use Raxx.View.Layout,
layout: "base_layout.html.eex"
alias Mebe2.Web.Views.SinglePost

View file

@ -1,4 +1,4 @@
defmodule Mebe2.Web.Views.Feeds.BaseLayout do
use Raxx.Layout,
use Raxx.View.Layout,
layout: "base_layout.xml.eex"
end

25
mix.exs
View file

@ -4,8 +4,8 @@ defmodule Mebe2.MixProject do
def project do
[
app: :mebe_2,
version: "0.2.1",
elixir: "~> 1.7",
version: "0.3.0",
elixir: "~> 1.10",
start_permanent: Mix.env() == :prod,
deps: deps()
]
@ -22,16 +22,17 @@ defmodule Mebe2.MixProject do
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:earmark, "~> 1.2.5"},
{:raxx, "~> 0.17.2"},
{:raxx_static, "~> 0.7.0"},
{:eex_html, "~> 0.2.0"},
{:ace, "~> 0.18.0"},
{:calendar, "~> 0.17.4"},
{:ex2ms, "~> 1.5.0"},
{:mbu, "~> 3.0.0", runtime: false},
{:exsync, "~> 0.2.3", only: :dev},
{:distillery, "~> 2.0"}
{:earmark, "~> 1.4"},
{:raxx, "~> 1.1"},
{:raxx_static, "~> 0.8.3"},
{:raxx_view, "~> 0.1.7"},
{:raxx_logger, "~> 0.2.2"},
{:eex_html, "~> 1.0"},
{:ace, "~> 0.18.10"},
{:calendar, "~> 1.0"},
{:ex2ms, "~> 1.6"},
{:mbu, "~> 3.0", runtime: false},
{:exsync, "~> 0.2.4", only: :dev}
]
end
end

View file

@ -1,27 +1,29 @@
%{
"ace": {:hex, :ace, "0.18.0", "a9d36859288797b41cec594a0b79079f1c655b2cec6001ff3ec5cd9b3ab0199c", [:mix], [{:hpack, "~> 0.2.3", [hex: :hpack_erl, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm"},
"ace": {:hex, :ace, "0.18.10", "b471853b9da7acc1bd8df73749db832f99eef8555bab7d90de3854bda93b1dc8", [:mix], [{:hpack, "~> 0.2.3", [hex: :hpack_erl, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "73994932c92e92749c697690eed842b4733c4e78719d0f4a547c1656a189858f"},
"artificery": {:hex, :artificery, "0.2.6", "f602909757263f7897130cbd006b0e40514a541b148d366ad65b89236b93497a", [:mix], [], "hexpm"},
"calendar": {:hex, :calendar, "0.17.4", "22c5e8d98a4db9494396e5727108dffb820ee0d18fed4b0aa8ab76e4f5bc32f1", [:mix], [{:tzdata, "~> 0.5.8 or ~> 0.1.201603", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm"},
"certifi": {:hex, :certifi, "2.4.2", "75424ff0f3baaccfd34b1214184b6ef616d89e420b258bb0a5ea7d7bc628f7f0", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm"},
"calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"},
"certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"},
"cookie": {:hex, :cookie, "0.1.1", "89438362ee0f0ed400e9f076d617d630f82d682e3fbcf767072a46a6e1ed5781", [:mix], [], "hexpm"},
"distillery": {:hex, :distillery, "2.0.12", "6e78fe042df82610ac3fa50bd7d2d8190ad287d120d3cd1682d83a44e8b34dfb", [:mix], [{:artificery, "~> 0.2", [hex: :artificery, repo: "hexpm", optional: false]}], "hexpm"},
"earmark": {:hex, :earmark, "1.2.6", "b6da42b3831458d3ecc57314dff3051b080b9b2be88c2e5aa41cd642a5b044ed", [:mix], [], "hexpm"},
"eex_html": {:hex, :eex_html, "0.2.0", "7f9da3e8ec2ecda2658a0443c65321e161c7c89897f2011e3d8a70f4f68341cb", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm"},
"ex2ms": {:hex, :ex2ms, "1.5.0", "19e27f9212be9a96093fed8cdfbef0a2b56c21237196d26760f11dfcfae58e97", [:mix], [], "hexpm"},
"exsync": {:hex, :exsync, "0.2.3", "a1ac11b4bd3808706003dbe587902101fcc1387d9fc55e8b10972f13a563dd15", [:mix], [{:file_system, "~> 0.2", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm"},
"file_system": {:hex, :file_system, "0.2.6", "fd4dc3af89b9ab1dc8ccbcc214a0e60c41f34be251d9307920748a14bf41f1d3", [:mix], [], "hexpm"},
"hackney": {:hex, :hackney, "1.14.3", "b5f6f5dcc4f1fba340762738759209e21914516df6be440d85772542d4a5e412", [:rebar3], [{:certifi, "2.4.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "1.0.2", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.4", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm"},
"hpack": {:hex, :hpack_erl, "0.2.3", "17670f83ff984ae6cd74b1c456edde906d27ff013740ee4d9efaa4f1bf999633", [:rebar3], [], "hexpm"},
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
"earmark": {:hex, :earmark, "1.4.3", "364ca2e9710f6bff494117dbbd53880d84bebb692dafc3a78eb50aa3183f2bfd", [:mix], [], "hexpm", "8cf8a291ebf1c7b9539e3cddb19e9cef066c2441b1640f13c34c1d3cfc825fec"},
"eex_html": {:hex, :eex_html, "1.0.0", "c88020b584d5bfc48ef6c18176af2cfed558225fc5290b435e73119b8ce98ce0", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}], "hexpm", "7e8c0fa7228f69b30392905cd3551b38b5c8ba58c3ae4a0a9cfe7aa22fc15d32"},
"ex2ms": {:hex, :ex2ms, "1.6.0", "f39bbd9ff1b0f27b3f707bab2d167066dd8965e7df1149b962d94c74615d0e09", [:mix], [], "hexpm", "0d1ab5e08421af5cd69146efb408dbb1ff77f38a2f4df5f086f2512dc8cf65bf"},
"exsync": {:hex, :exsync, "0.2.4", "5cdc824553e0f4c4bf60018a9a6bbd5d3b51f93ef8401a0d8545f93127281d03", [:mix], [{:file_system, "~> 0.2", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "f7622d8bb98abbe473aa066ae46f91afdf7a5346b8b89728404f7189d2e80896"},
"file_system": {:hex, :file_system, "0.2.8", "f632bd287927a1eed2b718f22af727c5aeaccc9a98d8c2bd7bff709e851dc986", [:mix], [], "hexpm", "97a3b6f8d63ef53bd0113070102db2ce05352ecf0d25390eb8d747c2bde98bca"},
"hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"},
"hpack": {:hex, :hpack_erl, "0.2.3", "17670f83ff984ae6cd74b1c456edde906d27ff013740ee4d9efaa4f1bf999633", [:rebar3], [], "hexpm", "06f580167c4b8b8a6429040df36cc93bba6d571faeaec1b28816523379cbb23a"},
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"},
"jason": {:hex, :jason, "1.1.2", "b03dedea67a99223a2eaf9f1264ce37154564de899fd3d8b9a21b1a6fd64afe7", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm"},
"mbu": {:hex, :mbu, "3.0.0", "a00c3358cfdd5d5872466abd3580f962e86cd87db9554046f9206ac77fcdc70c", [:mix], [{:file_system, "~> 0.2.4", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm"},
"mime": {:hex, :mime, "1.3.0", "5e8d45a39e95c650900d03f897fbf99ae04f60ab1daa4a34c7a20a5151b7a5fe", [:mix], [], "hexpm"},
"mimerl": {:hex, :mimerl, "1.0.2", "993f9b0e084083405ed8252b99460c4f0563e41729ab42d9074fd5e52439be88", [:rebar3], [], "hexpm"},
"parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm"},
"raxx": {:hex, :raxx, "0.17.2", "0666b48594a68ad3c92b00feab550bff28be68fc4f3b419abda15d63f61bf8b3", [:mix], [{:cookie, "~> 0.1.0", [hex: :cookie, repo: "hexpm", optional: false]}, {:eex_html, "~> 0.1.1 or ~> 0.2.0", [hex: :eex_html, repo: "hexpm", optional: false]}], "hexpm"},
"raxx_static": {:hex, :raxx_static, "0.7.0", "0ab6f0ce89ab2cc6a7bd6408607b15095509cf4eef6b0ad05fa5f49b0b4b0db1", [:mix], [{:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.4", "f0eafff810d2041e93f915ef59899c923f4568f4585904d010387ed74988e77b", [:make, :mix, :rebar3], [], "hexpm"},
"tzdata": {:hex, :tzdata, "0.5.19", "7962a3997bf06303b7d1772988ede22260f3dae1bf897408ebdac2b4435f4e6a", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"},
"mbu": {:hex, :mbu, "3.0.0", "a00c3358cfdd5d5872466abd3580f962e86cd87db9554046f9206ac77fcdc70c", [:mix], [{:file_system, "~> 0.2.4", [hex: :file_system, repo: "hexpm", optional: false]}], "hexpm", "562f2be19784644ed3e4077df64c936d5bcd3d74b6faa6990bc5587502b073b6"},
"metrics": {:hex, :metrics, "1.0.1", "25f094dea2cda98213cecc3aeff09e940299d950904393b2a29d191c346a8486", [:rebar3], [], "hexpm", "69b09adddc4f74a40716ae54d140f93beb0fb8978d8636eaded0c31b6f099f16"},
"mime": {:hex, :mime, "1.3.1", "30ce04ab3175b6ad0bdce0035cba77bba68b813d523d1aac73d9781b4d193cf8", [:mix], [], "hexpm", "6cbe761d6a0ca5a31a0931bf4c63204bceb64538e664a8ecf784a9a6f3b875f1"},
"mimerl": {:hex, :mimerl, "1.2.0", "67e2d3f571088d5cfd3e550c383094b47159f3eee8ffa08e64106cdf5e981be3", [:rebar3], [], "hexpm", "f278585650aa581986264638ebf698f8bb19df297f66ad91b18910dfc6e19323"},
"parse_trans": {:hex, :parse_trans, "3.3.0", "09765507a3c7590a784615cfd421d101aec25098d50b89d7aa1d66646bc571c1", [:rebar3], [], "hexpm", "17ef63abde837ad30680ea7f857dd9e7ced9476cdd7b0394432af4bfc241b960"},
"raxx": {:hex, :raxx, "1.1.0", "d6a03143a91f8092c0be1ec555075c76c8d680601236de706f020d17abcf8b16", [:mix], [], "hexpm", "58fdc4b62127890dfe7129a7e372b624411a7623f688bde9e98ff2af3fd9cb46"},
"raxx_logger": {:hex, :raxx_logger, "0.2.2", "51bbce9371298e7329de028fe13cf050bf59547bc8f1926910d479ba4b31c4b4", [:mix], [{:raxx, "~> 0.17.5 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "862e4cae2b98a3aa579bbf8952b496ee265b378ebcd079ccb6c9e269a3dbf45e"},
"raxx_static": {:hex, :raxx_static, "0.8.3", "54022edeba731fa82f8c16fffe8a0c3f36bf55808aba7c3043922cb6b2951a1c", [:mix], [{:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.0 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "c3f814dd82953b05b5344a4b16deb7199b79061a5e72126ec3f5cd42aebbacc8"},
"raxx_view": {:hex, :raxx_view, "0.1.7", "8e7edeafaa3d59743f24ac7684852040e9634b9882dcd6d17b5e1e926b4ed729", [:mix], [{:eex_html, "~> 0.2.1 or ~> 1.0", [hex: :eex_html, repo: "hexpm", optional: false]}, {:raxx, "~> 0.17.6 or ~> 0.18.0 or ~> 1.0", [hex: :raxx, repo: "hexpm", optional: false]}], "hexpm", "d1e9e18000ae31a3c08be8cdca66dc338dc9bf9d2428ce6f589f389e5bd8789a"},
"ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"},
"tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"},
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"},
}