Packages

An open source two way communication platform for the social sector

Current section

Files

Jump to
glific lib glific_web providers gupshup controllers user_event_controller.ex
Raw

lib/glific_web/providers/gupshup/controllers/user_event_controller.ex

defmodule GlificWeb.Providers.Gupshup.Controllers.UserEventController do
@moduledoc """
Dedicated controller to handle different types of user events requests like optin an optout form
"""
use GlificWeb, :controller
@doc false
@spec handler(Plug.Conn.t(), map(), String.t()) :: Plug.Conn.t()
def handler(conn, _params, _msg) do
json(conn, nil)
end
@doc false
@spec opted_in(Plug.Conn.t(), map()) :: Plug.Conn.t()
def opted_in(conn, params) do
{:ok, timestamp} = DateTime.from_unix(params["timestamp"], :millisecond)
get_in(params, ["payload", "phone"])
|> Glific.Contacts.contact_opted_in(conn.assigns[:organization_id], timestamp)
handler(conn, params, "Opted in handler")
end
@doc false
@spec opted_out(Plug.Conn.t(), map()) :: Plug.Conn.t()
def opted_out(conn, params) do
{:ok, timestamp} = DateTime.from_unix(params["timestamp"], :millisecond)
get_in(params, ["payload", "phone"])
|> Glific.Contacts.contact_opted_out(conn.assigns[:organization_id], timestamp)
handler(conn, params, "Opted out handler")
end
end