Created
November 28, 2015 10:30
-
-
Save anonymous/6213bcb4a5a7d2333eaa to your computer and use it in GitHub Desktop.
class Ruby permettant l'accès à l'API TISSEO
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/ruby -w | |
# coding: UTF-8 | |
=begin | |
API TISSEO pour le langage Ruby | |
auteur : Marc Quinton / décembre 2015 ; licence MIT | |
version : 0.1 ; toute contribution est bienvenue. | |
url: https://gist.github.com/ | |
key-words: toulouse, tisseo, ruby, rest | |
Tisséo est la marque commerciale du réseau de transports en commun de Toulouse et sa région. | |
Tisséo publie sur un serveur dédié (*1) des données permettant de réaliser | |
des applications liées aux transports en commun. Ces données sont publiées sous forme | |
de web-services et sont interrogeables en s'appuyant sur le format REST (*2). | |
L'API est abondament décrite sur le site (*3). | |
Cette initiative s'incrit dans le mouvement Open Data pour laquelle, la communauté urbaine | |
de Toulouse est partie prenante (*4). | |
L'API Tisséo possède les caractéristiques suivantes : | |
- l'API est versionnée ; la version en cours au 11/2015 est la v1 | |
- les requetes se font généralement avec un GET, via le protocole REST, | |
- afin d'interroger le serveur, vous devrez demander une clé d'accès (*5). Elle se présente sous | |
cette forme : 'xxxxxxxx-yyyy-zzzz-kkkk-vvvvvvvvvvvv' ; cette clé vous sera confiée à titre | |
privé. Vous prendrez soin de lire le chapitre 2.2 et suivant, concernant les conditions | |
d'utilisation de l'API, | |
- l'API délivre des données statiques (lignes, arrets, horaires de passage des bus) et des | |
données temps-réel : horaire estimé d'arrivée des bus. | |
La classe Ruby Tisseo ci-dessous permet d'accéder à l'API Tisseo. | |
require 'json' | |
require 'rest-client' | |
require 'tisseo.rb' | |
require 'pp' | |
key='xxxxxxxx-yyyy-zzzz-kkkk-vvvvvvvvvvvv' | |
tisseo = Tisseo.new key | |
cmd='stop_points' | |
params = { | |
:stopAreaId => 1970324837184808, | |
:displayLines => 1, | |
:LineId =>11821949021891652 | |
} | |
pp tisseo.get cmd, params | |
lien : | |
1 : https://api.tisseo.fr/ | |
2 : https://fr.wikipedia.org/wiki/Representational_State_Transfer | |
3 : https://data.toulouse-metropole.fr/explore/dataset/api-temps-reel-tisseo/?tab=table | |
4 : https://data.toulouse-metropole.fr/explore/dataset/api-temps-reel-tisseo/ | |
5 : contact[arobase]tisseo.fr | |
=end | |
require 'pp' | |
require 'json' | |
require 'rest-client' | |
class Rest | |
def get url, args | |
RestClient.get url, {:params => args} | |
end | |
end | |
class Tisseo < Rest | |
def initialize key, api='https://api.tisseo.fr', version='v1' | |
@key=key | |
@api=api | |
@version=version | |
end | |
def get cmd, args, format='json' | |
args[:key]=@key | |
url="#{@api}/#{@version}/#{cmd}.#{format}" | |
res = super url, args | |
JSON::parse res | |
end | |
end | |
# la clé ne doit pas être publique | |
# si vous publiez vos sources, elle pourra être stockée dans $HOME/.config/tisseo.rb | |
user_cnf=sprintf('%s/.config/tisseo.rb', ENV['HOME']) | |
if File.exist? user_cnf | |
require user_cnf | |
@config=Tisseo::config | |
else | |
@config = { | |
# vous n'avez pas de clé : envoyez un message a contact[arobase]tisseo.fr | |
# en précisant : votre identité, l'usage que vous ferez de l'API TISSEO | |
:key => 'xxxxxxxx-yyyy-zzzz-kkkk-vvvvvvvvvvvv' | |
} | |
end | |
tisseo = Tisseo.new @config[:key] | |
cmd='stop_points' | |
params = { | |
:stopAreaId => 1970324837184808, | |
:displayLines => 1, | |
:LineId =>11821949021891652 | |
} | |
pp tisseo.get cmd, params |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment