Current section
Files
Jump to
Current section
Files
src/network.erl
-module(network).
-export([request/3]).
normalize_api() ->
Url = application:get_env(statsig, statsig_api, "https://statsigapi.net/v1/"),
TrailingSlash = string:find(Url, "/", trailing),
case TrailingSlash of
"/" -> Url;
_Other -> Url ++ "/"
end.
request(ApiKey, Endpoint, Input) ->
Api = normalize_api(),
ClientModule = application:get_env(statsig, http_client, hackney_client),
RequestHeaders =
[
{"STATSIG-API-KEY", ApiKey},
{"STATSIG-CLIENT-TIME", utils:get_timestamp()},
{"STATSIG-SDK-TYPE", utils:get_sdk_type()},
{"STATSIG-SDK-VERSION", utils:get_sdk_version()},
{"Content-Type", <<"application/json">>}
],
RequestBody =
jiffy:encode(
maps:put(<<"statsigMetadata">>, utils:get_statsig_metadata(), Input)
),
case ClientModule:request(post, Api ++ Endpoint, RequestBody, RequestHeaders) of
{ok, #{status_code := StatusCode, body := Body}} ->
if
StatusCode < 300 ->
Body;
true -> false
end;
{error, _} -> false;
true -> false
end.