Packages

Inofficial Erlang/OTP client application for the official DeepL API Version 2

Current section

Files

Jump to
deeperl src deeperl_client.erl
Raw

src/deeperl_client.erl

-module(deeperl_client).
-export([
call/2
]).
call(AuthKey, {{Method, RequestData}, ResultFun}) ->
Request = case RequestData of
{Route, Headers, ContentType, Body} ->
{url(AuthKey, Route), Headers ++ headers(AuthKey), ContentType, Body};
{Route, Headers} -> {url(AuthKey, Route), Headers ++ headers(AuthKey)};
{Route} -> {url(AuthKey, Route), headers(AuthKey)}
end,
{ok, Response} = httpc:request(Method, Request, [], []),
{{_, StatusCode, StatusMessage}, _, ResponseBody} = Response,
ResultFun({StatusCode, StatusMessage}, ResponseBody).
host(AuthKey) ->
case string:right(AuthKey, 3) of
":fx" -> "api-free.deepl.com";
_ -> "api.deepl.com"
end.
url(AuthKey, Route) ->
"https://" ++ host(AuthKey) ++ Route.
headers(AuthKey) ->
[
{"Authorization", "DeepL-Auth-Key " ++ AuthKey},
{"User-Agent", "deeperl/dev"}
].