Current section
Files
Jump to
Current section
Files
src/bellboy_twilio.erl
-module(bellboy_twilio).
%%% ==================================================================
%%% API
%%% ==================================================================
-export([message/1]).
%%% ==================================================================
%%% Includes
%%% ==================================================================
-include("bellboy.hrl").
%%% ==================================================================
%%% API functions
%%% ==================================================================
%% -------------------------------------------------------------------
%% @private
%% @doc
%% Twilio handler
%% @end
%% -------------------------------------------------------------------
message(#{type := send_message} = Data) ->
send_message(Data);
message(#{type := get_message} = Data) ->
get_message(Data);
message(#{type := get_messages} = Data) ->
get_messages(Data);
message(_) ->
?BAD_ARG.
%% -------------------------------------------------------------------
%% @private
%% @doc
%% Send simple SMS message
%% @end
%% -------------------------------------------------------------------
-spec send_message(Params :: maps:map()) -> {ok, Result :: maps:map()} | {error, Reason :: tuple() | bad_arg}.
send_message(#{account_sid := AID, auth_token := AT, body := B, from := F, to := T}) ->
case bellboy_utils:is_valid([is_list(AID), is_list(AT), is_list(B), is_list(F), is_list(T)]) of
true ->
BURI = "Body=" ++ http_uri:encode(B) ++ "&From=" ++ http_uri:encode(F) ++ "&To=" ++ http_uri:encode(T),
RD = #{m => post, u => ?TWILIO_URL_MSG(AID), h => #{"Authorization" => ?BASIC_AUTH(AID, AT)}, ct => "application/x-www-form-urlencoded", b => BURI},
case bellboy_utils:httpc_request(RD) of
{ok, Resp} ->
{ok, #{code => bellboy_utils:get_code(Resp), body => bellboy_utils:gen_body(bellboy_utils:get_body(Resp)), response => Resp}};
Error ->
Error
end;
false ->
?BAD_ARG
end;
send_message(_) ->
?BAD_ARG.
%% -------------------------------------------------------------------
%% @private
%% @doc
%% Get specific SMS message
%% @end
%% -------------------------------------------------------------------
-spec get_message(Params :: maps:map()) -> {ok, Result :: maps:map()} | {error, Reason :: tuple() | bad_arg}.
get_message(#{account_sid := AID, auth_token := AT, sid := SID}) when is_list(AID), is_list(AT), is_list(SID) ->
RD = #{m => get, u => ?TWILIO_URL_SPEC_MSG(AID, SID), h => #{"Authorization" => ?BASIC_AUTH(AID, AT)}},
case bellboy_utils:httpc_request(RD) of
{ok, Resp} ->
{ok, #{code => bellboy_utils:get_code(Resp), body => bellboy_utils:gen_body(bellboy_utils:get_body(Resp)), response => Resp}};
Error ->
Error
end;
get_message(_) ->
?BAD_ARG.
%% -------------------------------------------------------------------
%% @private
%% @doc
%% Get all SMS messages
%% @end
%% -------------------------------------------------------------------
-spec get_messages(Params :: maps:map()) -> {ok, Result :: maps:map()} | {error, Reason :: tuple() | bad_arg}.
get_messages(#{account_sid := AID, auth_token := AT}) when is_list(AID), is_list(AT) ->
RD = #{m => get, u => ?TWILIO_URL_MSG(AID), h => #{"Authorization" => ?BASIC_AUTH(AID, AT)}},
case bellboy_utils:httpc_request(RD) of
{ok, Resp} ->
{ok, #{code => bellboy_utils:get_code(Resp), body => bellboy_utils:gen_body(bellboy_utils:get_body(Resp)), response => Resp}};
Error ->
Error
end;
get_messages(_) ->
?BAD_ARG.