Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Udate Cowboy & phoenix config #447

Merged
merged 1 commit into from
Feb 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/cf/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ defmodule CF.Mixfile do
{:exsync, "~> 0.2", only: :dev},

# Test only
{:bypass, "~> 0.8", only: :test},
{:bypass, "~> 2.1.0", only: :test},
{:mock, "~> 0.3.1", only: :test}
]
end
Expand Down
2 changes: 1 addition & 1 deletion apps/cf_atom_feed/lib/router.ex
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ defmodule CF.AtomFeed.Router do
def start_link do
config = Application.get_env(:cf_atom_feed, CF.AtomFeed.Router)
Logger.info("Running CF.AtomFeed.Router with cowboy on port #{config[:cowboy][:port]}")
Plug.Adapters.Cowboy.http(CF.AtomFeed.Router, [], config[:cowboy])
Plug.Cowboy.http(CF.AtomFeed.Router, [], config[:cowboy])
end

get "/" do
Expand Down
4 changes: 2 additions & 2 deletions apps/cf_atom_feed/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ defmodule CF.AtomFeed.Mixfile do
[
# --- Runtime
{:atomex, "~> 0.2"},
{:cowboy, "~> 1.0"},
{:plug, "~> 1.0"},
{:cowboy, "~> 2.0"},
{:plug, "~> 1.7"},
{:kaur, "~> 1.1"},

# ---- In Umbrella
Expand Down
1 change: 1 addition & 0 deletions apps/cf_graphql/lib/resolvers/app_info.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ defmodule CF.Graphql.Resolvers.AppInfo do
def info(_, _args, _info) do
{:ok,
%{
app: "CF.Graphql",
status: "✔",
version: CF.Graphql.Application.version(),
db_version: DB.Application.version()
Expand Down
4 changes: 2 additions & 2 deletions apps/cf_graphql/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,9 @@ defmodule CF.Graphql.Mixfile do
defp deps do
[
{:phoenix, "~> 1.4.18"},
{:plug, "~> 1.0"},
{:plug, "~> 1.7"},
{:phoenix_pubsub, "~> 1.0"},
{:cowboy, "~> 1.0"},
{:cowboy, "~> 2.0"},
{:corsica, "~> 2.1"},
{:absinthe_ecto, "~> 0.1.3"},
{:absinthe_plug, "~> 1.4.1"},
Expand Down
4 changes: 0 additions & 4 deletions apps/cf_rest_api/lib/channels/user_socket.ex
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ defmodule CF.RestApi.UserSocket do
channel("statements:video:*", CF.RestApi.StatementsChannel)
channel("comments:video:*", CF.RestApi.CommentsChannel)

## Transports
transport(:websocket, Phoenix.Transports.WebSocket)
transport(:longpoll, Phoenix.Transports.LongPoll)

# Connect with token
def connect(%{"token" => token}, socket) do
case authenticate(socket, GuardianImpl, token) do
Expand Down
1 change: 1 addition & 0 deletions apps/cf_rest_api/lib/controllers/api_info_controller.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ defmodule CF.RestApi.ApiInfoController do
conn
|> put_status(:ok)
|> json(%{
app: "CF.RestApi",
status: "✔",
version: CF.Application.version(),
db_version: DB.Application.version()
Expand Down
2 changes: 1 addition & 1 deletion apps/cf_rest_api/lib/endpoint.ex
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule CF.RestApi.Endpoint do
use Phoenix.Endpoint, otp_app: :cf_rest_api

socket("/socket", CF.RestApi.UserSocket)
socket("/socket", CF.RestApi.UserSocket, websocket: true, longpoll: false)

if Application.get_env(:arc, :storage) == Arc.Storage.Local,
do: plug(Plug.Static, at: "/resources", from: "./resources", gzip: false)
Expand Down
4 changes: 2 additions & 2 deletions apps/cf_rest_api/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@ defmodule CF.RestApi.Mixfile do
defp deps do
[
{:corsica, "~> 2.1"},
{:cowboy, "~> 1.0"},
{:cowboy, "~> 2.0"},
{:gettext, "~> 0.13.1"},
{:kaur, "~> 1.1"},
{:phoenix, "~> 1.4.18", override: true},
{:phoenix_html, "~> 2.6"},
{:phoenix_pubsub, "~> 1.0"},
{:poison, "~> 3.1"},
{:scout_apm, "~> 1.0.6"},
{:plug_cowboy, "~> 1.0"},
{:plug_cowboy, "~> 2.0"},

# ---- Internal ----
{:cf, in_umbrella: true},
Expand Down
9 changes: 7 additions & 2 deletions apps/cf_rest_api/test/channels/comments_channel_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ defmodule CF.RestApi.CommentsChannelTest do
end

test "Get comments when connecting", %{comments: comments, topic: topic} do
{:ok, response, _} = subscribe_and_join(socket("", %{user_id: nil}), CommentsChannel, topic)
{:ok, response, _} =
subscribe_and_join(
socket(CF.RestApi.UserSocket, "", %{user_id: nil}),
CommentsChannel,
topic
)

assert Enum.count(response.comments) == Enum.count(comments)
end
Expand All @@ -27,7 +32,7 @@ defmodule CF.RestApi.CommentsChannelTest do
# Connect to socket
{:ok, _, socket} =
subscribe_and_join(
socket("", %{user_id: user.id}),
socket(CF.RestApi.UserSocket, "", %{user_id: user.id}),
CommentsChannel,
topic
)
Expand Down
4 changes: 2 additions & 2 deletions apps/cf_rest_api/test/channels/video_debate_channel_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ defmodule CF.RestApi.VideoDebateChannelTest do

{:ok, returned_video, socket} =
subscribe_and_join(
socket("", %{user_id: nil}),
socket(CF.RestApi.UserSocket, "", %{user_id: nil}),
VideoDebateChannel,
"video_debate:#{video.hash_id}"
)
Expand All @@ -26,7 +26,7 @@ defmodule CF.RestApi.VideoDebateChannelTest do

{:ok, _, authed_socket} =
subscribe_and_join(
socket("", %{user_id: insert(:user, %{reputation: 5000}).id}),
socket(CF.RestApi.UserSocket, "", %{user_id: insert(:user, %{reputation: 5000}).id}),
VideoDebateChannel,
topic
)
Expand Down
30 changes: 16 additions & 14 deletions apps/cf_reverse_proxy/lib/application.ex
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
defmodule CF.ReverseProxy.Application do
use Application

require Logger

def start(_type, _args) do
import Supervisor.Spec, warn: false
port = Application.get_env(:cf_reverse_proxy, :port)

websocket =
{Phoenix.Transports.WebSocket, {CF.RestApi.Endpoint, CF.RestApi.UserSocket, :websocket}}

cowboy_options = [
port: port,
dispatch: [
{:_,
[
{"/socket/websocket", Phoenix.Endpoint.CowboyWebSocket, websocket},
{:_, Plug.Adapters.Cowboy.Handler, {CF.ReverseProxy.Plug, []}}
]}
]
]
cowboy =
{Plug.Cowboy,
scheme: :http,
plug: CF.ReverseProxy.Plug,
port: port,
dispatch: [
{:_,
[
{"/socket/websocket", Phoenix.Endpoint.Cowboy2Handler, {CF.RestApi.Endpoint, []}},
{"/socket/longpoll", Phoenix.Endpoint.Cowboy2Handler, {CF.RestApi.Endpoint, []}},
{:_, Plug.Cowboy.Handler, {CF.ReverseProxy.Plug, []}}
]}
]}

cowboy = Plug.Adapters.Cowboy.child_spec(:http, CF.ReverseProxy.Plug, [], cowboy_options)
Logger.info("Running CF.ReverseProxy with cowboy on port #{port}")
opts = [strategy: :one_for_one, name: CF.ReverseProxy.Supervisor]
Supervisor.start_link([cowboy], opts)
end
Expand Down
2 changes: 1 addition & 1 deletion apps/cf_reverse_proxy/mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ defmodule CF.ReverseProxy.Mixfile do
{:cf_graphql, in_umbrella: true},
{:cf_atom_feed, in_umbrella: true},
{:phoenix, "~> 1.4.18"},
{:cowboy, "~> 1.0"},
{:cowboy, "~> 2.0"},
{:corsica, "~> 2.1"}
]
end
Expand Down
11 changes: 6 additions & 5 deletions mix.lock
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@
"bcrypt_elixir": {:hex, :bcrypt_elixir, "1.1.1", "6b5560e47a02196ce5f0ab3f1d8265db79a23868c137e973b27afef928ed8006", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "10f658be786bd2daaadcd45cc5b598da01d5bbc313da4d0e3efb2d6a511d896d"},
"bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
"burnex": {:hex, :burnex, "3.1.0", "1c1ffaab0dccd4efe80f3c3d0de61e9bb4e622fd0c52b0fccea693095e7c30b2", [:mix], [{:dns, "~> 2.2.0", [hex: :dns, repo: "hexpm", optional: false]}], "hexpm", "611af3dd131c1a5e75b367c75641c9104b0a942dfdd9767e69fbe8be883d536d"},
"bypass": {:hex, :bypass, "0.9.0", "4cedcd326eeec497e0090a73d351cbd0f11e39329ddf9095931b03da9b6dc417", [:mix], [{:cowboy, "~> 1.0 or ~> 2.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ede64318ac7bff9126d83a962a1605f4fd407fa0d1a6c844b3b012773d6beadd"},
"bypass": {:hex, :bypass, "2.1.0", "909782781bf8e20ee86a9cabde36b259d44af8b9f38756173e8f5e2e1fabb9b1", [:mix], [{:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.0", [hex: :plug_cowboy, repo: "hexpm", optional: false]}, {:ranch, "~> 1.3", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "d9b5df8fa5b7a6efa08384e9bbecfe4ce61c77d28a4282f79e02f1ef78d96b80"},
"certifi": {:hex, :certifi, "2.12.0", "2d1cca2ec95f59643862af91f001478c9863c2ac9cb6e2f89780bfd8de987329", [:rebar3], [], "hexpm", "ee68d85df22e554040cdb4be100f33873ac6051387baf6a8f6ce82272340ff1c"},
"combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"},
"comeonin": {:hex, :comeonin, "4.1.2", "3eb5620fd8e35508991664b4c2b04dd41e52f1620b36957be837c1d7784b7592", [:mix], [{:argon2_elixir, "~> 1.2", [hex: :argon2_elixir, repo: "hexpm", optional: true]}, {:bcrypt_elixir, "~> 0.12.1 or ~> 1.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: true]}, {:pbkdf2_elixir, "~> 0.12", [hex: :pbkdf2_elixir, repo: "hexpm", optional: true]}], "hexpm", "d8700a0ca4dbb616c22c9b3f6dd539d88deaafec3efe66869d6370c9a559b3e9"},
"connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
"corsica": {:hex, :corsica, "2.1.3", "dccd094ffce38178acead9ae743180cdaffa388f35f0461ba1e8151d32e190e6", [:mix], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "616c08f61a345780c2cf662ff226816f04d8868e12054e68963e95285b5be8bc"},
"cowboy": {:hex, :cowboy, "1.1.2", "61ac29ea970389a88eca5a65601460162d370a70018afe6f949a29dca91f3bb0", [:rebar3], [{:cowlib, "~> 1.0.2", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.3.2", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "f4763bbe08233eceed6f24bc4fcc8d71c17cfeafa6439157c57349aa1bb4f17c"},
"cowlib": {:hex, :cowlib, "1.0.2", "9d769a1d062c9c3ac753096f868ca121e2730b9a377de23dec0f7e08b1df84ee", [:make], [], "hexpm", "db622da03aa039e6366ab953e31186cc8190d32905e33788a1acb22744e6abd2"},
"cowboy": {:hex, :cowboy, "2.11.0", "356bf784599cf6f2cdc6ad12fdcfb8413c2d35dab58404cf000e1feaed3f5645", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "0fa395437f1b0e104e0e00999f39d2ac5f4082ac5049b67a5b6d56ecc31b1403"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.3.1", "ebd1a1d7aff97f27c66654e78ece187abdc646992714164380d8a041eda16754", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3a6efd3366130eab84ca372cbd4a7d3c3a97bdfcfb4911233b035d117063f0af"},
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
"credo": {:hex, :credo, "1.1.0", "e0c07b2fd7e2109495f582430a1bc96b2c71b7d94c59dfad120529f65f19872f", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "7338d04b30026e30adbcaaedbf0eb7e4d749510d90c2708ff8cc100fa9c8291f"},
"crontab": {:hex, :crontab, "1.1.10", "dc9bb1f4299138d47bce38341f5dcbee0aa6c205e864fba7bc847f3b5cb48241", [:mix], [{:ecto, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "1347d889d1a0eda997990876b4894359e34bfbbd688acbb0ba28a2795ca40685"},
"csv": {:hex, :csv, "1.4.4", "992f2e1418849a326fd1d9287801fa2d86091db4f9611f60781da6d236f64cd4", [:mix], [{:parallel_stream, "~> 1.0.4", [hex: :parallel_stream, repo: "hexpm", optional: false]}], "hexpm", "12c0d07bcf00b41a9b3da1e9cf52eb05c04cb9ed1714b1ae2209d0d41b19af3c"},
Expand Down Expand Up @@ -76,13 +77,13 @@
"phoenix_html": {:hex, :phoenix_html, "2.11.2", "86ebd768258ba60a27f5578bec83095bdb93485d646fc4111db8844c316602d6", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "2fe8543036a9cb2103efe26c18874512dc0e005afba60dbfe90aa56e27c198a2"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "1.1.2", "496c303bdf1b2e98a9d26e89af5bba3ab487ba3a3735f74bf1f4064d2a845a3e", [:mix], [], "hexpm", "1f13f9f0f3e769a667a6b6828d29dec37497a082d195cc52dbef401a9b69bf38"},
"plug": {:hex, :plug, "1.15.3", "712976f504418f6dff0a3e554c40d705a9bcf89a7ccef92fc6a5ef8f16a30a97", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "cc4365a3c010a56af402e0809208873d113e9c38c401cabd88027ef4f5c01fd2"},
"plug_cowboy": {:hex, :plug_cowboy, "1.0.0", "2e2a7d3409746d335f451218b8bb0858301c3de6d668c3052716c909936eb57a", [:mix], [{:cowboy, "~> 1.0", [hex: :cowboy, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "01d201427a8a1f4483be2465a98b45f5e82263327507fe93404a61c51eb9e9a8"},
"plug_cowboy": {:hex, :plug_cowboy, "2.6.2", "753611b23b29231fb916b0cdd96028084b12aff57bfd7b71781bd04b1dbeb5c9", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "951ed2433df22f4c97b85fdb145d4cee561f36b74854d64c06d896d7cd2921a7"},
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
"poison": {:hex, :poison, "3.1.0", "d9eb636610e096f86f25d9a46f35a9facac35609a7591b3be3326e99a0484665", [:mix], [], "hexpm", "fec8660eb7733ee4117b85f55799fd3833eb769a6df71ccf8903e8dc5447cfce"},
"poolboy": {:hex, :poolboy, "1.5.2", "392b007a1693a64540cead79830443abf5762f5d30cf50bc95cb2c1aaafa006b", [:rebar3], [], "hexpm", "dad79704ce5440f3d5a3681c8590b9dc25d1a561e8f5a9c995281012860901e3"},
"postgrex": {:hex, :postgrex, "0.17.4", "5777781f80f53b7c431a001c8dad83ee167bcebcf3a793e3906efff680ab62b3", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "6458f7d5b70652bc81c3ea759f91736c16a31be000f306d3c64bcdfe9a18b3cc"},
"quantum": {:hex, :quantum, "2.3.3", "83f565de81ac43b8fda4dd4266b209eaed29545d1c41e17aa6b75b08736c80f6", [:mix], [{:calendar, "~> 0.17", [hex: :calendar, repo: "hexpm", optional: true]}, {:crontab, "~> 1.1", [hex: :crontab, repo: "hexpm", optional: false]}, {:gen_stage, "~> 0.12", [hex: :gen_stage, repo: "hexpm", optional: false]}, {:swarm, "~> 3.3", [hex: :swarm, repo: "hexpm", optional: false]}, {:timex, "~> 3.1", [hex: :timex, repo: "hexpm", optional: true]}], "hexpm", "01a63089a17f00f360ddad6c2f068c26d4e280999c2a6c2bce170d0bd6b2bd2e"},
"ranch": {:hex, :ranch, "1.3.2", "e4965a144dc9fbe70e5c077c65e73c57165416a901bd02ea899cfd95aa890986", [:rebar3], [], "hexpm", "6e56493a862433fccc3aca3025c946d6720d8eedf6e3e6fb911952a7071c357f"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"scout_apm": {:hex, :scout_apm, "1.0.7", "0ca260f2c7f3c29bf6a5b361e90339bdce0a5f3ae0cf7b0ce166bfb22eefb89c", [:mix], [{:approximate_histogram, "~>0.1.1", [hex: :approximate_histogram, repo: "hexpm", optional: false]}, {:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:plug, "~>1.0", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.0 or ~> 0.3.0", [hex: :telemetry, repo: "hexpm", optional: true]}], "hexpm", "a4a3c8318fb84e4586e68fcd7e889c5bfe17c1caa218cc6f333fb0e4c0ff4ec1"},
"scrivener": {:hex, :scrivener, "2.7.2", "1d913c965ec352650a7f864ad7fd8d80462f76a32f33d57d1e48bc5e9d40aba2", [:mix], [], "hexpm", "7866a0ec4d40274efbee1db8bead13a995ea4926ecd8203345af8f90d2b620d9"},
"scrivener_ecto": {:hex, :scrivener_ecto, "2.7.0", "cf64b8cb8a96cd131cdbcecf64e7fd395e21aaa1cb0236c42a7c2e34b0dca580", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:scrivener, "~> 2.4", [hex: :scrivener, repo: "hexpm", optional: false]}], "hexpm", "e809f171687806b0031129034352f5ae44849720c48dd839200adeaf0ac3e260"},
Expand Down
Loading