Packages

This package is used for learning purposes on how to use 'mix' and 'hex' for sharing elixir code. Do NOT waste your time here. The License is MIT, but the project uses a private api.

Current section

Files

Jump to
cape lib Arpas REST Esri permesso.ex
Raw

lib/Arpas/REST/Esri/permesso.ex

defmodule Arpas.REST.Esri.Permesso do
alias Arpas.REST.Esri.Env
alias Cape.Generico, as: Gen
defstruct [:token, :valido_da, :scade, user: :no_token]
def completa(my_token) do
adesso = DateTime.now!("Etc/UTC")
finisce = my_token["expires_in"]
scadenza = DateTime.add(adesso, finisce, :second)
my_token = Map.put(my_token, "log_now", adesso)
Map.put(my_token, "scade", scadenza)
end
def users do
[:no_token, :alai, :idro]
end
@doc """
Restituisce token per accedere ad AGOL
:idro
:alai
"""
def token(:idro), do: token(Env.id_idro(), Env.secret_idro())
def token(:alai), do: token(Env.id(), Env.secret())
def token(), do: token(:idro)
def token(id, secret, expiration \\ "21600") do
url = Env.token_url()
payload =
"client_id=#{id}&client_secret=#{secret}&grant_type=client_credentials&expiration=#{expiration}"
case Gen.post(url, payload) do
{:error, reason} ->
IO.inspect(reason)
{:error, reason}
my_token ->
completa(my_token)
end
end
def get_access_token(log_as \\ :idro) do
token(log_as)
|> Map.get("access_token")
end
def add_token(log_as) do
case log_as do
:no_token ->
""
_user ->
user_token = get_access_token(log_as)
"token=#{user_token}"
end
end
end