Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.FriendFeed.getUserProfile
on getUserProfile (username, adrtable) { <<Changes <<12/24/08; 10:18:24 AM by DW <<Allow for the possibility of an empty nickname. atul had one in his profile. <<http://friendfeed.com/api/user/atul/profile?format=xml <<7/21/08; 6:17:27 AM by DW <<Created. local (url = "http://friendfeed.com/api/user/" + username + "/profile?format=xml"); new (tabletype, adrtable); new (tabletype, @adrtable^.subscriptions); new (tabletype, @adrtable^.rooms); new (tabletype, @adrtable^.services); local (xmltext = tcp.httpreadurl (url, flmessages:false), xstruct, adr); xml.compile (xmltext, @xstruct); local (adruser = xml.getaddress (@xstruct, "user")); <<scratchpad.xstruct = xstruct adrtable^.status = xml.getvalue (adruser, "status"); adrtable^.name = xml.getvalue (adruser, "name"); adrtable^.profileUrl = xml.getvalue (adruser, "profileUrl"); adrtable^.nickname = xml.getvalue (adruser, "nickname"); adrtable^.id = xml.getvalue (adruser, "id"); for adr in adruser { //subscriptions if nameof (adr^) endswith "subscription" { local (nickname = xml.getvalue (adr, "nickname")); local (adrsub = @adrtable^.subscriptions.[nickname]); if sizeof (nickname) > 0 { //12/24/08 by DW new (tabletype, adrsub); adrsub^.profileUrl = xml.getvalue (adr, "profileUrl"); adrsub^.id = xml.getvalue (adr, "id"); adrsub^.name = xml.getvalue (adr, "name")}}}; for adr in adruser { //rooms if nameof (adr^) endswith "room" { local (nickname = xml.getvalue (adr, "nickname")); local (adrsub = @adrtable^.rooms.[nickname]); new (tabletype, adrsub); adrsub^.url = xml.getvalue (adr, "url"); adrsub^.id = xml.getvalue (adr, "id"); adrsub^.name = xml.getvalue (adr, "name")}}; for adr in adruser { //services if nameof (adr^) endswith "service" { local (size = sizeof (adrtable^.services)); local (adrsub = @adrtable^.services.[string.padwithzeros (size+1, 3)]); new (tabletype, adrsub); adrsub^.url = xml.getvalue (adr, "url"); adrsub^.iconUrl = xml.getvalue (adr, "iconUrl"); adrsub^.id = xml.getvalue (adr, "id"); adrsub^.name = xml.getvalue (adr, "name"); try {adrsub^.profileUrl = xml.getvalue (adr, "profileUrl")}; try {adrsub^.username = xml.getvalue (adr, "username")}}}}; bundle { //testcode getUserProfile ("atul", @scratchpad.userprofile); edit (@scratchpad.userprofile)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.