dilluns, 30 d’abril del 2007

XML-RPC

Ja he investigat una mica sobre com fer anar el XML-RPC sobre php i python.


Primer de tot farem una mica d'introducció de que és el XML-RPC, com que tampoc és una cosa molt difícil d'entendre el millor que podeu fer és anar a la següent web i llegir una mica.

Anem a la xixa, sobre php farem ús de la llibreria xml-rpc que inclou php5. Aquesta llibreria es basa en una de C, per a més informació podeu consultar la seva web.

He fet un petit exemple de com seria un servidor/client de xml-rpc, en php tindria aquesta pinta:

server.php


function coursesList($method, $params) {
//params[0]
$reply=array("CURS1","CURS2","CURS3","CURS4");
return $reply;
}

$server = xmlrpc_server_create();
xmlrpc_server_register_method($server, "coursesList", "coursesList");

$request = $HTTP_RAW_POST_DATA;

$options = array('output_type' => 'xml',
'verbosity' => 'pretty',
'escaping' => array('markup', 'non-ascii', 'non-print'),
'version' => 'xmlrpc',
'encoding' => 'utf-8');
xmlrpc_server_call_method($server, $request, $response, $options);
if ($response = xmlrpc_server_call_method($server, $request, $response, $options)){
header('Content-Type: text/xml');
echo $response;
}
xmlrpc_server_destroy($server);
?>


client.php



function do_call($host, $port, $request, $path, $agent) {
$fp = fsockopen($host, $port, $errno, $errstr);
$query = "POST ".$path." HTTP/1.0\n User_Agent: ".$agent."\nHost: ".$host."\nContent-Type: text/xml\nContent-Length: ".strlen($request)."\n\n".$request."\n";

if (!fputs($fp, $query, strlen($query))) {
$errstr = "Write error";
return 0;
}

$contents = '';
while (!feof($fp)) {
$contents .= fgets($fp);
}

fclose($fp);
return $contents;
}
$host = 'kuduk.no-ip.org';
$port = 80;
$path = '/xml-rpc/server.php';
$agent = 'OOwiki';
$request = xmlrpc_encode_request('coursesList', 'egg2');
$response = do_call($host, $port, $request, $path, $agent);
$xml=(substr($response, strpos($response, "\r\n\r\n")+4));
$result = xmlrpc_decode ($xml,'utf-8');
print_r($result);
?>
El que faria el client és fer una crida al servidor per a que retornes una llista de cursos ( a falta de tenir la nova API feta doncs ho hardcodejo com un campió) i el client rep la resposta i la transforma en un variable de php.

Ara bé, el client del servidor xml-rpc haurà de ser en python, és per això que també he hagut de cercar informació de com programar xml-rpc sobre pyhton. El resultat ha estat el següent: hi ha una llibreria que també ens facilita molt les coses.

I evidentment el codi del client és una delícia!

client.py

import xmlrpclib

server = xmlrpclib.ServerProxy("http://kuduk.no-ip.org/xml-rpc/server.php")
courses = server.coursesList()
print courses

Conclusió, ara falta que la API estigui enllestida i mirar de si funciona la xmlrpclib amb el pyuno d'OpenOffice.

Aviam amb quins problemes ens trobarem......

Etiquetes de comentaris: ,

diumenge, 29 d’abril del 2007

Filtre acabat!!!

Per fi, ja era hora! Visca!

El filtre ja el dono per enllestit, només canviaré els possibles bugs que sorgeixin un cop faci proves amb uns quants documents. Ara bé, que suporta? Doncs aquí teniu la llista:
  • Headings de l'1 al 10
  • Format:
    • Negreta
    • Subratllat
    • Negreta + subratllat
  • Paràgrafs
  • Links
  • Imatges
  • Llistes
    • Ordenades
    • No ordenades
  • Taules
Si m'he descuidat alguna cosa per fer doncs ja l'afegiré! Però l'important és que per fi és funcional!

Etiquetes de comentaris:

divendres, 27 d’abril del 2007

7º Reunió

Avui hem fet una reunió secreta amb informació confidencial.... així que no puc explicar gaires coses (tampoc en tinc ganes).

Hem parlat de la API de la wiki i finalment la feina que havíem fet fins ara no ens servirà de molt ja que l'API serà implementada per unes altres persones :P

Quina serà la nostra funció llavors? Doncs dir quines funcions volem que ens implementin per tenir operatiu el webservice.

Ens han dit que tindrem les funcions implementades en 48 hores a partir de que les demanem via mail..... algú si vol jugar unes volls? jojojojojo

Una altra cosa en tenir en compte és que el webservice l'haurem de modificar una mica per a que realitzi peticions a través de XML-RPC o sigui que ja tenim més feina per fer.....

A més a més , com a apoteosi final l'autenticació dels usuaris també canviarà i ho haurem de tenir en compte....

