Hi,

I implemented a few procs for this, you can find those in my commit logs. 
We might want to add support for tooltips, modified date, styles (pixmaps 
+ colors) etc, but that should be easy by copy-pasting and small code 
modifications. Now, what's left to be done: (at least, that's the way I 
see it - Youness? your comments?)

-> Use Karel's contactcards plugin
(http://karel.demeyer.googlepages.com/ccard.zip - it's a piece of art, 
really :D). 

-> On connect, we fetch the contact card info: set has_space
[::abook::getVolatileData $contact HSB], if has_space then getContactCard 
and setVolatileData $contact ccard [xml2list $ccard]. Part of this code is 
in proc InitCCard, a list called users_with_space, should the rest of the 
code go there?... (This CANNOT be done when we open a ccard because we 
need to know when someone has updated the MSN space before opening the 
contact card!)

-> Use the procs I created to fetch contact card info and display it on
the ccard when it's opened. Should be a piece of cake for someone who 
actually knows how to place stuff on the GUI, but personally I suck at 
this and I'm afraid I'm going to destroy this plugin!

[At this point, we can claim that we have some (primitive but usable) MSN 
Spaces support]

-> Find some pretty way to display something like a star for "has updated 
MSN space" (using getUnreadFor, I guess)

-> IIRC from what I read on msnpiki, we receive some xml crap when someone 
updates his/her msn space while we are connected, so we need to re-fetch 
contact card and re-store it on abook.

Waiting for your comments (and code contributions :D)

Vivia

On Fri, 8 Sep 2006, Youness Alaoui wrote:

> Hello all...
> I just love SOAP requests!!! the most annoying thing is the authentication, 
> but now that it's all done, it should be fairly easy to add 
> new stuff... like msn spaces.. it's been so long awaited but it's finally 
> here!!!
> well.. not completly.. the protocol part is done, we still need the GUI part 
> + a little XML parsing magic... as I said in my commit log, 
> I'll send a msg here to explain the XML and how to use the Xml parsing 
> functions... well, it's simple.. in the attached mail, I've put 
> an XML file returned by ::MSNCCARD::getContactCard $email ... I hope that 
> user won't mind... I cropped some of the info... anyways, I ask 
> for 2 elements, and he has two elements, one is the 'myspace', the second is 
> his album... he also might have had a blog... anyways, each 
> element has some some info about it.. first, it's type as an attributes, then 
> as entries : title, url and totalNewItems ... it can also 
> have subelements... each subelement has as attributes a type and a 
> lastUpdated field... it also has a description, title, tooltip, and url 
> tags.. depending on the type of subElement (in the attached example, it's a 
> Photo from an Album element) we can have a thumbnailUrl, 
> webReadyUrl and albumName entries... 
> To access all those informations using the Xml APIs I wrote, it's easy... you 
> have only 3 APIs :
> GetXmlNode
> GetXmlEntry
> GetXmlAttributes
> 
> ok.. they all take as argument an xml list... so when you have your xml as 
> string, do a :
> set list [xml2list $xml]
> then call the APIs.. first one, GetXmlNode takes an xml list and a node path 
> and returns a list representing that node.. example :
> set x [GetXmlNode [xml2list {<node1> <node2> <node3> hello </node3> </node2> 
> </node1}] "node1:node2:node3"]
> puts "[list2xml $x]"
> would print something like : "<node3>hello</node3>"
> 
> now, as you saw, the 'node path' is a ':' separated list of tag names... the 
> same syntax as sxml... simple! :)
> Now let's see... assuming you have <node1> <node2 /> <node2 /> <node2> I want 
> this one </node2> </node1>
> you can get that 3rd one by calling :
> GetXmlNode $xml "node1:node2" 2 
> (first index starts at 0)
> now, the same for GetXmlEntry, only it returns the content's of a node, so on 
> the previous xml, a [GetXmlEntry $xml "node1:node2" 2] would 
> return "I want this one", you can also specify which element you want by 
> adding the index number (optional) in the end...
> the same principle applies for GetXmlAttribute... 
> 
> Now for the attached Xml, you can use some simple combinations of 
> GetXmlNode/Entry/Attribute to get everything you want... you should be 
> able to get anything using the getXmlEntry API, but the GetXmlNode might 
> become handy if you need a specific element.. example, you have 
> many subElements, in both <element> and you don't know which index it starts 
> for the album.. so you can do a GetXmlNode to get the 
> "element" tag, then do a GetXmlAttribute to get the type of the element, once 
> you get the album, you do a GetXmlNode to get each 
> subelement of the node, then you work with it with GetXmlEntry ... 
> Here's an example so you can understand it better :
> : set xml [::MSNCCARD::getContactCard [EMAIL PROTECTED]
> : set list [xml2list $xml]
> : GetXmlAttribute [GetXmlNode $list 
> "soap:Envelope:soap:Body:GetXmlFeedResponse:GetXmlFeedResult:contactCard:elements:element"
>  0] ":element" type
> SpaceTitle
> : GetXmlAttribute [GetXmlNode $list 
> "soap:Envelope:soap:Body:GetXmlFeedResponse:GetXmlFeedResult:contactCard:elements:element"
>  1] ":element" type
> Album
> : GetXmlEntry $list 
> "soap:Envelope:soap:Body:GetXmlFeedResponse:GetXmlFeedResult:contactCard:elements:element:title"
> Mathieu's space
> : GetXmlEntry $list 
> "soap:Envelope:soap:Body:GetXmlFeedResponse:GetXmlFeedResult:contactCard:elements:element:url"
> http://tchatcho84.spaces.live.com/?owner=1
> 
> etc.... it's a combination of GetXMlNode, GetXmlEntry and GetXmlAttribute... 
> your job to parse that now... you see why I didn't want to 
> parse it.. then I'd put it in an array and it would be complicated.. while I 
> think all the data in there is related to the GUI and it 
> should be parsed at the same time as the GUI is being built... 
> 
> Have fun!!! and good luck!!! 
> now.. what should I code next... ^o)
> KaKaRoTo
> 
> -------------------------------------------------------------------------
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Amsn-devel mailing list
> Amsn-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/amsn-devel
> 


---

"Where is the life that we have lost in living?
 Where is the wisdom that we have lost in knowledge?
 Where is the knowledge that we have lost in information?"

OEO;


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Amsn-devel mailing list
Amsn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/amsn-devel

Reply via email to