Exemples / Création d'un client Ruby

Prérequis

De nombreuses gems permettent d'utiliser le protocole OAuth.
L'exemple ci-dessous utilise la gem oauth2 et peut être lancé dans une console Ruby.

gem install oauth2

Création d'un client OAuth en Ruby

Initialisez le client OAuth pour obtenire un jeton d'accés en utilisant la méthode Client Credentials décrite dans Authentification :

require 'oauth2'

url           = "https://api.solutions-territoire.fr/"
client_id     = "z0WtGLm1f--KETSFQzqtK4EkJ7y3NBbCksV_-Spjuz0"
client_secret = "gGb1JZtOWFjzAxGCZdfRUhGNM_1r-OFlM9YCByImT44"

client = OAuth2::Client.new(client_id, client_secret, site: url, max_redirects: 0)
token  = client.client_credentials.get_token

Exemple d'utilisations du client :

Obtention d'un jeux de données :

puts datasets = token.get("/datasets").parsed["datasets"]
# {"id"=>"95ade69a-6aff-45ef-bafd-06052e5d3b86", "title"=>"Locaux de catégories 7 & 8", "version"=>3}
# {"id"=>"016ce989-3233-4025-ba95-79f89b12b83d", "title"=>"Etablissements fermé au cours du mois", "version"=>12}

puts url = token.get("/datasets/#{datasets[0]["id"]}", headers: { "Accept" => "text/csv" }).headers["location"]
# https://static.mon-territoire.fr/datasets/95ade69a-6aff-45ef-bafd-06052e5d3b86-v3.csv?Signature=6kq6XtzBt8zja2tq7S%2FJaAPy90U%3D&Expires=1566213533

Obtention de zones :

puts decoupages = token.get("/decoupages").parsed["decoupages"]
# {"id"=>"a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"", "title"=>"Zones d'activités économiques", "url"=>"/v0/decoupages/a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11"}

puts zones = token.get(decoupages[0]["url"]).parsed.dig("decoupage", "zones")
# {"id"=>"b3e2ea99-10ca-2eca-a26e-6ae91c0ab0c24", "title"=>"Zone des moulins", "url"=>"/v0/zones/b3e2ea99-10ca-2eca-a26e-6ae91c0ab0c24"}}
# {"id"=>"02c75652-4132-4ed8-8af9-8c19285e0e55", "title"=>"Zone du lac", "url"=>"/v0/zones/02c75652-4132-4ed8-8af9-8c19285e0e55"}}

puts geojson = token.get(zones[0]["url"], headers: { "Accept" => "application/geo+json" }).body
# {"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[2.2056555747985844,48.702021761507254], ...}