diff --git a/config/config.exs b/config/config.exs index b180368..db98538 100644 --- a/config/config.exs +++ b/config/config.exs @@ -28,6 +28,11 @@ config :phoenix, :json_library, Jason config :matrix_server, MatrixServer.Repo, migration_timestamps: [type: :utc_datetime] +config :cors_plug, + origin: ["*"], + methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], + headers: ["Origin", "X-Requested-With", "Content-Type", "Accept", "Authorization"] + # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. import_config "#{Mix.env()}.exs" diff --git a/lib/matrix_server_web/controllers/info_controller.ex b/lib/matrix_server_web/controllers/info_controller.ex new file mode 100644 index 0000000..508ea43 --- /dev/null +++ b/lib/matrix_server_web/controllers/info_controller.ex @@ -0,0 +1,13 @@ +defmodule MatrixServerWeb.InfoController do + use MatrixServerWeb, :controller + + @supported_versions ["r0.6.1"] + + def versions(conn, _params) do + data = %{versions: @supported_versions} + + conn + |> put_status(200) + |> json(data) + end +end diff --git a/lib/matrix_server_web/endpoint.ex b/lib/matrix_server_web/endpoint.ex index e64ce55..8a8655f 100644 --- a/lib/matrix_server_web/endpoint.ex +++ b/lib/matrix_server_web/endpoint.ex @@ -38,5 +38,7 @@ defmodule MatrixServerWeb.Endpoint do plug Plug.MethodOverride plug Plug.Head plug Plug.Session, @session_options + plug CORSPlug + plug MatrixServerWeb.Router end diff --git a/lib/matrix_server_web/router.ex b/lib/matrix_server_web/router.ex index 550a37c..376c80a 100644 --- a/lib/matrix_server_web/router.ex +++ b/lib/matrix_server_web/router.ex @@ -12,5 +12,7 @@ defmodule MatrixServerWeb.Router do post "/register", AccountController, :register get "/register/available", AccountController, :available end + + get "/client/versions", InfoController, :versions end end diff --git a/mix.exs b/mix.exs index ae3400c..c8fa1c3 100644 --- a/mix.exs +++ b/mix.exs @@ -41,7 +41,8 @@ defmodule MatrixServer.MixProject do {:telemetry_poller, "~> 0.4"}, {:jason, "~> 1.0"}, {:plug_cowboy, "~> 2.0"}, - {:bcrypt_elixir, "~> 2.3"} + {:bcrypt_elixir, "~> 2.3"}, + {:cors_plug, "~> 2.0"} ] end diff --git a/mix.lock b/mix.lock index 423c4c8..b25f923 100644 --- a/mix.lock +++ b/mix.lock @@ -2,6 +2,7 @@ "bcrypt_elixir": {:hex, :bcrypt_elixir, "2.3.0", "6cb662d5c1b0a8858801cf20997bd006e7016aa8c52959c9ef80e0f34fb60b7a", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "2c81d61d4f6ed0e5cf7bf27a9109b791ff216a1034b3d541327484f46dd43769"}, "comeonin": {:hex, :comeonin, "5.3.2", "5c2f893d05c56ae3f5e24c1b983c2d5dfb88c6d979c9287a76a7feb1e1d8d646", [:mix], [], "hexpm", "d0993402844c49539aeadb3fe46a3c9bd190f1ecf86b6f9ebd71957534c95f04"}, "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"}, + "cors_plug": {:hex, :cors_plug, "2.0.3", "316f806d10316e6d10f09473f19052d20ba0a0ce2a1d910ddf57d663dac402ae", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ee4ae1418e6ce117fc42c2ba3e6cbdca4e95ecd2fe59a05ec6884ca16d469aea"}, "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"}, "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.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},