Conclusió: feina feina feina feina feina feina per fer.

Etiquetes de comentaris:

XML Openoffice = Merderum

Doncs el XML de l'Openoffice és una mica boig, fa dies que m'estic barallant amb el filtre XSL i quan no peta una cosa, peta l'altre......

La última novetat és que els namespaces dels fitxers XML quan li dóna la gana me'ls canvia!!!!!!!

A vegades tinc:

xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0"
xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0"
xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0"
xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0"
xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0"
xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0"
xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0"

I per una altra banda:

xmlns:office="http://openoffice.org/2000/office"
xmlns:style="http://openoffice.org/2000/style"
xmlns:text="http://openoffice.org/2000/text"
xmlns:table="http://openoffice.org/2000/table"
xmlns:draw="http://openoffice.org/2000/drawing"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:meta="http://openoffice.org/2000/meta"
xmlns:number="http://openoffice.org/2000/datastyle"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:chart="http://openoffice.org/2000/chart"
xmlns:dr3d="http://openoffice.org/2000/dr3d"
xmlns:form="http://openoffice.org/2000/form"
xmlns:script="http://openoffice.org/2000/script"

Això ha estat l'arrel de MOLTS problemes ja que m'estava tornant boig al veure que el filtre a vegades funcionava.... altres vegades no..... en fi, un infern.

Ara bé, quina solució hi ha?!?!?

Pel que he vist al XSL no es poden definir 2 namespaces amb el mateix nom..... evidentment... per tant com puc tenir en compte aquest fet tan SIMPÀTIC del OpenOffice?

Ja em veig fent un preprocessament del XML mirant si hi ha els urn.oasis... alguna idea en ment??????!??!?!?!?!?!

Etiquetes de comentaris: ,

dijous, 19 d’abril del 2007

Qüestions vàries i diverses...

Doncs bé, el filtre es pot dir que està mig encaminat per no dir acabat.

Problemes:
  • No sé com fer taules a la NWIki -> mirar com es fan ja que enlloc diu res!!! (cercar exmples de mediawiki)
  • No sé com diferenciar llistes enumerades/no enumerades al xml del OO. S'hauria de mirar primer l'estil de la llista per saber com està definida però no sé com fer-ho....de moment.
  • Fer proves exhaustives per assegurar-me de que tot funcioni
TODO:
  • Divisions del text
  • Inserció d'imatges -> es poden posar directament a algun lloc de /moodle ???
  • Que funcini amb windows....buffff!!!!

Etiquetes de comentaris: , ,

divendres, 13 d’abril del 2007

6º Reunió

Aquest dimecres vàrem fer la sisena reunió.

Referent a la API ens hem de posar d'acord amb el mestre Pigui ja que tenia un disseny pensat, així que reunirem esforços amb ell per a desenvolupar-la.

Referent a l'extensió del OO, no hi ha cap novetat, hem de seguir fent-la tal com havíem previst.

Aquest cop va ser més com una reunió de seguiment que no pas per aclarir cap dubte o problema que tinguéssim.

Així doncs, ens posem les piles i continuem amb el PFC.

Etiquetes de comentaris: ,

dissabte, 7 d’abril del 2007

XSl i més...

Doncs bé, efectivament, el filtre XSL ha resultat una agonia de fer, i més en aquestes dates.

De moment ja destria els headings i les llistes no numerades, el que falta per fer és el següent:
  • Links
  • Format (negreta,cursiva,subratllat?)
  • Llistes numerades
  • Taules (???)
  • Imatges
En principi aquest serà el format que suportarà (de moment) després ja l'ampliarem si fa falta.

A la aplicació de l' OO també li he afegit dues coses noves, ara hi ha dos listeners, un per a crear una llista dels cursos que té disponible l'usuari i l'altre un cop s'ha escollit el curs en qüestió ens crei una llista amb les respectives wikis a les quals hi pot accedir.

Conclusió, falta perfilar una mica aquestes coses noves que he fet i comprovar el rendiment de la transformació xml->xsl per a que no sigui eterna!

Després d'aquests dies de pseudovacances tornarem a la càrrega fent noves coses.

Etiquetes de comentaris:

dilluns, 2 d’abril del 2007

XSL

El webservice ja rep el document xml i les imatges que el componen correctament, visca!

Ara toca fer la transformació amb xsl, la cosa no pinta molt bé ja que apart d'haver de tenir en compte mil coses de la pròpia transformació xml->xsl, el format xml d'OO té MOLTES opcions i perdrem moltes coses del seu format.

Aviam com quedarà la cosa.......


Per a més informació del XML a l'OO he trobat la següent informació


Sobre el XSL com sempre he recorregut al meu vell amic de safaribooks:


Durant aquests dies intentaré barallar-me una mica amb el filtre i no faré res més, espero no tornar-me boig...

Etiquetes de comentaris: