Current section
Files
Jump to
Current section
Files
src/gleamcms_httpc_ffi.erl
-module(gleamcms_httpc_ffi).
-export([post/3, get_env/1, shell_exec/1]).
shell_exec(Command) ->
case os:cmd(binary_to_list(Command)) of
Output -> {ok, list_to_binary(Output)}
end.
post(Url, Headers, Body) ->
inets:start(),
ssl:start(),
UrlStr = binary_to_list(Url),
HeadersList = [{binary_to_list(K), binary_to_list(V)} || {K, V} <- Headers],
BodyStr = binary_to_list(Body),
ContentType = "application/json",
case httpc:request(post, {UrlStr, HeadersList, ContentType, BodyStr}, [], []) of
{ok, {{_Version, 200, _Reason}, _RespHeaders, RespBody}} ->
{ok, list_to_binary(RespBody)};
{ok, {{_Version, Status, Reason}, _RespHeaders, RespBody}} ->
{error, list_to_binary(io_lib:format("HTTP ~p: ~s - ~s", [Status, Reason, RespBody]))};
{error, Reason} ->
{error, list_to_binary(io_lib:format("Network error: ~p", [Reason]))}
end.
get_env(Name) ->
case os:getenv(binary_to_list(Name)) of
false -> {error, nil};
Val -> {ok, list_to_binary(Val)}
end.