Interface XMLRPC
From Openflyers
Openflyers dispose d'une interface XMLRPC pour permettre aux clubs de récupérer certaines informations.
Les fonctions disponibles sont :
-
<string> of12_authenticate(<string> login, <string> password)
Retourne un sessionId si les login/password correspondent à un utilisateur openflyers ayant le droit "manageClub"
-
<integer array> of12_getAuthenticateIds(<string> sessionId)
Retourne la liste des Id de la table authentication
-
<struct> of12_getInfos(<string> sessionId, <integer> id)
Retourne les infos liées à l'utilisateur identifié par id
-
<struct array> of12_getInfos(<string> sessionId, <integer array> ids)
Retourne les infos liées aux utilisateurs identifiés par les identifiants contenus dans le tableau ids
Un exemple simple de client (écrit en Ruby, preuve que la solution d'accès à nos données ne fonctionne pas qu'avec PHP ;) ):
require 'xmlrpc/client' require 'rubygems' # pour utiliser htmlentities require 'htmlentities' # # conf : # login = "test" password = "test" server_uri = "http://demo.openflyers.fr/rpc.php5" # DO NOT EDIT #8<------------------------------------------------------------------- begin server = XMLRPC::Client.new2(server_uri) # # Authentication # sid = server.call("of12_authenticate", login, password) raise "Authentication error" unless sid puts "successfully authenticated as " << login puts # # Get all authentication ids # ids = server.call("of12_getAuthenticateIds", sid) raise "Ids should be an array!" unless ids.is_a? Array ids.sort puts "All available authentication ids retrieved" puts # # 1/ Fetch information user by user # t = Time.now ids.each do |id| info = server.call("of12_getInfos", sid, id) raise "Info should be an Hash!" unless info.is_a? Hash puts id.to_s + " " + HTMLEntities.decode_entities(info["first_name"]).capitalize + " " + HTMLEntities.decode_entities(info["last_name"]).upcase end printf("temps écoulé : %u sec\n", (Time.now - t)) puts # # 2/ Fetch information for a list of users # t = Time.now infos = server.call("of12_getInfos", sid, ids) raise "Infos should be an array!" unless ids.is_a? Array infos.each do |info| raise "Info should be an Hash!" unless info.is_a? Hash puts info["num"] + " " + HTMLEntities.decode_entities(info["first_name"]).capitalize + " " + HTMLEntities.decode_entities(info["last_name"]).upcase end printf("temps écoulé : %u sec\n", (Time.now - t)) puts rescue Exception => fault puts fault.to_s abort end

