Current section

Files

Jump to
campaign_flow lib campaign_flow mock_server router.ex
Raw

lib/campaign_flow/mock_server/router.ex

defmodule CampaignFlow.MockServer.Router do
@moduledoc """
Plug router for the mock Campaign Flow server.
Routes requests to appropriate handlers for:
- OAuth2 token endpoint
- Referral API endpoints (create, get)
- Campaign API endpoints (get)
- Health check
"""
use Plug.Router
alias CampaignFlow.MockServer.Handlers.Campaigns
alias CampaignFlow.MockServer.Handlers.OAuth
alias CampaignFlow.MockServer.Handlers.Referrals
alias CampaignFlow.MockServer.Responses
plug(Plug.Logger, log: :debug)
plug(:match)
plug(Plug.Parsers,
parsers: [:urlencoded, :json],
pass: ["application/json", "application/x-www-form-urlencoded"],
json_decoder: Jason
)
plug(:dispatch)
# OAuth2 token endpoint
post "/oauth2/v1/token" do
OAuth.token(conn)
end
# Referral endpoints
post "/api/v2/referrals" do
Referrals.create(conn)
end
get "/api/v2/referrals/:id" do
Referrals.get(conn, id)
end
# Campaign endpoints
get "/api/v2/campaigns/:id" do
Campaigns.get(conn, id)
end
post "/api/v2/campaigns/:id/set-status" do
Campaigns.set_status(conn, id)
end
# Health check endpoint
get "/health" do
conn
|> put_resp_content_type("application/json")
|> send_resp(200, Jason.encode!(%{status: "ok", server: "campaign_flow_mock"}))
end
# Catch-all for unmatched routes
match _ do
Responses.error(conn, 404, "not_found", "Endpoint not found")
end
end