Finbits/casex

doesnt seem to work on phoenix 1.7

Opened this issue · 0 comments

config.exs

config :phoenix, :format_encoders, json: Casex.CamelCaseEncoder

router.ex

  pipeline :api do
    plug :accepts, ["json"]
    plug Casex.CamelCaseDecoderPlug
    plug CoachCloudWeb.Plugs.APIAuthPlug, otp_app: :coach_cloud
    plug OpenApiSpex.Plug.PutApiSpec, module: CoachCloudWeb.ApiSpec
  end


  scope "/api/v1", CoachCloudWeb.Api.V1, as: :api_v1 do
    pipe_through :api
    get "/auth/:provider/new", AuthorizationController, :new
  end

AuthorizationController

  def new(conn, %{"provider" => provider}) do
    conn
    |> Plug.authorize_url(provider, redirect_uri(conn))
    |> case do
      {:ok, url, conn} ->
        json(conn, %{data: %{url: url, session_params: conn.private[:pow_assent_session_params]}})

      {:error, _error, conn} ->
        conn
        |> put_status(:internal_server_error)
        |> json(%{
          error: %{status: :internal_server_error, message: "An unexpected error occurred"}
        })
    end
  end

output:

{
  "data": {
      "session_params": { # should be sessionParams if i understand correctly)
          "state": "55f939d577bc2bafc66ab9010d747f7cae7737238d374"
      },
      "url": "https://accounts.google.com/o/oauth2/v2/auth?client_id=148671880998-4lrl8g6k6lla4tsiljne9bhmsu921iqr.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Fauth%2Fgoogle%2Fcallback&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&state=55f939d577bc2bafc66ab9010d747f7cae7737238d374"
  }
}