Skip to content

Instantly share code, notes, and snippets.

Created November 28, 2015 10:30
Show Gist options
  • Save anonymous/6213bcb4a5a7d2333eaa to your computer and use it in GitHub Desktop.
Save anonymous/6213bcb4a5a7d2333eaa to your computer and use it in GitHub Desktop.
class Ruby permettant l'accès à l'API TISSEO
#!/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