X Oy SֺS toYArial MS Sans Serif {;Times New Roman QTArial BcArial MS Sans Serif ^S$SW  client resultAsXml Zr^W\W\8"p|n " 8D T` vcreateDiscussionEntry ideleteDiscussionEntryvDiscussionEntry updateDiscussionEntry S׺S VArial S׺SKLANDwinon any (pta) //boilerplate for your responder pta^.responseHeaders.["Content-Type"] = "text/html" pta^.code = 200 //everything was OK pta^.responseBody = "" //build response return (true) V2.S׺S any2.S׺S @H P condition2(string.lower (path) beginsWith "/grooveinterop/")enabledmethods4 S׺S S׺S `f Arial Fn7S[*LANDwin]+" postid = number(postid) commentLink = radio.weblog.getCommentLink(postid) lst = string.urlSplit(commentLink) server = lst[2] path = string.urlDecode(lst[3]) path = string.replaceAll(path, "&", "&") httpResult = tcp.httpClient(method, server, 80, path, debug:true) httpResult = string.httpResultSplit(httpResult) if regex.extract(pattern, @httpResult, @lst) local n n = string.patternMatch(">", lst[1]) if n > 0 lst[1] = string.mid(lst[1], n+1, string.length(lst[1]) - n) lst[1] = string.trimWhiteSpace(lst[1]) return(lst[1]) dialog.notify(test(133))  ?H Arial !!jSe6LANDwinon httpContinue (urlFFFF000000060001001777AA0000000000590000000010017101-777F6FBE18000006000600363200-1036321FFFFF0100001000000390000000101744084036321F150038C0005336310D000020000017A00000000174,##header####body##00040000000A000000020176000050000000A0000000201760000600000031000000010D30FFFF0A00000 40 000700000019000000010201800008000000B10000000140,Arial40,404E4400032104000801010000900000015000000020BF2510BF251000A000000150000000236321F36321F000B00000005000000020000C0000000F000000010B301000F0000005200000000400 10 4,77A4,need4,``4,4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AASjT| tus*E7!Nl urlhttp://127.0.0.1/grooveInterop/ */attsn00002000sLpt?]  &2 ?K Xd q} MVC-0011.JPG MVC-0021.jpg MVC-002F.JPG MVC-003F.JPG ;v MVC-0041.jpg Izzz.jpghmP.`Ǜo3 ctenabledscripttH [Lhm3.wqwq  ". 351w%w% namespacesoap:5w`w`o\$wawa  (/attsO00002000 ReadResponseb oS n$|Q|Q  0#1 n7x7S`F$ww  /atts:/pcdataadResponse~`VR$w֜w֜  &/atts-00002000 ReadResultV=w֜w֜@ 1w%w% namespacesoap:-@Z%1ww namespacesoap:</atts'00002000 HeaderZww.t?\t?\ r w hrefiMVC-002F.JPGName MVC-002F.JPGSize55388ˀh<.t?\t?\ r w hrefiMVC-0021.jpgName MVC-0021.jpgSize51715ˀ<t?ݺt? 00%I&.tF1tF1FLHtvtv ) 3i r  H M] b    Created2002-08-15T15:23:08.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID0a68c292123756fed351c8f6ef828997659f361d0c185668cID06bbd7fff72edd69027a8fdf8c8c54fa09aaa37997d00a9a4Modified2002-08-15T15:23:08.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name MVC-0021.jpgPathQC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozoz\MVC-0021.jpgSize51715TypeFileUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/6bbd7fff72edd69027a8fdf8c8c54fa09aaa37997d00a9a4bXtt xmlns0http://webservices.groove.net/Groove/1.0/Events/kURI y B78tt  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance~ B7.tԺt  ". </atts00002000 HeaderG 00003000 Body HȀh S׺| VW0W0 00001000 Member2grooveI=TPjgg _ m   /e t  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/727pt4k3s68hzazgcwzfhr4xu8sfst8mptpfegi 00002000 NameBlooger Tool Brasil00003000 Description00004000 Created2002-07-18T21:18:14.544+01:0000005000 Modified2002-07-18T22:17:50.803+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/727pt4k3s68hzazgcwzfhr4xu8sfst8mptpfegi00009000 MembersDۀjgg _ m{  z Arial +a~LANDwinon addDiscussionEntry (tooldata, identityurl, subject="not set", body="not set", stream=nil) 25/01/03; 23:10:42 by TK add an entry to a Groove Discussion local i httpRequest = "" httpResult = "" soapmessage = string(grooveInteropData.soap.template.envelope) soapheader = string(grooveInteropData.soap.template.groove.header) method = grooveInteropData.soap.template.groove.methods.createDiscussionEntry soapaction = grooveInteropData.soap.template.groove.actions.createDiscussionEntry addrNewEntry = @grooveInteropData.soap.util.DiscussionEntry nonce = grooveInteropData.groove.webservicesnonce host Fo6 lBLOG") if mode == 1 return("Setting preferences for NEWS") if mode == 2 return("Setting preferences for FILES") return("") on findIdentityAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.identities) return(false) addr = @grooveInteropData.groove.temp.identities for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) on findSpaceAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.spaces) return(false) addr = @grooveInteropData.groove.temp.spaces for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) on findToolAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.tools) return(false) addr = @grooveInteropData.groove.temp.tools for i = 1 to sizeof(addr^) if uri == addr^[i].Data return(@addr^[i]) return(false) on accountCombo(addr, name) local i str = "" return(str) on spacesCombo(addr, name) local i str = "" return(str) on toolsCombo(addr, name, mode=0) local i str = "" return(str) on writeAccounts(mode) local html = "" modestr = modeString(mode) html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "
"+modestr+"
Select Groove Identity:" html = html + accountCombo(@grooveInteropData.groove.temp.identities, "account") html = html + "
Click 'Get Spaces' to continue.
" return(html) on writeSpaces(mode) local html = "" modestr = modeString(mode) html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "
"+modestr+"
selected identity" + grooveInteropData.groove.temp.accountName + "
Select Space:" html = html + spacesCombo(@grooveInteropData.groove.temp.spaces, "spaces") html = html + "
Click 'Get Tools' to continue.
" return(html) on writeTools(mode=0) local html = "" modestr = modeString(mode) html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "
"+modestr+"
selected identity" + grooveInteropData.groove.temp.accountName + "
selected space" + grooveInteropData.groove.temp.spaceName + "
Select Tool:" html = html + toolsCombo(@grooveInteropData.groove.temp.tools, "tools", mode) html = html + "
Click 'Select this Tool' to continue.
" return(html) on writePrefs() local html = "" blog="---- not set ----", news="---- not set ----", files="---- not set ----" blogAccount="---- not set ----", newsAccount="---- not set ----", filesAccount="---- not set ----" blogSpace="---- not set ----", newsSpace="---- not set ----", filesSpace="---- not set ----" prefsText = string(grooveInteropSuite.gui.prefsText) checkBEnable = "" checkNEnable = "" checkFEnable = "" if defined(grooveInteropData.prefs.blog) if not defined(grooveInteropData.prefs.blog.enabled) grooveInteropData.prefs.blog.enabled = true if grooveInteropData.prefs.blog.enabled if grooveInteropData.prefs.blog.enabled {checkBEnable="checked"} blog = grooveInteropData.prefs.blog.toolName blogAccount = grooveInteropData.prefs.blog.toolAccountName blogSpace = grooveInteropData.prefs.blog.toolSpaceName else blogSpace = "---- Disabled ----" blogAccount = "---- Disabled ----" blog = "---- Disabled ----" if defined(grooveInteropData.prefs.news) if not defined(grooveInteropData.prefs.news.enabled) grooveInteropData.prefs.news.enabled = true if grooveInteropData.prefs.news.enabled if grooveInteropData.prefs.news.enabled {checkNEnable="checked"} news = grooveInteropData.prefs.news.toolName newsAccount = grooveInteropData.prefs.news.toolAccountName newsSpace = grooveInteropData.prefs.news.toolSpaceName else newsSpace = "---- Disabled ----" newsAccount = "---- Disabled ----" news = "---- Disabled ----" if defined(grooveInteropData.prefs.files) if not defined(grooveInteropData.prefs.files.enabled) grooveInteropData.prefs.files.enabled = true if grooveInteropData.prefs.files.enabled if grooveInteropData.prefs.files.enabled {checkFEnable="checked"} files = grooveInteropData.prefs.files.toolName filesAccount = grooveInteropData.prefs.files.toolAccountName filesSpace = grooveInteropData.prefs.files.toolSpaceName else filesSpace = "---- Disabled ----" filesAccount = "---- Disabled ----" files = "---- Disabled ----" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" if grooveInteropData.prefs.showAccountName html = html + "" else html = html + "" html = html + "
" + prefsText + "
 AccountSpaceTool  
BLOG"+blogAccount+""+blogSpace+""+blog+"Enabled:
NEWS"+newsAccount+""+newsSpace+""+news+"Enabled:
FILES"+filesAccount+""+filesSpace+""+files+"Enabled:
Multi-user blog (check to add poster's username to the post)
Multi-user blog (check to add poster's username to the post)
" return(html) local html = "" addrIdentity addrSpaces addrTool homeURL = "http://127.0.0.1:5335/grooveInterop/" tmpTable if !defined(grooveInteropData.prefs.showAccountName) grooveInteropData.prefs.showAccountName = true grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) bundle // tool-enable checkbox was clicked if defined(grooveInteropSuite.http.postvars.op) if grooveInteropSuite.http.postvars.op == "enable" if defined(grooveInteropData.prefs.blog) if defined(grooveInteropSuite.http.postvars.blog_enabled) grooveInteropData.prefs.blog.enabled = true else grooveInteropData.prefs.blog.enabled = false if defined(grooveInteropData.prefs.news) if defined(grooveInteropSuite.http.postvars.news_enabled) grooveInteropData.prefs.news.enabled = true else grooveInteropData.prefs.news.enabled = false if defined(grooveInteropData.prefs.files) if defined(grooveInteropSuite.http.postvars.files_enabled) grooveInteropData.prefs.files.enabled = true else grooveInteropData.prefs.files.enabled = false html = html + writePrefs() else if grooveInteropSuite.http.postvars.op == "accountname" if defined(grooveInteropSuite.http.postvars.showAccountName) grooveInteropData.prefs.showAccountName = true else grooveInteropData.prefs.showAccountName = false html = html + writePrefs() if grooveInteropSuite.http.postvars.op == "getaccounts" if defined(grooveInteropData.groove.temp) delete (@grooveInteropData.groove.temp) new (tabletype, @grooveInteropData.groove.temp) if defined(grooveInteropSuite.http.postvars.setblog) grooveInteropData.groove.temp.mode = 0 if defined(grooveInteropSuite.http.postvars.setnews) grooveInteropData.groove.temp.mode = 1 if defined(grooveInteropSuite.http.postvars.setfiles) grooveInteropData.groove.temp.mode = 2 if defined(grooveInteropData.groove.temp.identities) delete (@grooveInteropData.groove.temp.identities) new( tabletype, @grooveInteropData.groove.temp.identities) if not grooveInteropSuite.util.groove.refreshAccounts(@grooveInteropData.groove.temp.identities) return("No identities found! Please make sure Groove 2.5 is running. Click here to try again...") html = html + writeAccounts(grooveInteropData.groove.temp.mode) if grooveInteropSuite.http.postvars.op == "getspaces" addrIdentity = findIdentityAddr(grooveInteropSuite.http.postvars.account) grooveInteropData.groove.temp.accountName = addrIdentity^.Name grooveInteropData.groove.temp.accountURI = addrIdentity^.URI if defined(grooveInteropData.groove.temp.spaces) delete (@grooveInteropData.groove.temp.spaces) new( tabletype, @grooveInteropData.groove.temp.spaces) try if not grooveInteropSuite.util.groove.refreshSpaces(addrIdentity, @grooveInteropData.groove.temp.spaces) return("No spaces found for identity "+grooveInteropData.groove.temp.accountName+"! Click here to try again...") html = html + writeSpaces(grooveInteropData.groove.temp.mode) if grooveInteropSuite.http.postvars.op == "gettools" addrSpaces = findSpaceAddr(grooveInteropSuite.http.postvars.spaces) if addrSpaces grooveInteropData.groove.temp.spaceName = addrSpaces^.Name grooveInteropData.groove.temp.spaceURI = addrSpaces^.URI grooveInteropData.groove.temp.toolsURI = addrSpaces^.Tools if defined(grooveInteropData.groove.temp.tools) delete (@grooveInteropData.groove.temp.tools) new( tabletype, @grooveInteropData.groove.temp.tools) try if not grooveInteropSuite.util.groove.refreshTools(addrSpaces, @grooveInteropData.groove.temp.tools) return("No suitable tools found within space "+grooveInteropData.groove.temp.spaceName+"! Click here to try another space...") html = html + writeTools(grooveInteropData.groove.temp.mode) else grooveError() return if grooveInteropSuite.http.postvars.op == "selecttool" addrTool = findToolAddr(grooveInteropSuite.http.postvars.tools) grooveInteropData.groove.temp.toolName = addrTool^.Name grooveInteropData.groove.temp.toolData = addrTool^.Data new (tabletype, @tmpTable) tmpTable.toolAccountName = grooveInteropData.groove.temp.accountName tmpTable.toolAccountURI = grooveInteropData.groove.temp.accountURI tmpTable.toolName = addrTool^.Name tmpTable.toolData = addrTool^.Data tmpTable.toolSpace = grooveInteropData.groove.temp.spaceURI tmpTable.toolSpaceName = grooveInteropData.groove.temp.spaceName addrSpaces = findSpaceAddr(grooveInteropData.groove.temp.spaceURI) if addrSpaces tmpTable.Members = addrSpaces^.Members if grooveInteropData.groove.temp.mode == 0 grooveInteropData.prefs.blogTool = tmpTable.toolData grooveInteropData.prefs.blog = tmpTable if grooveInteropData.groove.temp.mode == 1 grooveInteropData.prefs.newsTool = tmpTable.toolData grooveInteropData.prefs.news = tmpTable if grooveInteropData.groove.temp.mode == 2 grooveInteropData.prefs.filesTool = tmpTable.toolData grooveInteropData.prefs.files = tmpTable delete(@grooveInteropSuite.http.postvars.op) addrIdentity = findIdentityAddr(tmpTable.toolAccountURI) if !defined(grooveInteropData.groove.contacts) new (tabletype, @grooveInteropData.groove.contacts) thread.callScript (@grooveInteropSuite.util.groove.refreshContacts,{addrIdentity, @grooveInteropData.groove.contacts}) grooveInteropSuite.util.groove.unsubscribe() webBrowser.openURL(homeURL) return else html = html + writePrefs() return(html) BUQ$h33h33  linetext Preferencespathtest.wsfU$h33h33_*1h3 h3 namespacesoap:j " ,~ toolAccoun_3$Wm Wm $ )linet2"A8p&%p&% C Q` o 00001000 URI2grooveIdentity://p45epwhfssqxrqdm9ie2kmmazb9agakz@ 00002000 Name Sabine Kamp00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/p45epwhfssqxrqdm9ie2kmmazb9agakz@00004000 AwarenessOffLined8p&%p&% C Qa p 00001000 URI2grooveIdentity://fp45ecmr7wdukzgehrguiuzfkx9yfgec@ 00002000 Name bill_diamond00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/fp45ecmr7wdukzgehrguiuzfkx9yfgec@00004000 AwarenessOffLine$cXcX ) -Name Art Fritzson/Booz Allen HamiltonURI9grooveIdentity://e4i894t48bvaatqebka9yticei9pb3k2u9azk4b@ cREcREhArial Yb\KFCLANDwinon js () local scr = "" scr = scr + string(grooveInteropSuite.html.scripts.mainscript) return(scr) =1cgcg namespacesoap:=cfcf0,cN1cN1 oprefresh0cN2cN2cN2cN2cNGcNG$cXcX # 'Nameashok25/CompuTact SoftwareURI2grooveIdentity://zekdstjvsuzh27y4csy776inz53bhswh@[g nVR$cNcN  linetext Preferencespath index.wsfVcNcNH%8eeee J Xl { 00001000 URI9grooveIdentity://c634ktt4a7svact2qmz4vnc73k9u5zrxhqb7bjd@ 00002000 NameHugh Pyle/Groove00003000 VCardM/GWS/Groove/1.0/vCard/grooveIdentity/c634ktt4a7svact2qmz4vnc73k9u5zrxhqb7bjd@00004000 AwarenessOnline local addr, i ret = "" ifH 7!Nl urlhttp://127.0.0.1/grooveInterop/ M "!Arialu!Uj" T g  U b  . 9q z  9 Cz  createDiscussionEntry:http://webservices.groove.net/Groove/1.0/Discussion#CreatecreateSubscription=http://webservices.groove.net/Groove/1.0/Subscriptions#CreatedeleteDiscussionEntry?http://webservices.groove.net/Groove/1.0/Discussion#DeleteEntrydeleteSubscription=http://webservices.groove.net/Groove/1.0/Subscriptions#Delete readAccounts6http://webservices.groove.net/Groove/1.0/Accounts#Read readContacts6http://webservices.groove.net/Groove/1.0/Contacts#ReadreadDiscussion8http://webservices.groove.net/Groove/1.0/Discussion#Read readEvents4http://webservices.groove.net/Groove/1.0/Events#ReadreadFile7http://webservices.groove.net/Groove/1.0/Files#ReadFile readFiles3http://webservices.groove.net/Groove/1.0/Files#Read readSpaces4http://webservices.groove.net/Groove/1.0/Spaces#Read readTools3http://webservices.groove.net/Groove/1.0/Tools#ReadupdateDiscussionEntry?http://webservices.groove.net/Groove/1.0/Discussion#UpdateEntryupdateSubscription=http://webservices.groove.net/Groove/1.0/Subscriptions#Updateˀu<gArial SyWc]]HLANDwinon grooveHeader (nonce, identityurl=nil) 22/01/03; 04:22:40 by TK create the Groove SOAP-header local grooveHeader = string(grooveInteropData.soap.template.groove.header) grooveHeader = string.replaceAll(grooveHeader, "##nonce##", nonce) if identityurl != nil grooveHeader = string.replaceAll(grooveHeader, "##url##", nonce) return(grooveHeader) 8p)p)  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceȷp)`p)`HD$jxպjm  0?71n HR(&S׺hitem #1g  U b RBpupu xmlns/http:/26Wspace/GIFfGIF89a!,D;VArial tygArial t$f#^f#^ 3 8lin0\XtLtL xmlns0http://webservices.groove.net/Groove/1.0/Events/Boqoq  $ 28 EK N blog_enabledonenablerfiles files_enabledon news_enabledonopenableodyI&Ls*s* ? Jl o  CallYutt 00001000 Envelope@Lu.tt  ". </atts00002000 Header 00003000 Body9~u$tt  (/atts 700002000 ReadResponse`Vu$tt  &/atts[00002000 ReadResult&pԺp &YppHD$jj  0M1yHjHjHj j jغjjj"FFFF000000060001001777AA0000000000570000000010017101804904218000006000600363200-1036321FFFFF0100001000000390000000101744084036321F150038C0005336310D000020000017A00000000174,##header####body##00040000000A000000020176000050000000A0000000201760000600000031000000010D30FFFF0A00000 40 000700000019000000010201800008000000B10000000140,Arial40,404E4400032104000801010000900000015000000020BF2510BF251000A000000150000000236321F36321F000B00000005000000020000C0000000E000000010B30000F0000005200000000400 10 4,77A4,need4,``4,4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AASjT|trWZ. Arial W ijUgfH*LANDg s:*[ MS Sans Serif Eu7aL3*lLANDwinon pageFilter (pta) if typeOf (pta^.template) == outlineType or typeOf (pta^.template) == wpTextTypO 000000060001001777AA000000000065000000001001710190490021800000600060033C200  !Arial  iѺm)1X/LANDwinon getEvents () 08/02/03; 19:35:33 by TK Check for pending Groove events local startTime = clock.ticks() nonce = grooveInteropData.groove.webservicesnonce soapaction = grooveInteropData.soap.template.groove.actions.readEvents method = grooveInteropData.soap.template.groove.methods.readEvents httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.events host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, addr xmlTable callbackURI = "" identityurl stream if not defined(grooveInteropData.groove.events) grooveInteropData.groove.ready = false return(false) if defined(grooveInteropData.groove.eventTable) delete (@grooveInteropData.groove.eventTable) new (tabletype, @grooveInteropData.groove.eventTable) bundle // open a stream try stream = tcp.openStream(host, port) else grooveInteropData.groove.ready = false return(false) addr = @grooveInteropData.groove.events bundle // loop thru all event-subscriptions and save to a tmp-table try for i = 1 to sizeof(addr^) bundle // retreive events for current subscription method = grooveInteropData.soap.template.groove.methods.readEvents method = string.replaceAll(method, "##callbackuri##", addr^[i].CallbackURI) identityurl = addr^[i].IdentityURL httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest, stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false save the events for this subscription to a temporary table grooveInteropSuite.util.groove.saveEvents(xmlTable^, @grooveInteropData.groove.eventTable) else grooveInteropData.groove.ready = false radio.log.add("grooveInterop","Error while retreiving Groove-events: " + tryError, startTime) return(false) bundle // now handle all found events if defined(grooveInteropData.groove.eventTable) if sizeof(grooveInteropData.groove.eventTable) > 0 grooveInteropSuite.util.groove.handleEvents(@grooveInteropData.groove.eventTable, stream) else delete (@grooveInteropData.groove.eventTable) bundle // close the stream try tcp.closeStream(stream) else grooveInteropData.groove.ready = false return(false) grooveInteropData.groove.ready = true dialog.notify(getEvents())  VR$n% {title} {grooveInteropWebsite.style} <%radio.macros.editorsOnlyMenu ()%>
home | preferences | help
{bodytext} v 000000060001001777AA0000000000570000000010017101804904218000006000600363200-1036321FFFFF0100001000000390000000101744084036321F150038C0005336310D000020000017A00000000174,##header####body##00040000000A000000020176000050000000A000000020176000LH|Q|Q ) 3i r  H M] b    Created2002-08-15T15:22:40.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID0a68c292123756fed351c8f6ef828997659f361d0c185668cID009072dc88dd9e5e7c5c3713f77bba5a58ebb50d429a1ded0Modified2002-08-15T15:22:40.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name MVC-0011.JPGPathQC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozoz\MVC-0011.JPGSize73034TypeFileUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/09072dc88dd9e5e7c5c3713f77bba5a58ebb50d429a1ded0 r$p|Vp|V  Name Thomas KleinURI2grooveIdentity://ji9j6q5nmswp75x59uva84tu42eztswm@ | r$p|Vp|V  NameSuite75 HelpdeskURI2grooveIdentity://ajgrwgb7h5ajhi6gdp3ythj2h8k8cnz8@ Ğ$p|Vp|V  $NameSuite75 Dedicated [2.0]URI2grooveIdentity://3ismmbm2c7dns72d8t7tt6xrmqitsqka@4Ğ$p|Vp|V  !NameSuite75 >> DedicatedURI2grooveIdentity://aqvagsyadbhvwnk5spirsgdpgfwx5jx4@Ğ$p|Vp|V  NameStephen DulaneyURI9grooveIdentity://resqtj5fh73gk2vhcry3uj77djnixwttpznsa2k@}y$p|Vp|V  NameSteffen M./ECNURI2grooveIdentity://qfaeeiw2ceimkza3ts3g8ehc4wz5dwyy@$p|Vp|V % )NameStefan Solomon/TeamDirectionURI2grooveIdentity://ijxdpg59e2xq9pwix6gk5329kam73bn8@ ۀJ "~$p|Vp|V  NameShaun Hydock/BAHURI2grooveIdentity://59x5g34xtjtcq6u2a8xvqndjsxfm9fwv@ "~$p|Vp|V  Name ScottLareURI2grooveIdentity://wbc3x87dmjc99tbucznv2x8zy84vmc73@x$p|Vp|V  NamesbellinaURI2grooveIdentity://9bt59hucukxch8uyg6yfejn89yr4r4ji@wtp$p|Vp|V  NameSashaURI2grooveIdentity://uecfuivvb9j6bzthe2e79s5xew8cafeh@$p|Vp|V < @Name3Sanjay Malhotra (Current)/Parallelspace CorporationURI2grooveIdentity://6ykrka2u3eq7uufche3i5rzqraj6hgtv@)&w$p|Vp|V  Name Sabine KampURI2grooveIdentity://p45epwhfssqxrqdm9ie2kmmazb9agakz@zw$II  linetextHelppathhelp.wsf Q[ aala3$pJpJ  "/atts[X r$p|Vp|V - 1Name$Peter Berthold/Peer Development GmbHURI2grooveIdentity://rwajj4sbfgcmunpcqmte75nymmbuem7j@ r$p|Vp|V L PNameCParallelspace Shared Space Backup Account/Parallelspace CorporationURI9grooveIdentity://dfqeju7pd5xn625uqe4rmqxg8vmtmaf4ayt8b78@1n$p|Vp|V  NameOffice/Suite75URI2grooveIdentity://3mtq3d55mdimsnfw35brc5pvhd8ikv7h@}(n - MS Sans Serif2 MS Sans Serif q#wLANDwinon buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) 2z $p|Vp|V  Name andyswarbsURI2grooveIdentity://ytjzwrkrftics4ju8w9d3quvgcbxuzes@@zVR$bKbK  linetext Preferencespath index.wsfVbKbK 8cs cs C Qb q 00001000 URI2grooveIdentity://en64rka5g4cqx2gf95jpmjeqgtkzg958@ 00002000 Name Erick Kapamas00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/en64rka5g4cqx2gf95jpmjeqgtkzg958@00004000 AwarenessOffLinekf9iim7 h`!SHc8D  /; P\ r~ addDiscussionEntry ڱclearDiscussionucreateFileDescriptor BdeleteDiscussionEntry grooveHeadery&rpcupdateDiscussionEntry upstreamFilehVArial %t9 blog=0, news=0,files=0 p"J$II  linetextHelppathhelp.wsfWt;it;i p B!9pl  + 3? IU _onPrefs(' onSettings @ConStart z onWelcome  prefsText V8VArial 2oV ww gcwѺw xmlns;http://webservices.groove.net/GWS/Groove/1.0/Subscriptions/bwѺw namespacesoap:5@bwޕwޕ namespacesoap: w$wѺw  /atts/pcdataadResultw-w- namestJ@<ww 00001000 Envelope#8t>t>  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceg/2001/XMLSchema xmlns:xsi)http:xt6t6QE7!Nl urlhttp://127.0.0.1/grooveInterop//GWSQv1gEpgEp28hh C Qc r 00001000 URI2grooveIdentity://v75h6amuxysxde2t6582fx5hyyvhw9tn@ 00002000 NameMichael Herman00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/v75h6amuxysxde2t6582fx5hyyvhw9tn@00004000 AwarenessOffLineuuw4m269snymxu9zanwx@ 002 pz=pz= 00001000 Envelop3$p|Vp|V & *NameGraham Knight/Virtual MethodsURI2grooveIdentity://86jdhsdtdxdx5hupnbaks463zwyjkmhm@JF$p,p,  /atts/pcdataJp,p,8pp  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceU;prprA&S׺hitem #10 EnvelopePAS׺_R~z.o7o7  ". </atts{00002000 Header 00003000 Bodyއ~ o7So7SzWpupu xmlns/http://webservices.groove.net/Groove/1.0/Files/44fyhh872kszfwuvkcv@ 00002000 Uzpȼpupu xmlns0,}<gEV  "+ 0: CL Q[ aalink008000bgcolorFFFFFFflRenderlink0000FFspaceGifspacetext000000vlink800080VArial phR$oqoq  linetext Preferencespath index.wsf0http://webservich"!Arial S׺aDQLANDwinGrooveInterop About Help... - h+Arial S׺a([QLANDwindialog.notify ("grooveInterop by Suite75") {ququ  ? I W a~       Body just a test..Created2003-02-13T15:46:17.625+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ EventClassurn:groove-net:DiscussionEvent EventSourcegrooveTelespace://6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/q448mdmcmacfa6msjdqp8krdhixyehcc3tz3a82.Discussion.Tool/DiscussionDataModelDelegate EventTypeDiscussionUpdateEventDataID 1085282139Modified2003-02-13T16:18:24.786+01:00 ModifiedByParentID 1495310493SubjectRe: grooveInterop 0.5 availableUnreadfalseURI/GWS/Groove/1.0/Discussion/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/q448mdmcmacfa6msjdqp8krdhixyehcc3tz3a82.Discussion.Tool/DiscussionDataModelDelegate/1085282139{\Xp~p~ xmlns0http://webservices.groove.net/Groove/1.0/Events/\)p~tp~t_[p}p} 102ccd17bda92c6ebc73f1ac95cf7f3f9c2b141104f0274a2fg_ S$p|Vp|V  NamexekcURI2grooveIdentity://wxsmwa7aia5pany6ydzsnrghak4a42ts@s"b$p|Vp|V  "NameWolfgang von StuermerURI9grooveIdentity://cbcm89t8rzj75d39md7frb3ufu22h22p4csa5zi@"b$p|Vp|V 0 4Name'Wolfgang R. von Stuermer/Symbiant GroupURI2grooveIdentity://ypmwcikqcs5wwi9nsvqyafbhckwycnn4@- $p|Vp|V  NameWolf Dieter MoggertURI2grooveIdentity://5c7x5375k5uz4nixj7ra82hib8fcc8z5@ $p|Vp|V  !NameWerner Walter/npt agURI2grooveIdentity://xqstfifmijty3strk45iubyha3n6anvu@{$p|Vp|V  NameW. David BaylessURI2grooveIdentity://rxcdrfssejchisk844xdyy9gvbxv6ban@so$p|Vp|V  NameVladURI2grooveIdentity://e6xunm7czmssdem8j52t4gu6vfr4un8n@TV ~ $p|Vp|V / 3Name&Vincent Lim/Envocis Technology LimitedURI2grooveIdentity://9ikaitigzbgzexcavqemcq53y4zrfrxz@ ~ $p|Vp|V ! %Nametsujikawa.masahiro/RuecaURI2grooveIdentity://qam26ppwi24eh89mcnru335xemagihsn@~ ~ $p|Vp|V  NameTimothy R PlattURI2grooveIdentity://msrbc333g8r26uywpwzw7gr5gkxcady9@zv$p|Vp|V  NameTimAURI9grooveIdentity://pnj5ym9zsvrq2b34hdr3gsgz662a2nykbqtf9br@$p|Vp|V  NameTim Knip/Suite75URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@$p|Vp|V  "NameTim Knip [build 1342]URI2grooveIdentity://zcaaiz334xch53z7znznmhihfrycwgrs@ "~$p|Vp|V  NameTim KnipURI2grooveIdentity://nnmqq9x3j3pi4us6gy6tbtpyeggtajmz@wt "~$p|Vp|V  NameTim KURI2grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@5@|$p|Vp|V ) -Name Thorsten Bruns/EUREKA ConsultingURI2grooveIdentity://dwirqtpt7amtjpnbuzb364uc7wbvpsu6@|$p|Vp|V , 0Name#Thomas Mller/Peer Development GmbHURI2grooveIdentity://p3rrzai5yugcexbvbswcppnnutp46rxc@|$SS h mlinetext[["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.indexpath H< Arial SWabLAND TArial $eʺ$f%9LANDwin <ͮ$p|Vp|V  Name Rick LillieURI2grooveIdentity://m3cas6hzdgnqs7f6mdkuh5jkpit4r6a7@zͮ$SW  client resultAsXml uŬ`JͮYgb\) mainscriptapcdata<8gDTgDT  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance`gD2gD2J1bnʺbn namespacesoap:FFJbnbnbnbnbnbnbnbnbnbnVR$b@ܺb@  linetext Preferencespath index.wsfVb@ݺb@VR$b?ƺb?  linetext Preferencespath index.wsfVեb?ƺb?VR$b?Bb?B  linetext Preferencespath index.wsfV+b?Bb?BVR$b>b>  linetext Preferencespath index.wsfVֱb>b>VR$b<źb<  linetext Preferencespath index.wsfV7b<źb<VR$b;b;  linetext Preferencespath index.wsfV׽b;b;VR$b;b;  linetext Preferencespath index.wsfV2Kb;b;#y$cncn  Namegj@ctarget.comURI2grooveIdentity://4egg9vphttzsf5irrivftswg4bug8kwa@  "5 :DaZgg 00001000 ,tȷZ,Arial ja`j4mVt8LANDwinon unsubscribe (id=nil) 08/02/03; 17:56:47 by TK Unsubscribe from all subscribed Groove events local soapaction = grooveInteropData.soap.template.groove.actions.deleteSubscription method = grooveInteropData.soap.template.groove.methods.deleteSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl = "" i, addr xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events try for i = 1 to sizeof(addr^) bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.deleteSubscription method = string.replaceAll(method, "##id##", addr^[i].ID) bundle // create the http-request identityurl = addr^[i].IdentityURL httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest, stream) delete(@grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) bundle // close the stream try tcp.closeStream(stream) unsubscribe() VR$coco  linetext Preferencespath index.wsfVcocococos8cs cs J X| 8{$efef  NameN.J.Q. LangeveldURI2grooveIde-)8f#}f#} 8gg B JR Wk q IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@IsLocaltrueNameThe GrooveloungeToolsM/GWS/Groove/1.0/Tools/grooveTelespace/xykkrthqbmkya5aevtcudn3sgfczbs4v5dekunsӀLg; \h my ~ [["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.indexHelpHome/ Preferences&Retreiving a list of tools from GrooveťSetup Wizard - AccountscVArial h$Wm Wm $ )linetextSetup Wizard - Accountspathwizaccounts.wsf/I$f#}f#}  NameVladURI2grooveIdentity://e6xunm7czmssdem8j52t4gu6vfr4un8n@sI$g$:g$:  /atts/pcdatasoap: xmlns:soap)http://schemao5 g$:g$: namespacesoap:1SO$g$,g$,  Tim K Tim Knip kUQ$gg  linetext Preferencespathtest.wsfUpgg95gg identities;9ggOK$SS  linetextHomepath index.wsfOSSFFFF000000060001001777AA000000000065000000001001710110090021800000600060033C200-1F35F35033C21FFFFF0102D00001000000330000000103184033C21F31048E0002933C300002000000360000000031,#title "Home" {grooveInteropSuite.gui.onStart()} 000400000009000000020330000500000009000000020330000600000032000000010F310FFFF0C00000 20 000700000019000000010201E00008000000AF0000000140,Geneva40,10A0304E44000104000100009000000150000000206914A06914A000A000000150000000233C21F33C21F000B00000005000000020000C00000020000000020403021F31E62000F0000005200000000400 10 4,appn4,send4,84,&4,84,34,800130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAPĺS1BExaj Rj R 00001000 URI2grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@  x_j Bj Bjj mj p  V amr |   accountNameTim K accountURI2grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@ identities_mode spaceName grooveInteropspacesdspaceURIN/GWS/Groove/1.0/Spaces/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2atools@toolsURIM/GWS/Groove/1.0/Tools/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2aـj pj pI1k;Uk;U namespacesoap:*LI n n namespacesoap:andyswarbs -PopG2#2/I$n n  !NameChris Holmes/MindjetURI2grooveIdentity://64z7nxenie7vinnpswatsuujcrm7uekq@-$n n  #NameCarlos Araujo\CrisalysURI2grooveIdentity://r7j6vaqqaipqt5pgrap6xpqagcw9wgq6@$n n  NameCarlos Araujo - oldURI2grooveIdentity://g8rvcmmwdqb7fnriyksk2sew5u8mic48@|x$n n  Name Carlos AraujoURI2grooveIdentity://3vsi49pfg5vuxu8nx3pnri5hir8jhxrr@ $n n  NameBob Doyle/GrooveURI9grooveIdentity://amrkzdsy6vdnwnxvdhu855ibyz8dagguts9fivg@VR$f"Ժf"  linetext Preferencespath index.wsfVf"պf"VR$f@f@  linetext Preferencespath index.wsfV'fAfA'_K_K Tim 'S׺_RS׺_RArial S׺SNLANDwinThis script runs every hour. VR$_fH_fH  linetext Preferencespath index.wsfV_fH_fHg W`` xmlns/http://webservices.groove.net/Groove/1.0/Tools/DgArial$X `!ob\I.*8eeee rOBf#uf#u/>y Arial [nPuLANDwinon postScanCallback() 28/01/03; 13:55:51 by TK callback called after hourly scan of news-aggregator this function sends new stories to Groove see: aggregatorData.root local i addr cnt = 0 body = "", title="no title", storyname="" tmpTable entryid startTime = clock.ticks() identityurl = "" stream host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort if !defined(aggregatorData.stories) return(false) if grooveInteropData.prefs.newsTool == "" return(false) if defined(grooveInteropData.prefs.news.toolAccountURI) identityurl = grooveInteropData.prefs.news.toolAccountURI else return(false) if not grooveInteropData.prefs.news.enabled return(false) addr = @aggregatorData.stories bundle // open a stream stream = tcp.openStream(host, port) for i = 1 to sizeof(addr^) storyname = nameof(addr^[i]) body = addr^[i].storytext if defined(addr^[i].channeltitle) title = addr^[i].channeltitle title = title + " - " + grooveInteropSuite.util.getStoryTitle(body) if !defined(addr^[i].grooveInterop) entryid = grooveInteropSuite.soap.addDiscussionEntry(grooveInteropData.prefs.newsTool, identityurl, title, string.htmlToEmail(body), stream) if entryid cnt = cnt + 1 new(tabletype, @tmpTable) tmpTable.EntryID = entryid tmpTable.Data = grooveInteropData.prefs.newsTool addr^[i].grooveInterop = tmpTable try tcp.closeStream(stream) if cnt == 1 radio.log.add("grooveInterop", "Sent "+cnt+" new story to Groove.", startTime) if cnt > 1 radio.log.add("grooveInterop", "Sent "+cnt+" new stories to Groove.", startTime) postScanCallback() ]V!NltL  '= In z tB authorTim Knip/Suite75 authorEmailt.knip@suite75.com description!GrooveInterop for Radio Userland. homePageUrlRhttp://radio.weblogs.com/0107414/stories/2003/01/14/grooveInteropToolForRadio.htmlname grooveInterop releaseDateversion0.5.3VArial IwArial VV9LANDwinon startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false s$eѣeѣ #Lgg C P  O \ 00001000 URI2grooveIdentity://3ismmbm2c`\Bg7պg7 B JR V  "+ 0: CL Q[ aalink008000bgcolorFFFFFFflRenderlink0000FFspaceGifspacetext000000vlink800080VArial V$hAhA  Name ashokpopgURI2grooveIdentity://9z9ezf7dr2mexxmnfqtaipmabviu5her@zV$hAhA + /Name"Ashok Hingorani/CompuTact SoftwareURI9grooveIdentity://g3uxpcge3sz5xiu2r5i3jtpu2rhsibqin66g3sp@D}$hAhA  Nameashok hingorani v2URI2grooveIdentity://4rd4nhcmstmknqwnijrwvc4jef3ikezq@$hAhA ) -Name Art Fritzson/Booz Allen HamiltonURI9grooveIdentity://e4i894t48bvaatqebka9yticei9pb3k2u9azk4b@sVR$_R _R  linetext Preferencespath index.wsfV_R _R B}~SֺgG * X Arial SW LANDwinon client(host,port=9080,data,stream=nil,flDebug=false) 22/01/03; 01:43:28 by TK create a tcp stream to a host when needed and send raw data when a stream is provided the connection will stay alive (HTTP 100-continue) TODO: on stream-close Groove responds with HTTP-error 400, why? local needCloseStream = false httpResult = "" try bundle // open a stream to Groove if needed if stream == nil try stream = tcp.openStream(host, port) needCloseStream = true else try tcp.closeStream(stream) return(false) bundle // write data to the stream try tcp.writeStream(stream, d* {Arial iźk #cLANDwinon subscribe (identityurl, eventclass, sourceURI, callbackURI, ttl) 08/02/03; 07:36:17 by TK subscribe to a Groove-event local addrSave soapaction = grooveInteropData.soap.template.groove.actions.createSubscription method = grooveInteropData.soap.template.groove.methods.createSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort tmpTable xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) addrSave = @grooveInteropData.groove.events bundle // create the input-message method = string.replaceAll(method, "##eventclass##", eventclass) method = string.replaceAll(method, "##sourceuri##", sourceURI) method = string.replaceAll(method, "##callbackuri##", callbackURI) method = string.replaceAll(method, "##timetolive##", ttl) try bundle // create the http-request, send it and handle response httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/CreateResponse", @addrBody) new (tabletype, @tmpTable) tmpTable.ID = xml.getValue(addrBody, "CreateResult") tmpTable.IdentityURL = identityurl tmpTable.sourceURI = sourceURI tmpTable.CallbackURI = callbackURI tmpTable.EventClass = eventclass tmpTable.TimeToLive = ttl addrSave^.[sizeof(addrSave^)] = tmpTable return(tmpTable.CallbackURI) return(false) dialog.notify(subscribe("grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@","urn:groove-net:DiscussionEvent", grooveInteropData.prefs.blogTool, "dpp://localhost/BLOGEVENTc"+clock.ticks(), 2, @grooveInteropData.groove.events)) 9LuArial  l5rcY{,LANDwinon saveEvents (addrXmlTable, addrSave) 10/02/03; 17:49:20 by TK Save events to a table local addrBody addrEvent addrEventData addrTemp lst, lstTmp, i, j, k eventtype, eventsource, eventclass tmpTable try if xml.getPathAddress(@addrXmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lst = xml.getAddressList(addrBody, "Event") for i = 1 to sizeof(lst) addrEvent = lst[i] eventtype = xml.getValue( addrEvent, "EventType") eventsource = xml.getValue( addrEvent, "EventSource") eventclass = xml.getValue( addrEvent, "EventClass") if xml.getPathAddress(addrEvent, "EventData", @addrEventData) if eventtype == "DiscussionAddEventData" or eventtype == "DiscussionUpdateEventData" if xml.getPathAddress(addrEventData, "DiscussionEntries/DiscussionEntry", @addrTemp) new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.URI = xml.getValue(addrTemp, "URI") tmpTable.ID = xml.getValue(addrTemp, "ID") tmpTable.ParentID = xml.getValue(addrTemp, "ParentID") tmpTable.Subject = xml.getValue(addrTemp, "Subject") tmpTable.Body = xml.getValue(addrTemp, "Body") tmpTable.Created = xml.getValue(addrTemp, "Created") tmpTable.Modified = xml.getValue(addrTemp, "Modified") tmpTable.CreatedBy = xml.getValue(addrTemp, "CreatedBy") tmpTable.ModifiedBy = xml.getValue(addrTemp, "ModifiedBy") tmpTable.Unread = xml.getValue(addrTemp, "Unread") addrSave^.[sizeof(addrSave^)] = tmpTable if eventtype == "DiscussionDeleteEventData" if xml.getPathAddress(addrEventData, "DiscussionIDs", @addrTemp) lstTmp = xml.getAddressList(addrTemp, "ID") for j = 1 to sizeof(lstTmp) new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.ID = lstTmp[j]^ addrSave^.[sizeof(addrSave^)] = tmpTable if eventtype == "FileAddEventData" or eventtype == "FileUpdateEventData" if xml.getPathAddress(addrEventData, "FileDescriptor", @addrTemp) new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.URI = xml.getValue(addrTemp, "URI") tmpTable.ID = xml.getValue(addrTemp, "ID") tmpTable.Created = xml.getValue(addrTemp, "Created") tmpTable.Modified = xml.getValue(addrTemp, "Modified") tmpTable.CreatedBy = xml.getValue(addrTemp, "CreatedBy") tmpTable.ModifiedBy = xml.getValue(addrTemp, "ModifiedBy") tmpTable.Unread = xml.getValue(addrTemp, "Unread") tmpTable.FolderID = xml.getValue(addrTemp, "FolderID") tmpTable.Name = xml.getValue(addrTemp, "Name") tmpTable.Type = xml.getValue(addrTemp, "Type") tmpTable.Size = xml.getValue(addrTemp, "Size") addrSave^.[sizeof(addrSave^)] = tmpTable if eventtype == "FileDeleteEventData" new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.ID = xml.getValue(addrEventData, "FileID") addrSave^.[sizeof(addrSave^)] = tmpTable if sizeof(addrSave^) > 0 return(addrSave) else return(false) else grooveInteropData.groove.subscribed = false grooveInteropData.groove.ready = false return(false) else dialog.notify(tryError) return(false) bundle // testcode local xmlTable, soapStr = string(grooveInteropData.testText) soapStr2 = string(grooveInteropData.testText2) soapStr3 = string(grooveInteropData.testText3) if defined(grooveInteropData.groove.eventTable) delete(@grooveInteropData.groove.eventTable) new(tabletype, @grooveInteropData.groove.eventTable) if xml.compile(soapStr, @xmlTable) saveEvents(@xmlTable, @grooveInteropData.groove.eventTable) if xml.compile(soapStr2, @xmlTable) saveEvents(@xmlTable, @grooveInteropData.groove.eventTable) if xml.compile(soapStr3, @xmlTable) saveEvents(@xmlTable, @grooveInteropData.groove.eventTable) 8fӺf  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceO5eѦeѦVR$cr}cr}  linetext Preferencespath index.wsfVcr}cr}cr}cr}cr}cr}cr}cr}cr}cr}VR$[ [  linetext Preferencespath index.wsfV)[ [ VR$[[  linetext Preferencespath index.wsfV!*8[[ ![[[A[AVR$[[  linetext Preferencespath index.wsfV+4[[VR$[u[u  linetext Preferencespath index.wsfV+[u[uVR$[7[7  linetext Preferencespath index.wsfVnq[7[7t.!!ȺW\  !- 6 createRequest/mheaderEpostvars,VArial 2oV΀W\W\)\Arial !EWj63=LANDwinon running () 24/01/03; 15:12:39 by TK Check whether Groove is running local soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path = "/GWS/Groove/1.0/Accounts/" ret = "" host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort if !nonce return(false) bundle // create the http-request grooveInteropData.groove.webservicesnonce = nonce httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction) try ret = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) if ret grooveInteropData.groove.ready = true return(true) else grooveInteropData.groove.ready = false return(false) 8 beobeo  linetext8(be"dG]0XZX;EnfB:9:B>W=EJJ|K![YVF])Q)!*+4+nqnX6*6176ho}pp0Z0NZ"XnXK&(HKJ gjHs erzG,0ou3T00.5b-,jNb z_E vN78Z[j!l X !"{>*U5`Oz!@V95h.yC gT (n}Y/|7:.2"5<=p=? K;KQhWX Ѐw$gg C&E92 MS Sans Serif Y#wLANDwinon buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) w8_3ź_3 B JR We k IdentityURL2grooveIdentity://ybvg2viqp2yggghttaxhgi4riv8zx4i2@IsLocaltrueName Start HereToolsM/GWS/Groove/1.0/Tools/grooveTelespace/tvknrmqib29zaxpxxqz4ek73xc3yzqsr4wnqzri _3Ժ_3'8_E._E.  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ :$p|Vp|V  NameAndy SwarbrickURI2grooveIdentity://npjfz3utwmfjdmb38c7zzgxa2kyjypv9@0002000 ReadResponserЀLjzjz 1 <^ a  CallbackURI!dpp://localhost/BLOGEVENTc1591323 EventClassurn:groove-net:DiscussionEventID'9yyvntrmvn9eksyq9r3u2yyv9hgzvhwhmnatybs IdentityURL2grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@ sourceURI/GWS/Groove/1.0/Discussion/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/q448mdmcmacfa6msjdqp8krdhixyehcc3tz3a82.Discussion.Tool/DiscussionDataModelDelegate TimeToLives7jxպjz;7tjWl  ? I      jWBody Yeah! It works... the grooveInterop Tool is now subscribed to the Groove Discussion Tool from where I blog this. When an entry is added, edited or deleted, the event is added to the event-queue. Hehe, this is much better then reading the whole discussion each minute..Created2003-02-08T06:43:18.553+01:00 CreatedBy2grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@Modified2003-02-09T14:44:35.129+01:00 ModifiedByParentIDPostID00000746SubjectTesting GWS EventsURI/GWS/Groove/1.0/Discussion/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/q448mdmcmacfa6msjdqp8krdhixyehcc3tz3a82.Discussion.Tool/DiscussionDataModelDelegate/8873638When;wArial VV  K   Q ^  00001000 URI2grooveIdentity://bxhzvqdj5et5nbtq34p37ui9c4zc6xjt@ 00002000 URI2grooveIdentity://9ikaitigzbgzexcavqemcq53y4zrfrxz@ 00003000 URI2grooveIdentity://bf3v5frcxx9yazk9cqzwkhk96pzneezr@ 00004000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 00005000 URI2grooveIdentity://xqstfifmijty3strk45iubyha3n6anvu@ 00006000 URI9grooveIdentity://8uhcu7dj36iuth7k3vackjnqxe5edevigivq2w4@ 00007000 URI2grooveIdentity://qzssy6nvfdakuuw4m269snymxu9zanwx@ 00008000 URI2grooveIdentity://59x5g34xtjtcq6u2a8xvqndjsxfm9fwv@ 00009000 URI2grooveIdentity://7jsmsyhzguerxzf36gqdbwrkj27598hu@ 00010000 URI2grooveIdentity://ephumzdp2b2se78iprc9nmk46h5ea4cg@ 00011000 URI2grooveIdentity://gpun5q2y7wswicbthhssdfj28h6zn387@ 00012000 URI2grooveIdentity://ypmwcikqcs5wwi9nsvqyafbhckwycnn4@ 00013000 URI2grooveIdentity://e6xunm7czmssdem8j52t4gu6vfr4un8n@ 00014000 URI2grooveIdentity://v75h6amuxysxde2t6582fx5hyyvhw9tn@ 00015000 URI9grooveIdentity://e4i894t48bvaatqebka9yticei9pb3k2u9azk4b@ 00016000 URI2grooveIdentity://373ssaw8hc547fd744cpnvaxp562h42m@ 00017000 URI2grooveIdentity://qfaeeiw2ceimkza3ts3g8ehc4wz5dwyy@ 00018000 URI9grooveIdentity://ane9umacped92c65syvi2t7wcy2i3jpggzxpvzr@ 00019000 URI2grooveIdentity://4nys8f582vmnpref6nzjs4zvvqguaprm@ 00020000 URI2grooveIdentity://itv5kt6py7knnqdvr6y6mtkcvqi6m2j7@ 00021000 URI2grooveIdentity://jywkysb4y64pwhkcj3bcvs3sph34rtz4@ 00022000 URI2grooveIdentity://ssvxcakzgwjsrectcgkc93mcjfn3m2a8@2grooveIdentity://fbr4ehkzzf6ehqaYBchcchc #( 8ee C QZ i 00001000 URI2grooveIdentity://52j4mc6dr8eqdsjwj53v853ug6vujr6j@FFFF000000060001001777AA00000000006A0000000010017101804904218000006000600329200-181381302E032921FFFFF0106E00001000000370000000106E4084032921F30048E000163291A60000200000073000000006E,#title "Retreiving a list of tools from Groove"

Retrieving a list of tools from Groove, please wait...

00040000000A000000020170100050000000A00000002017000006000000650000000210D30FFFF0A00000 20 10F310FFFF0C00000 10 00070000002F00000002010180101E000080000015F0000000240,Arial40,404E440003210400080101040,Geneva40,10A0304E44000104000100009000000150000000209917A09917A000A000000150000000232921F32921F000B00000005000000020000C00000018000000016E671F17711A30000F0000005200000000400 10 4,bund4,04,F34,4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAclcnn_~.gȺg > AO Raccount2grooveIdentity://93knjnckbmqtvjrgiteb5egg6hxg5kma@ok Get Spacesopspaces9gȺgMIjgg _ m{      (^ m  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/3gqki7sjh8sazw4vsbpjb9su7erns5k5qu5yxz2 00002000 Name Start Here00003000 DescriptionWelcome to Groove Workspace! This shared space was designed to familiarize you with Groove Workspace along with some of the most popular shared space tools. As you explore each tool, you'll begin to get an idea of the ways Groove can help you. This space includes the following tools: Discussion - used for forum-style, structured conversations Pictures - drag and drop or add images for all members to see Files - works like Windows Explorer except that all members see changes automatically as files are added or edited. Web Links - for sharing links and viewing Web sites, supports co-viewing in which one member browses and others follow along To start, go to the Discussion tool by clicking on the tab below. Thank you!00004000 Created2003-01-15T16:08:30.968+01:0000005000 Modified2003-02-01T05:20:54.551+01:0000006000 Localtrue00007000 IdentityURL2grooveIdentity://93knjnckbmqtvjrgiteb5egg6hxg5kma@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/3gqki7sjh8sazw4vsbpjb9su7erns5k5qu5yxz200009000 MembersGMt\ Arial 4($8p&%p&% C Qq 00001000 URI2grooveIdentity://ijxdpg59e2xq9pwix6gk5329kam73bn8@ 00002000 NameStefan Solomon/TeamDirection00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/ijxdpg59e2xq9pwix6gk5329kam73bn8@00004000 AwarenessOffLineh*&8p&%p&% J Xl { 00001000 URI9grooveIdentity://8uhcu7dj36iuth ? +Arial %!!t8LANDwinon upstreamFile (toolData, stream, filename, filesize) 02/02/03; 21:10:23 by TK get a file from a Groove Files Tool and copy it to a Radio www-folder on addToLinkTable(toolData, filename, filesize) 02/02/03; 21:11:31 by TK create a hyperlink to the file and store in a table local str = "" tmpTable try str = str + "" str = str + filename + "" new(tabletype, @tmpTable) tmpTable.Name = filename tmpTable.Size = filesize tmpTable.href = str if !defined(grooveInteropData.groove.filesLinks) new (tabletype, @grooveInteropData.groove.filesLinks) if !defined(grooveInteropData.groove.filesLinks[filename]) grooveInteropData.groove.filesLinks[filename] = tmpTable local nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInte$8tArial gA׺h2{2LANDwinon refreshContacts(addrIdentity, addrContacts, stream=nil) 01/02/03; 03:13:41 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readContacts method = grooveInteropData.soap.template.groove.methods.readContacts nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 needCloseStream = false bundle // open a stream try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) try path = addrIdentity^.Contacts identityurl = addrIdentity^.URI bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local tmpTable lst = xml.getAddressList(addrBody, "Contact") for i = 1 to sizeof(lst) new (tabletype, @tmpTable) try tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.URI = xml.getValue(lst[i], "URI") if !defined(addrContacts^.[tmpTable.Name]) addrContacts^.[tmpTable.Name] = tmpTable bundle // close the stream try if needCloseStream tcp.closeStream(stream) if sizeof(addrContacts^) > 0 return(true) return(false) $UQ$g5g5  linetext Preferencespathtest.wsfUg5g5HArial S׺`KHLANDwinThis script runs in its own thread. 24/01/03; 14:01:44 by TK loop //loop until the application quits 01/02/03; 00:39:36 by TK if !grooveInteropData.initialized grooveInteropSuite.install() bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort thread.sleepFor (10) //sleep for ten seconds b Q$WW   discussionkfileskHwbWWWWY$1WW namespacesoap:</attsa\00002000 HeaderY$ S׺W $o$hкh  Name MatthewP2URI2grooveIdentity://zdmq3y6zxgbz92bu43e94aec5inpaf55@sz8p&%p&% C Qg v 00001000 URIԀ L' Arial `m'QfhLANDwinon contactNameByURI (uri) 10/02/03; 22:36:17 Arial fh( 2qLANDwinon refreshIdentities (accountsXmlTable, addrAccounts) 24/01/03; 17:13:40 by TK retreive identities local addrBody, addrIdentity, addrContacts lstAccounts, lstIdentities i, j, k tmpTable contacts = "" lstIdentity if xml.getPathAddress(@accountsXmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lstAccounts = xml.getAddressList(addrBody, "Account") for i = 1 to sizeof(lstAccounts) contacts = xml.getValue(lstAccounts[i], "Contacts") lstIdentities = xml.getAddressList(lstAccounts[i], "Identities") for j = 1 to sizeof(lstIdentities) if sizeof(lstIdentities) > 0 lstIdentity = xml.getAddressList(lstIdentities[j], "Identity") for k = 1 to sizeof(lstIdentity) new(tabletype, @tmpTable) tmpTable.URI = xml.getValue(lstIdentity[k], "URI") tmpTable.Name = xml.getValue(lstIdentity[k], "Name") tmpTable.Spaces = xml.getValue(lstIdentity[k], "Spaces") tmpTable.Contacts = contacts addrAccounts^.[tmpTable.Name] = tmpTable TP$SjS  envelopegroove3TpppLpL $p|Vp|V 1 5Name(David Sharples/Parallelspace CorporationURI9grooveIdentity://j9neqbnyrhheqj56n5ih7qeijnesefkwk4vxsww@{ _$p|Vp|V  NameDavid Scult/GrooveURI2grooveIdentity://szh5uv5htf3wkxyzk4a579vqv7pfi4ns@' $p|Vp|V % )NameDarrenLayton - X InteractiveURI2grooveIdentity://ipwiqer35ssus38h88hstjy93aqck5mr@ $p|Vp|V  Name DarrenLaytonURI2grooveIdentity://ephumzdp2b2se78iprc9nmk46h5ea4cg@{}y$p|Vp|V  NameDaniel ShurmanURI2grooveIdentity://3r4sdnhdky488i5nb3tw96xktyywx7xn@|$p|Vp|V  NameDaniel A. ShurmanURI2grooveIdentity://umbuhmcah9jjd2zb9w3jtu77fvpmsm9d@}$p|Vp|V  NameDan Shannon/GrooveURI2grooveIdentity://28kmdfgzckmk4gnm5qykszr4y7g6qav4@Aws$p|Vp|V  NameComNexusURI2grooveIdentity://fxik4vx6yk6v2yzr4pzz8pqnne58bkbb@ĀDP$p|Vp|V  Name Clive DaviesURI2grooveIdentity://9qjs2erf8y2hneybgsk5nj3vkppd6u7h@{|DP$p|Vp|V  Name Clifford CateURI2grooveIdentity://7vgyv8x6skjhfi5wi3qyt3jx7vu2hr38@I2S׺W startupx namespacIkS׺_RArial S׺SBNLANDwinThis script runs every hour. VR$WxWx  linetext Preferencespath index.wsfVWxWxWw{Ww{VR$WoWo  linetext Preferencespath index.wsfVWoWof B`# \h my ~ [["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.index}}HelpHome Preferences:Setup Wizard - AccountsVArial f2SS&  linet2S9S9$SS h mlinetext[["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.indexpath index.wsf3Arial jrpoZLANDwinon subscribeAll () local identityurl toolData callbackuri succes = false ret = false try if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) if defined(grooveInteropData.prefs.blog) identityurl = grooveInteropData.prefs.blog.toolAccountURI toolData = grooveInteropData.prefs.blog.toolLH|Q|Q ) 3i r  H M] b    Created2002-08-15T15:23:08.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID0a68c292123756fed351c8f6ef828997659f361d0c185668cID06bbd7fff72edd69027a8fdf8c8c54fa09aaa37997d00a9a4Modified2002-08-15T15:23:08.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name MVC-0021.jpgPathQC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozoz\MVC-0021.jpgSize51715TypeFileUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/6bbd7fff72edd69027a8fdf8c8c54fa09aaa37997d00a9a43D1SӺS namespacesoap: PreferencesDS꫺Sg_D_D  !- <H Wc r~   /; JV eq       ". =I Xd s      ! 0< KW fr       #/ >J Ye t /atts00002000 Spacex00003000 SpaceW00004000 Space00005000 Space&00006000 Spacekr00007000 Space00008000 SpaceJ00009000 Space00010000 Space00011000 Space 00012000 Space00013000 Space]00014000 Space00015000 SpaceD00016000 SpaceBM00017000 Space>00018000 Space:00019000 Space7Z00020000 Space00021000 Spaceϋ00022000 Space.00023000 Spacee00024000 Space00025000 Spacec{00026000 Spacea00027000 Space00028000 Space^00029000 SpaceY00030000 Spacem00031000 Space00032000 Space00033000 SpaceP00034000 Space00035000 Space00036000 Spaceo00037000 Space00038000 Space00039000 Spacec00040000 Space00041000 Spacej00042000 Space400043000 Space00044000 Space$ SYSY $SSSͺS% SoSo%OK$SiSi  linetextHomepath index.wsfOSiSieK$S׺S  linetextHomepath index.wsfO.*eS׺S(paArial Y!FIpHLANDwik 8cluclu C QZ i 00001000 URI2grooveIdentity://52j4mc6dr8eqdsjwj53v853ug6vujr6j@ 00002000 Namekarld00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/52j4mc6dr8eqdsjwj53v853ug6vujr6j@00004000 AwarenessOffLine8cluclu C Qb q 00001000 URI2grooveIdentity://7vgyv8x6skjhfi5wi3qyt3jx7vu2hr38miPhԺh  #/ @L ]i z   (4 EQ bn       -9 JV gs      ! 2> O[ lx      & 7C T` q}      + <H Ye v      $0 AM ^j {       )5 FR co       .: KW ht        " 3 ? P \ m y  ' 8 D U a r ~   , = I Z f w   % 1 B N _ k |  * 6 G S d p   /; LX iu  J9LuArial l5nbY{/LANDwinon saveEvents (addrXmlTable, addrSave) 10/02/03; 17:49:20 by TK Save events to a table local addrBody addrEvent addrEventData addrTemp lst, lstTmp, i, j, k eventtype, eventsource, eventclass tmpTable try if xml.getPathAddress(@addrXmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lst = xml.getAddressList(addrBody, "Event") for i = 1 to sizeof(lst) addrEvent = lst[i] eventtype = xml.getValue( addrEvent, "EventType") eventsource = xml.getValue( addrEvent, "EventSource") eventclass = xml.getValue( addrEvent, "EventClass") if xml.getPathAddress(addrEvent, "EventData", @addrEventData) if eventtype == "DiscussionAddEventData" or eventtype == "DiscussionUpdateEventData" if xml.getPathAddress(addrEventData, "DiscussionEntries/DiscussionEntry", @addrTemp) new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.URI = xml.getValue(addrTemp, "URI") tmpTable.ID = xml.getValue(addrTemp, "ID") tmpTable.ParentID = xml.getValue(addrTemp, "ParentID") tmpTable.Subject = xml.getValue(addrTemp, "Subject") tmpTable.Body = xml.getValue(addrTemp, "Body") tmpTable.Created = xml.getValue(addrTemp, "Created") tmpTable.Modified = xml.getValue(addrTemp, "Modified") tmpTable.CreatedBy = xml.getValue(addrTemp, "CreatedBy") tmpTable.ModifiedBy = xml.getValue(addrTemp, "ModifiedBy") tmpTable.Unread = xml.getValue(addrTemp, "Unread") addrSave^.[sizeof(addrSave^)] = tmpTable if eventtype == "DiscussionDeleteEventData" if xml.getPathAddress(addrEventData, "DiscussionIDs", @addrTemp) lstTmp = xml.getAddressList(addrTemp, "ID") for j = 1 to sizeof(lstTmp) new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.ID = lstTmp[j]^ addrSave^.[sizeof(addrSave^)] = tmpTable if eventtype == "FileAddEventData" or eventtype == "FileUpdateEventData" if xml.getPathAddress(addrEventData, "FileDescriptor", @addrTemp) new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.URI = xml.getValue(addrTemp, "URI") tmpTable.ID = xml.getValue(addrTemp, "ID") tmpTable.Created = xml.getValue(addrTemp, "Created") tmpTable.Modified = xml.getValue(addrTemp, "Modified") tmpTable.CreatedBy = xml.getValue(addrTemp, "CreatedBy") tmpTable.ModifiedBy = xml.getValue(addrTemp, "ModifiedBy") tmpTable.Unread = xml.getValue(addrTemp, "Unread") tmpTable.FolderID = xml.getValue(addrTemp, "FolderID") tmpTable.Name = xml.getValue(addrTemp, "Name") tmpTable.Type = xml.getValue(addrTemp, "Type") tmpTable.Size = xml.getValue(addrTemp, "Size") addrSave^.[sizeof(addrSave^)] = tmpTable if eventtype == "FileDeleteEventData" new (tabletype, @tmpTable) tmpTable.EventType = eventtype tmpTable.EventSource = eventsource tmpTable.EventClass = eventclass tmpTable.ID = xml.getValue(addrEventData, "FileID") addrSave^.[sizeof(addrSave^)] = tmpTable if sizeof(addrSave^) > 0 return(addrSave) else return(false) else grooveInteropData.groove.subscribed = false grooveInteropData.groove.ready = false return(false) else dialog.notify(tryError) return(false) bundle // testcode local xmlTable, soapStr = string(grooveInteropData.testText) soapStr2 = string(grooveInteropData.testText2) soapStr3 = string(grooveInteropData.testText3) if defined(grooveInteropData.groove.eventTable) delete(@grooveInteropData.groove.eventTable) new(tabletype, @grooveInteropData.groove.eventTable) if xml.compile(soapStr, @xmlTable) saveEvents(@xmlTable, @grooveInteropData.groove.eventTable) if xml.compile(soapStr2, @xmlTable) saveEvents(@xmlTable, @grooveInteropData.groove.eventTable) if xml.compile(soapStr3, @xmlTable) saveEvents(@xmlTable, @grooveInteropData.groove.eventTable) JF$SS  bodyeheaders&JSSSS!YZArial S4WDI-jELANDwinon resultAsXml(httpResult) local addrBody addrTable tmpTable2 new( tableType, @addrTable) new( tableType, @grooveInteropData.groove.response) addrTable.body = string.httpResultSplit(httpResult) if string.patternMatch("HTTP/1.1 200", addrTable.body) addrTable.body = string.httpResultSplit(addrTable.body) if xml.compile(addrTable.body, @grooveInteropData.groove.response) return(@grooveInteropData.groove.response) return(false) e) return(@tmpTable) return(false) n(addrXmlTable) return(false) ") if xml.getPathAddress(@xmlData, "Envelope/Body/CreateResponse", @addrBody) try entryid = xml.getValue(addrBody, "CreateResult") return(true) return(false) +WvºWv 00001000+{WvTWvT$W(պW( F V00001000 Member2grooveIdentity://b5jrnrhz3mm96m3vss8kj8x2qa69q6ih@00002000 Member2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@)linetextSetup WizarҀ>SVSVR$S+S+  linetext Preferencespath index.wsfVnS+S+;$8cluclu C Q` o 00001000 URI2grooveIdentity://p45epwhfssqxrqdm9ie2kmmazb9agakz@ 00002000 Name Sabine Kamp00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/p45epwhfssqxrqdm9ie2kmmazb9agakz@00004000 AwarenessOffLineal; font-size:10pt; } //--> = 0 return(true) else return(false) dialog.notify(toolStatus("/GWS/Groove/1.0/Discussion/grooveTelespace/grooveIdentity_58_47_47rw7p4fzrrtgbsycfd7d6facvzh38xb39_64@3ijciqajivpte8z7hw82dfwyfbnask7fe5qydq2/ToolContainer/ug5djaa75u5xp3ysax3i5dgab67x5r358j8qs7a.Discussion.Tool/DiscussionDataModelDelegate")) "hz0Arial "BMgg C P  O \   ,b o  + 8n {  7 Dz   00001000 URI2grooveIdentity://d8b8eyn6w53sey834sjg9gd38c2iniff@ 00002000 URI2grooveIdentity://bxhzvqdj5et5nbtq34p37ui9c4zc6xjt@ 00)4@#|]Arial `TWh8'ILANDwinon refresh (addrSaveTable) 24/01/03; 15:56:43 by TK Retrieve all relevant data from Groove This is the main function to retreive Groove-data 25/01/03; 02:35:24 by TK added support for identyurl in SOAP-header 06/02/03; 16:07:05 by TK deprecated! ------------------------------------------h' %Arial ooV3r6LANDwinon checkBlog (stream=nil) 11/02/03; 21:41:57 by TK check whether all Groove Discussion Entries are present in the Radio tool remove all entries present in the Radio Tool, which where deleted from Groove Call this function once a hour or so, in case we missed some events some helpers on findReplies(id, depth=1) 11/02/03; 01:33:30 by TK find all replies for a Groove Discussion topic local lst, i, j, addr sublist cnt = 1 tmp if not defined(grooveInteropData.groove.posts[id]) return(false) addr = @grooveInteropData.groove.posts new (tabletype, @lst) for i = 1 to sizeof(addr^) if addr^[i].ParentID == id new (tabletype, @tmp) tmp.addr = @addr^[i] tmp.depth = depth lst.[cnt] = tmp cnt = cnt + 1 sublist = findReplies(addr^[i].ID, depth+1) if sublist != false for j = 1 to sizeof(sublist) new (tabletype, @tmp) tmp.addr = sublist[j].addr tmp.depth = sublist[j].depth lst.[cnt] = tmp cnt = cnt + 1 return(lst) on buildPost(id) 11/02/03; 01:29:53 by TK built a threaded list (replies in Groove Discussion) for a post only the top-level entry in a Groove Discussion becomes a post!!! local addr i, j lst post maxdepth = 1 html = "
" body = "" username = "Unknown User" get top-level entry id = findTopParent(id) if not defined(grooveInteropData.groove.posts[id]) return(false) addr = @grooveInteropData.groove.posts[id] body = addr^.Body check for any replies lst = findReplies(id) just return the body if there are no replies if sizeof(lst) == 0 return(body) build the post for i = 1 to sizeof(lst) try username = grooveInteropSuite.util.groove.contactNameByURI(lst.[i].addr^.CreatedBy) html = html + "
" html = html + "
" + username + " | " + lst.[i].addr^.Subject + "" html = html + "
"+string.mid(lst.[i].addr^.Created, 1, 10) + " " html = html + string.mid(lst.[i].addr^.Created, 12, 5) + "

" html = html + lst.[i].addr^.Body + "
" html = html + "
" return post return(body + html) on doPublish(addrTable=nil) local id lst, i username = "Unknown User" postid text= "

" body wptext if addrTable != nil id = findTopParent(addrTable^.ID) body = buildPost(id) if defined(grooveInteropData.groove.posts[id].PostID) postid = grooveInteropData.groove.posts[id].PostID if defined(weblogData.posts[postid]) post = @weblogData.posts[postid] if wp.newTextObject(body, @wptext) post^.text = wptext grooveInteropData.groove.postsToPublish.[sizeof(grooveInteropData.groove.postsToPublish)] = post on findTopParent(id) local addr, i, j lst, sublst, tmpTable cnt = 1, depth = 1 if not defined(grooveInteropData.groove.posts[id]) return(false) addr = @grooveInteropData.groove.posts[id] if addr^.ParentID == "-1" or addr^.ParentID == -1 or addr^.ParentID == "" return(addr^.ID) else findTopParent(addr^.ParentID) on DiscussionAddEvent(addr, updating=false) local startTime = clock.ticks() tmpTable body, username = "Unknown User" try if not defined(grooveInteropData.groove.posts) new (tabletype, @grooveInteropData.groove.posts) bundle // try to retreive username try username = grooveInteropSuite.util.groove.contactNameByURI(addr^.CreatedBy) if addr^.ParentID == "-1" or addr^.ParentID == -1 or addr^.ParentID == "" top-level entry if defined(grooveInteropData.prefs.showAccountName) if grooveInteropData.prefs.showAccountName == true addr^.Body = ""+username+":
" + addr^.Body if not updating post = radio.weblog.post(addr^.Body) post^.title = addr^.Subject addr^.PostID = nameof(post^) addr^.When = post^.when bundle // update post-title try if defined(addr^.PostID) if defined(weblogData.posts[addr^.PostID]) weblogData.posts[addr^.PostID].title = addr^.Subject grooveInteropData.groove.posts[addr^.ID] = addr^ doPublish(@grooveInteropData.groove.posts[addr^.ID]) else it's a child entry... grooveInteropData.groove.posts[addr^.ID] = addr^ doPublish(@grooveInteropData.groove.posts[addr^.ID]) radio.log.add("grooveInterop","Groove Discussion Entry \""+addr^.Subject+"\" was posted to the Radio-weblog.",startTime) else radio.log.add("grooveInterop","Error in \"DiscussionAddEvent\" "+tryError,startTime) on addMissingEntries(lst) local i entryid tmp if !defined(grooveInteropData.groove.posts) return(false) for i = 1 to sizeof(lst) entryid = xml.getValue(lst[i], "ID") if not defined(grooveInteropData.groove.posts[entryid]) new (tabletype, @tmp) tmp.ID = entryid tmp.ParentID = xml.getValue(lst[i], "ParentID") tmp.Subject = xml.getValue(lst[i], "Subject") tmp.Body = xml.getValue(lst[i], "Body") tmp.Created = xml.getValue(lst[i], "Created") tmp.Modified = xml.getValue(lst[i], "Modified") tmp.CreatedBy = xml.getValue(lst[i], "CreatedBy") tmp.ModifiedBy = xml.getValue(lst[i], "ModifiedBy") tmp.Unread = xml.getValue(lst[i], "Unread") tmp.URI = xml.getValue(lst[i], "URI") DiscussionAddEvent(@tmp) on checkGrooveDeletes(lst) local addr i, j marked entryid cnt = 1 found = false postid if !defined(grooveInteropData.groove.posts) return(false) addr = @grooveInteropData.groove.posts try new (listtype, @marked) for j = 1 to sizeof(addr^) for i = 1 to sizeof(lst) entryid = xml.getValue(lst[i], "ID") if entryid == nameof(addr^[j]) found = true if not found marked[cnt] = nameof(addr^[j]) cnt = cnt + 1 found = false for i = 1 to sizeof(marked) if defined(addr^[marked[i]].PostID) postid = addr^[marked[i]].PostID delete(@weblogData.posts[postid]) delete(addr^[marked[i]]) if sizeof(marked) > 0 radio.weblog.publish() main code local startTime = clock.ticks() httpRequest = "" httpResult = "" identityurl = "" nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort method = grooveInteropData.soap.template.groove.methods.readDiscussion soapaction = grooveInteropData.soap.template.groove.actions.readDiscussion tooldata xmlData needCloseStream = false if !nonce or !grooveInteropData.groove.ready or grooveInteropData.rootupdates.updating return(false) if grooveInteropData.prefs.blogTool == "" return(false) bundle // create the groove-posts table if needed if !defined(grooveInteropData.groove.posts) new (tabletype, @grooveInteropData.groove.posts) bundle // open a stream try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) else return(false) bundle // send request try tooldata = grooveInteropData.prefs.blogTool if defined(grooveInteropData.prefs.blog.toolAccountURI) identityurl = grooveInteropData.prefs.blog.toolAccountURI httpRequest = grooveInteropSuite.http.createRequest(nonce,method,tooldata,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) else return(false) bundle // handle response new(tabletype, @xmlData) try if xml.compile(httpResult, @xmlData) check for a fault if xml.getPathAddress(@xmlData, "Envelope/Body/Fault", @addrBody) local faultcode = xml.getValue(addrBody, "faultcode") faultstring = xml.getValue(addrBody, "faultstring") return(false) if xml.getPathAddress(@xmlData, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local lst create a list of all entries lst = xml.getAddressList(addrBody, "DiscussionEntry") delete all registered entries in the tool which are no longer in the Groove Discussion checkGrooveDeletes(lst) add entries which where missed by Groove Events addMissingEntries(lst) bundle // close the stream try if needCloseStream tcp.closeStream(stream) bundle // test code checkBlog () 'VR$cjźcj  linetext Preferencespath index.wsfVcjźcjcjźcjcjźcjcjźcjcjźcj - MS Sans Serif Eu`Q2LANDwinon firstFilter (adrPageTable) return (true) / Create HTTP/1.1 headerɀ *Bg7պg7 %<gArial SyWcJ]HLANDwinon grooveHeader8p&%p&% C Q` o 00001000 URI2grooveIdentity://v9nkr6k28s3ejtdavqcerg2nuw59374j@ 00002000 Name Doug Bolton00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/v9nkr6k28s3ejtdavqcerg2nuw59374j@00004000 AwarenessOffLineۀ s PVQ#Arial  fͺi,MWLANDwinon refreshSpaces (addrIdentity, addrSpaces, stream=nil) 24/01/03; 17:13:40 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readSpaces method = grooveInteropData.soap.template.groove.methods.readSpaces nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 needCloseStream = false bundle // open a stream if needed try if stream == nil needCloseStream = true  VQ#Arial  fͺi,MWLANDwinon refreshSpaces (addrIdentity, addrSpaces, stream=nil) 24/01/03; 17:13:40 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readSpaces method = grooveInteropData.soap.template.groove.methods.readSpaces nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 needCloseStream = false bundle // open a stream if needed try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) return(false) else return(false) try path = addrIdentity^.Spaces identityurl = addrIdentity^.URI bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local tmpTable lst = xml.getAddressList(addrBody, "Space") for i = 1 to sizeof(lst) new (tabletype, @tmpTable) tmpTable.URI = xml.getValue(lst[i], "URI") tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.Tools = xml.getValue(lst[i], "Tools") tmpTable.IsLocal = xml.getValue(lst[i], "Local") tmpTable.Members = xml.getValue(lst[i], "Members") tmpTable.IdentityURL = identityurl if tmpTable.IsLocal == "true" addrSpaces^.[cnt] = tmpTable cnt = cnt + 1 bundle // close the stream try if needCloseStream tcp.closeStream(stream) if sizeof(addrSpaces^) > 0 return(true) return(false) F`!SHc8D  /; P\ r~ addDiscussionEntry clearDiscussioncreateFileDescriptor ێdeleteDiscussionEntry grooveHeader#rpc߱updateDiscussionEntryg upstreamFile`VArial %t9eDeleteEventDataT%|Q|Q ) 3i r  T@<|剺| 00001000 Envelope @'T.|z|z  ". </atts jL00002000 Header n 00003000 Bodyi~T$|z|z  (/atts00002000 ReadResponse`VT$|z|z  &/attsT00002000 ReadResultLUp until now I only had a look at accessing Groove Web Services (GWS) locally (SOAP-client on same device as Groove Workspace). The Groove Access Point can be used to access GWS remotely. Although remote access is only available in 'Preview Mode' in the current release of Groove (2.5a), it gives a good insight in what will be possible.
Check out this page to see 'remote access' in action. I use PHP and NuSOAP to do some simple Read-operations on a remote Groove-account. So how does it work? First one has to register with the Access Point, so the AP knows to which device to forward the request. This is done by the 'gnslnsreg' utility which can be found in de Web Services GDK (gnslnsreg has dependencies on the MS SOAP ToolKit 2.0 SP2 and MSXML3.0, so make sure you've got those installed). After registering it's simple: make the call to http://webservices.groove.net as you would do with a local request.';1|剺| namespacesoap:bservi;8|剺|  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance |z|z xmlns0http://webservices.groove.net/Groove/1.0/Events/ n 0000300l<8jn+%|y  ". 9E P\ gs ~ 1085282139 1111260611 f 1267331703 1495310493  1858815782 g> 1905318552] 5579871288873638 943104873πLH|_|_ ) 3i r  H M] b    Created2002-08-15T15:22:40.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID0a68c292123756fed351c8f6ef828997659f361d0c185668cID009072dc88dd9e5e7c5c3713f77bba5a58ebb50d429a1ded0Modified2002-08-15T15:22:40.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name MVC-0011.JPGPathQC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozoz\MVC-0011.JPGSize73034TypeFileUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/09072dc88dd9e5e7c5c3713f77bba5a58ebb50d429a1ded0  !Arial aRaYFLANDwinon postItemCallback (addrPost) 1.0/Files/~z.oRBoRB  ". </atts?00002000 Header 00003000 Body~oOϺoO~z.oOhoOh  ". </atts00002000 Header 00003000 Bodyv~T "~$p|Vp|V  Namegj@ctarget.comURI2grooveIdentity://3a89gir3gwijptyyzsuyc6w8usengqfj@J $n n $p|Vp|V ! %NameForrest Duncan/MysterianURI9grooveIdentity://ane9umacped92c65syvi2t7wcy2i3jpggzxpvzr@3{$p|Vp|V  NameErin Lyle/GrooveURI2grooveIdentity://qpvnyckb9kfpqzeyz4pigvmyxsc8wn6w@Jp$p|Vp|V  Name Erick KapamasURI2grooveIdentity://en64rka5g4cqx2gf95jpmjeqgtkzg958@|zJp$p|Vp|V  Name Doug BoltonURI2grooveIdentity://v9nkr6k28s3ejtdavqcerg2nuw59374j@|x$p|Vp|V  Name Donald McCallURI2grooveIdentity://nyqs899vav69irw8uieaqj6c4p5i9ikh@T@&S׺hitem #1(/atts I0@ S׺_R}$k;#k;#  NameKaren Marker/ViantURI2grooveIdentity://hukkdbc4xjp57yhpc979qq5hx2zaxxhy@gw8@ 5i׺i test b9WS$SW  client K resultAsXml`\.p|tp|t   1 z[2 x3 NVR$cfcf  linetext Preferencespath index.wsfVcfcfcececece$chch ! %NameAndreas Berchtold/npt agURI2grooveIdentity://itv5kt6py7knnqdvr6y6mtkcvqi6m2j7@[g n S׺W startupj.0.1/grooveInterop/RIOD MS Sans Serif M#wLANDwinon buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) aitingVVR$cgcg  linetext Preferencespath index.wsfVpycgcg!SHS  /; LX my  ! ,addDiscussionEntryclearDiscussionconnectionStatus"5createFileDescriptor_deleteDiscussionEntry9getDiscussionEntriesREAD MErefreshStoriesփrpcsendsyncBlog toolStatusSVArial %t9XSS[V!NlS  '= In z Tn authorTim Knip/Suite75 authorEmailt.knip@suite75.com description!GrooveInterop for Radio Userland. homePageUrlRhttp://radio.weblogs.com/0107414/stories/2003/01/14/grooveInteropToolForRadio.htmlname grooveInterop releaseDateversion0.3VArial I# W2W2 #W2W2.W1ɺW1 F V 00001000 Member2grooveIdentity://vcy58yiws25wiin598mg9ixgz3w47jc2@00002000 Member2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00003000 Member2grooveIdentity://g8rvcmmwdqb7fnriyksk2sew5u8mic48@k=Lh3hh3h C P 9+Arial S׺a(GQLANDwindialog.notify ("grooveInterop by Suite#8p&%p&% C Qm | 00001000 URI2grooveIdentity://qzssy6nvfdakuuw4m269snymxu9zanwx@ 00002000 NameForrest Duncan/Mysterian00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/qzssy6nvfdakuuw4m269snymxu9zanwx@00004000 AwarenessOnlineUQ$g'g'  linetext Preferencespathtest.wsfUXg'g'UQ$g'g'  linetext Preferencespathtest.wsfUUQ$g&g&  linetext Preferencespathtest.wsfU>g&g&UQ$g&zg&z  linetext Preferencespathtest.wsfUUQ$g&Jg&J  linetext Preferencespathtest.wsfUg&Jg&J51g$,g$:   , /; >J MY \h kw z    % '3 51V1011p1213_141516317 f18 19 2h202122$3p45+678945VR$W\W\  linetext Preferencespath index.wsfV!W\W\VR$WW  linetext Preferencespath index.wsfV"WWVR$WuWu  linetext Preferencespath index.wsfVWuWu<Arial -H-] *HLANDwinon connectionStatus () 23/12/02; 23:21:33 by TK check connection with Groove, return values: 0: Groove 2.5 not detected 1: Groove 2.5 detected, but not running 2: Groove 2.5 detected and running local i host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.groovePort stream key = "HKCU\\Software\\Groove Networks, Inc.\\Groove\\WebServices\\WebServicesNonce" grooveInteropData.groove.status = 0 if grooveInteropData.prefs.fldebug port = grooveInteropData.prefs.debugPort bundle // Try to read the GrooveNonce windows RegKey try grooveInteropData.groove.webservicesnonce = winRegistry.read (key) if grooveInteropData.groove.webservicesnonce != false grooveInteropData.groove.status = 1 bundle // try to open a stream to groove try stream = tcp.openStream(host, port) grooveInteropData.groove.status = 2 else dialog.notify(tryError) try tcp.closeStream(stream) return(grooveInteropData.groove.status) diaK67Arial Jb_h=fo{8LANDwinon handleFiles (stream=nil) 02/02/03; 20:54:34 by TK scans a Groove Files Tool for changes if changes are found: retreive the file from Groove and copy it to our '/groove/files' folder on checkGrooveDeletes(lst) local addr, addrLinks i, j marked filename cnt = 1 found = false if !defined(grooveInteropData.groove.files) return(false) if !defined(grooveInteropData.groove.filesLinks) return(false) addr = @grooveInteropData.groove.files addrLinks = @grooveInteropData.groove.filesLinks try new (listtype, @marked) for j = 1 to sizeof(addr^) for i = 1 to sizeof(lst) filename = xml.getValue(lst[i], "Name") if filename == nameof(addr^[j]) found = true if not found marked[cnt] = nameof(addr^[j]) cnt = cnt + 1 found = false for i = 1 to sizeof(marked) if file.exists(user.radio.prefs.wwwfolder + "groove\\files\\"+marked[i]) file.delete(user.radio.prefs.wwwfolder + "groove\\files\\"+marked[i]) delete(addr^[marked[i]]) delete(addrLinks^[marked[i]]) local startTime = clock.ticks() nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort soapaction = grooveInteropData.soap.template.groove.actions.readFiles method = grooveInteropData.soap.template.groove.methods.readFiles httpRequest = "" httpResult = "" tooldata identityurl = "" xmlData, addrBody upstreamed = "Upstreamed: ", cnt = 0 needCloseStream = false if !nonce or !grooveInteropData.groove.ready or grooveInteropData.rootupdates.updating return(false) if grooveInteropData.prefs.filesTool == "" return(false) bundle // create the groove-files table if !defined(grooveInteropData.groove.files) new (tabletype, @grooveInteropData.groove.files) bundle // open a stream try if stream == nil stream = tcp.openStream(host, port) needCloseStream = true else try tcp.closeStream(stream) else return(false) bundle // send request, handle response try tooldata = grooveInteropData.prefs.filesTool if defined(grooveInteropData.prefs.files.toolAccountURI) identityurl = grooveInteropData.prefs.files.toolAccountURI httpRequest = grooveInteropSuite.http.createRequest(nonce,method,tooldata,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) else bundle // close the stream try tcp.closeStream(stream) return(false) bundle // handle response new(tabletype, @xmlData) try if xml.compile(httpResult, @xmlData) check for a fault if xml.getPathAddress(@xmlData, "Envelope/Body/Fault", @addrBody) local faultcode = xml.getValue(addrBody, "faultcode") faultstring = xml.getValue(addrBody, "faultstring") return(false) if xml.getPathAddress(@xmlData, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local lst, i tmpTable get file-descriptors lst = xml.getAddressList(addrBody, "FileDescriptor") new(listtype, @lstUploaded) for i = 1 to sizeof(lst) new(tabletype, @tmpTable) tmpTable.URI = xml.getValue(lst[i], "URI") tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.Size = xml.getValue(lst[i], "Size") tmpTable.Modified = xml.getValue(lst[i], "Modified") tmpTable.Created = xml.getValue(lst[i], "Created") if defined(grooveInteropData.groove.files[tmpTable.Name]) if tmpTable.Modified != grooveInteropData.groove.files[tmpTable.Name].Modified if grooveInteropSuite.soap.upstreamFile(tmpTable.URI, stream, tmpTable.Name, tmpTable.Size) delete(@grooveInteropData.groove.files[tmpTable.Name]) grooveInteropData.groove.files[tmpTable.Name] = tmpTable upstreamed = upstreamed + tmpTable.Name if i < sizeof(lst) upstreamed = upstreamed + ", " cnt = cnt + 1 else if grooveInteropSuite.soap.upstreamFile(tmpTable.URI, stream, tmpTable.Name, tmpTable.Size) grooveInteropData.groove.files[tmpTable.Name] = tmpTable upstreamed = upstreamed + tmpTable.Name if i < sizeof(lst) upstreamed = upstreamed + ", " cnt = cnt + 1 checkGrooveDeletes(lst) bundle // close the stream try tcp.closeStream(stream) bundle // close the stream try if needCloseStream tcp.closeStream(stream) bundle // write to log if cnt > 0 radio.log.add("grooveInterop", upstreamed + " to \"/groove/files/\".", startTime) handleFiles() MI$SdSd  bodyGheaders<M=pSdSdMI$SȗSȗ  bodyheaders;$M\X$SưSư  $Content-Length1185 Content-Typetext/xml\=SưSưMI$SƀSƀ  bodyheaders=M? SƀSƀMI$SŭSŭ  body+-headers>jMSŭSŭSŭSŭMI$SŘSŘ  body^headers? MSŘSŘ < Arial SW iLANDwin22/01/03; 01:43:28 by TK custom http-client to communicate with Groove function parameters: host: hostname of Groove-server (defaults to localhost) port: Groove GWS-port (defaults to port 9080) data: the HTTP-header + SOAP-envelope - as string stream: a previously created HTTP-stream (to enable HTTP 100-continue) flDebug: when true request and response are saved to scratchpad.httpCommand/httpRequest on client(host,port=9080,data,addrTable=nil,stream=nil,flDebug=false) local needCloseStream = false httpResult = "" try bundle // open a stream to Groove if needed if stream == nil try stream = tcp.openStream(host, port) needCloseStream = true else try tcp.closeStream(stream) return(false) bundle // write data to the stream try tcp.writeStream(stream, data) bundle //read from the stream until we signal the soap end-tag this is tricky, hopefully the end-tag remains the same.... tcp.readStreamUntil(stream, "\r\n", 15, @httpResult) bundle //close the stream if needed if needCloseStream try tcp.closeStream(stream) return the raw response return(httpResult) else return(false) bundle // test-code local soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts grooveHeader = string(grooveInteropData.soap.template.groove.header) soapEnvelope = string(grooveInteropData.soap.template.envelope) nonce = grooveInteropSuite.util.groove.getNonce() data = "" httpRequest = "" httpResult = "" path = "/GWS/Groove/1.0/Accounts/" ret = @grooveInteropData.httpResult if !nonce return(nil) try grooveInteropData.groove.webservicesnonce = nonce grooveHeader = string.replaceAll(grooveHeader, "##nonce##", nonce) grooveInteropData.httpResult=grooveHeader soapEnvelope = string.replaceAll(soapEnvelope, "##header##", grooveHeader) soapEnvelope = string.replaceAll(soapEnvelope, "##body##",method) else dialog.notify(tryError) bundle // create HTTP header, append SOAP message and send it to Groove... httpRequest = grooveInteropSuite.http.header.httpContinue(path, soapaction, sizeof(soapEnvelope)) httpRequest = httpRequest + "\r\n" + soapEnvelope grooveInteropData.httpResult=httpRequest try ret^ = grooveInteropSuite.soap.rpc.client("localhost",5333,httpRequest) else dialog.notify(tryError)  <iI$SjSk  body0sheadersKGS3gLANDiQSkSuHTTP/1.1 200 OK Content-Type: text/xml Content-Length: 1185 6dpdvftiik589mqh77r3khumwmxt23gcxxy9nmsDevgrooveIdentity://xxukk274gxq6irj9jvbp7rm4pyg7thhk@Dev/GWS/Groove/1.0/Spaces/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@/GWS/Groove/1.0/Contacts/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@un8756asq88pnbcmq3qvea7785s74d2kkswanbaTim KnipgrooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Tim Knip/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@ Kw{hW%\slqE'_  d zJX SS<HTTP/1.1 100 Continue HTTP/1.1 200 OK Content-Type: text/xml Content-Length: 1185 6dpdvftiik589mqh77r3khumwmxt23gcxxy9nmsDevgrooveIdentity://xxukk274gxq6irj9jvbp7rm4pyg7thhk@Dev/GWS/Groove/1.0/Spaces/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@/GWS/Groove/1.0/Contacts/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@un8756asq88pnbcmq3qvea7785s74d2kkswanbaTim KnipgrooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Tim Knip/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 95000000060001001777AA00000000005C0000000010017101:8Bee   'E JData/GWS/Groove/1.0/Discussion/grooveTelespace/6qmnbbdajnejtfe6gc6j4wv95jficp4wvncxnq2/ToolContainer/2jzataejm94hcc4wby7v5k73gxumktxj3uaixaa.Discussion.Tool/DiscussionDataModelDelegate IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@NameDiscussion to publish SpaceNameS75 Groove-Radio connectorType(urn:groove.net:platform.tools.Discussion'8Bee   : ?Data/GWS/Groove/1.0/Discussion/groovOKjgg _ m   *` o  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/2fu5agiqxib9qzni6jndxvivt9nmp2zwskh7z5a 00002000 NameCustom Space 300003000 Description00004000 Created2002-11-15T23:20:47.179+01:0000005000 Modified2002-11-15T23:20:47.199+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/2fu5agiqxib9qzni6jndxvivt9nmp2zwskh7z5a00009000 MemberszMIjgg _ m}   (^ m  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/65bqckz8hfg35e4kdpxs4zbz4uh4npqqc6nugrs 00002000 Name Custom Space00003000 Description00004000 Created2002-07-22T23:39:45.330+01:0000005000 Modified2002-07-22T23:39:45.521+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/65bqckz8hfg35e4kdpxs4zbz4uh4npqqc6nugrs00009000 Membersl9HTTP/1.1 200 OK Content-Type: text/xml Content-Length: 1185 6dpdvftiik589mqh77r3khumwmxt23gcxxy9nmsDevgrooveIdentity://xxukk274gxq6irj9jvbp7rm4pyg7thhk@Dev/GWS/Groove/1.0/Spaces/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@/GWS/Groove/1.0/Contacts/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@un8756asq88pnbcmq3qvea7785s74d2kkswanbaTim KnipgrooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Tim Knip/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@ SeSeSeSeHTTP/1.1 100 Continue HTTP/1.1 200 OK Content-Type: text/xml Content-Length: 1185 6dpdvftiik589mqh77r3khumwmxt23gcxxy9nmsDevgrooveIdentity://xxukk274gxq6irj9jvbp7rm4pyg7thhk@Dev/GWS/Groove/1.0/Spaces/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@/GWS/Groove/1.0/Contacts/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@un8756asq88pnbcmq3qvea7785s74d2kkswanbaTim KnipgrooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Tim Knip/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@ SƺS1-t!V!& q + 8  . 8  : PcreateDiscussionEntryW##entry##deleteDiscussionEntryL readAccountsC readContactsCreadDiscussionEreadFileJ readFiles`true readSpacesA readTools@updateDiscussionEntrya##entry##1m"G$SاSا  bodyseheadersm1pk:7: mSاSاSاSاJF$SuSu  bodyeheadersmJSuSuSuSu }Y!SHSy  /; LX my W$W(պW( F V00001000 8cluclu C Q` o 00001000 URI2grooveIdentity://fbr4ehkzzf6ehqa6tjnr7c2a7ia5wui5@ 00002000 Name jirong zhou00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/fbr4ehkzzf6ehqa6tjnr7c2a7ia5wui5@00004000 AwarenessOffLine8cluclu C Qd s 00001000 URI2grooveIdentity://msrbc333g8r26uywpwzw7gr5gkxcady9@ 00002000 NameTimothy R Platt00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/msrbc333g8r26uywpwzw7gr5gkxcady9@00004000 AwarenessOffLine8cluclu C Qa p 00001000 URI2grooveIdentity://czrkavtvcj4zfxd9aktxbzfnvwy2vt4s@ 00002000 Name NMonElmerStr00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/czrkavtvcj4zfxd9aktxbzfnvwy2vt4s@00004000 AwarenessOffLineB>8cluclu C Q 00001000 URI2grooveIdentity://ew529hku24ce3dkgfcdgg65ymssx8k3f@ 00002000 Name6andyswarbs -PopG1 is now obsolete use -PopG1#3 instead00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/ew529hku24ce3dkgfcdgg65ymssx8k3f@00004000 AwarenessOffLineU'#8cluclu C Qp  00001000 URI2grooveIdentity://2pubjhfrqviknb6ueebux7zmn6gezmjz@ 00002000 NameMark Smith, Virtual Methods00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/2pubjhfrqviknb6ueebux7zmn6gezmjz@00004000 AwarenessOffLinej!Nkl  + 6BN X\ bn z groovem httpRequestc7 httpResult7 initialized lasterrorprefs+, rootupdatesHsoap testStringVArial <oV25px;">haha
hahahahahaaaaaaaaaa
ss
haha
3
4
3repl #2
repl 3 repl #2
repl
VArial <oV /> initialized lasterrorError sending requestprefs̝soapVArial <oV<oV I1h(h( namespacesoap:1h'Izh(h(UQ$g7ߺg7  linetext Preferencespathtest.wsfUg7ߺg7g7պg7 J W  '] j  4 Aw   G T   00001000 URI9grooveIdentity://ihsagp6xnqurj5qvdt45sjn9usegrf3a4jc99fk@ 00002000 URI2grooveIdentity://zdmq3y6zxgbz92bu43e94aec5inpaf55@ 00003000 URI9grooveIdentity://c634ktt4a7svact2qmz4vnc73k9u5zrxhqb7bjd@ 00004000 URI2grooveIdentity://yrt9bjhyjh9sv9a335abumxqbcg9yucs@ 00005000 URI2grooveIdentity://ekwbwvjkwrxu23sncqm85v9i78gwjvib@ 00006000 URI9grooveIdentity://jsntby4suvvztvz978ymxpjyfj9368ah57c3m9q@ 00007000 URI9grooveIdentity://g3uxpcge3sz5xiu2r5i3jtpu2rhsibqin66g3sp@ 00008000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 00009000 URI2grooveIdentity://y273vxmf9eiiibccecmszq2gm4yfikyh@ 00010000 URI2grooveIdentity://fxik4vx6yk6v2yzr4pzz8pqnne58bkbb@ 00011000 URI9grooveIdentity://dfqeju7pd5xn625uqe4rmqxg8vmtmaf4ayt8b78@ 00012000 URI2grooveIdentity://6vf563rn4ek656uru4kh7ia28un4muzh@ 00013000 URI2grooveIdentity://7vgyv8x6skjhfi5wi3qyt3jx7vu2hr38@ 00014000 URI2grooveIdentity://52j4mc6dr8eqdsjwj53v853ug6vujr6j@ 00015000 URI2grooveIdentity://6ykrka2u3eq7uufche3i5rzqraj6hgtv@'WXúWX 0000'WXúWXMDS}So accounts/GWS/Groove/1.0/Accounts/MR{R{!!׺!! httpContinue&;7H Arial !!!bHLANDwin"8cluclu C Qk z 00001000 URI2grooveIdentity://6u6gw6s6mxbxyrmagxd8x7g79vuemsrt@ 00002000 NameKevin Weaver/NCS/JJPRD00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/6u6gw6s6mxbxyrmagxd8x7g79vuemsrt@00004000 AwarenessOffLine8cluclu C Q\ k 00001000 URI2grooveIdentity://4gpeminy2qwnfc96y3tkndvu3js27ib5@ 00002000 NameKPatten00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/4gpeminy2qwnfc96y3tkndvu3js27ib5@00004000 AwarenessOffLineSֺSSֺSL#%8p&%p&% C Qr 00001000 URI2grooveIdentity://vyb6cmx4nxypggavbeh2hzn74f2basa5@ 00002000 NameHeidi Lanam (2.1)/BAE SYSTEMS00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/vyb6cmx4nxypggavbeh2hzn74f2basa5@00004000 AwarenessOffLine.http://www.groove.net/Groove/1.0/AL8pdpd  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instancehemas.xmlsoap.org/soap/en pdpd.p}p6 1= nz 03751aa881b2550e9ee3ad28a89ad8422f40a33663195c562 0533623d26d5d81eaaa4e881e24f1549eeea0c753ea2f5ab5 r0c6f48d6b7a0fb0230b1bb8fcf98a096ff1e1cfa656106394 ny.EF  $0 ; finalFilterZ firstFilter  pagefilter V MS Sans Serif PE$oveInteropData.gHT| Arial \J;_K^qHLANDwinon cleanAggregator () 28/01/03; 14:54:54 by TK remove all groove-tables from aggregatorData.stories local addr, i if !defined(aggregatorData.stories) return(false) addr = @aggregatorData.stories for i = 1 to sizeof(addr^) if defined(addr^[i].groove) delete(@addr^[i].groove) if defined(addr^[i].grooveInterop) delete(@addr^[i].grooveInterop) cleanAggregator() HZR$p|Vp|V  Name MatthewP2URI2grooveIdentity://zdmq3y6zxgbz92bu43e94aec5inpaf55@x$p|Vp|V  NameMatt Pope/GrooveURI9grooveIdentity://jsntby4suvvztvz978ymxpjyfj9368ah57c3m9q@ $p|Vp|V / 3Name&Masaru Tsujimoto-Netsenger CorporationURI2grooveIdentity://b4gwhu4zerpdsjq43qs9yin985xrb9gf@ Q$p|Vp|V  Name Marty HeymanURI2grooveIdentity://yenswybzkis3ufwscj25nh88cmpwjqtk@{ Q$p|Vp|V # 'NameMark Smith/Virtual MethodsURI2grooveIdentity://jywkysb4y64pwhkcj3bcvs3sph34rtz4@$p|Vp|V $ (NameMark Smith, Virtual MethodsURI2grooveIdentity://2pubjhfrqviknb6ueebux7zmn6gezmjz@][ $p|Vp|V  "NameMalky Burns/MysterianURI2grooveIdentity://bd3cxcgm9kss5h5i9bwvuh4j8958apbi@ $p|Vp|V " &NameMachteld Wijnands/Suite75URI2grooveIdentity://ypfj3gb4hnkxdykdydu52utxrps5hbk6@ $p|Vp|V # 'Namelewellyn terouanne(France)URI2grooveIdentity://c3pdyka432qpqmdf6x2n5hcbykar5uvx@A$p|Vp|V  NameKPattenURI2grooveIdentity://4gpeminy2qwnfc96y3tkndvu3js27ib5@vA$p|Vp|V ) -Name Kit Davis/Solutions by Design IIURI2grooveIdentity://ssvxcakzgwjsrectcgkc93mcjfn3m2a8@:$p|Vp|V  #NameKevin Weaver/NCS/JJPRDURI2grooveIdentity://6u6gw6s6mxbxyrmagxd8x7g79vuemsrt@$p|Vp|V $ (NameKathleen Bissonnette/GrooveURI2grooveIdentity://eax658iniha373qaskehs3tc6ak9v5sq@Z\X$SĀSĀ  $Content-Length1185 Content-Typetext/xml\KSSMI$SS  body0sheadersKM;SS KQhW%>\slqE'_   d zJX SôSôM+SôS body^bdy0sheadersMSôSôKQhW%\slqE'_  d zJX SeSeMI$SeSe  body^bheadersMSeSkZT$SƺS  accounts httpResult <ZKSkSq95SƺS lastresultQ9hWS+S0T$SjS  envelopeAgrooveoT T$efef  '.BBgI~Bg }g }l_9"j`ǛhBH  * 4@ HT [g q} #filterso#ftpSite #glossary?#images#prefs #template#toolsMindex8style8styletestwaitingc׀="58Si  ' /; @actions|headeramethods\cpath{ "5VS׺S  !- 2gh - MS Sans Serif Eu`Q2LANDwinon firstFilter (adrPageTable) return (true) h$!!ȺS ~z.6hdW)ԺW) 00001000 Member2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@N$!TtI  templateutil,templateEnvelopeyCtemplateSOAPRequestlutiltlutiltlutil߀lpS׺_R  (,4phoho op accountnamel8g5og5o  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceg4Vg4Vv\ Arial !EWjoLANDwinon running () 24/01/03; 15:12:39 by TK Check whether Groove is running local soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path = "/GWS/Groove/1.0/Accounts/" ret = "" host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort if !nonce return(false) bundle // create the http-request grooveInteropData.groove.webservicesnonce = nonce httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction) try ret = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) if ret grooveInteropData.groove.ready = true return(true) else grooveInteropData.groove.ready = false return(false) stancevUQ$g0g0  linetext Preferencespathtest.wsfU_g0g0)Arial "(Am0HLANDwinon createDiscussionEntry (subject="not set", body="not set", unread="true") local addr = @grooveInteropData.soap.util.DiscussionEntry str i bundle // do some link-stuff.. body = string.htmlToEmail(body) for i = 1 to 50 if i == 1 body = string.replaceAll(body, "["+i+"] http://", "\n\n["+i+"] http://") else body = string.replaceAll(body, "["+i+"] http://", "\n["+i+"] http://") addr^["ParentID"] = "-1" addr^["Unread"] = "true" addr^["Subject"] = subject addr^["Body"] = xml.entityDecode(body) str = xml.decompile(addr) str = string.replaceAll(str, "", "") str = string.replaceAll(str, "\r\n", "") str = string.replaceAll(str, "\t", "") str = "" + str + "" return(str) dialog.notify(newScript()) )2 Arial &l&v HLANDwinon deleteDiscussionEntry (entryid) on getPost(entryID) find a post by it's groove entry-id local i addr = @grooveInteropData.groove.sync.posts for i = 1 to sizeof(addr^) if entryID == addr^[i].ID return(addr^[i].URI) return(nil) local addrTable nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.groovePort httpHeader = "" soapMessage = "" httpResponse = "" wireDump = "" uri action = grooveInteropData.soap.actions.deleteDiscussionEntry strMethod = grooveInteropData.soap.methods.deleteDiscussionEntry xmlData post stream post = getPost(entryid) if post == nil return(false) else uri = post + "/"+entryid if !grooveInteropData.groove.running return(false) if grooveInteropData.prefs.fldebug port = grooveInteropData.prefs.debugPort bundle // create HTTP-header and SOAP-message soapMessage = string(grooveInteropData.soap.templateSOAPRequest) soapMessage = string.replaceAll(soapMessage, "##nonce##", nonce) soapMessage = string.replaceAll(soapMessage, "##body##", strMethod) httpHeader = grooveInteropSuite.http.header.httpContinue(uri, action, sizeof(soapMessage)) wireDump = httpHeader + "\r\n" + soapMessage bundle // try to send/recieve try stream = tcp.openStream(host, port) tcp.writeStream(stream, wireDump) tcp.readStreamUntil(stream, "", 15, @httpResponse) try tcp.closeStream(stream) return(true) return(false) deleteDiscussionEntry(1965452176) 0\\\\  /;0S׺WhArial $gWq+LANDwinhome preferences help 2grooveIdenth;.gg  #/ @/atts<F`!SHc8D  /; P\ r~ addDiscussionEn8p&%p&% C Qe t 00001000 URI2grooveIdentity://u2fsrdauz2u67nn2ehmvj7hax2p3djh6@ 00002000 NameJustin K. Bigart00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/u2fsrdauz2u67nn2ehmvj7hax2p3djh6@00004000 AwarenessOffLine w+Arial &̺&iHLANDwinon updateDiscussionEntry (entryid, newSubject, newBody) on getPost(entryID) find a post by it's groove entry-id local i addr = @grooveInteropData.groove.sync.posts for i = 1 to sizeof(addr^) if entryID == addr^[i].ID return(addr^[i].URI) return(nil) on getEntryName(entryID) find a post by it's groove entry-id local i addr = @grooveInteropData.groove.sync.posts for i = 1 to sizeof(addr^) if entryID == addr^[i].ID return(nameof(addr^[i])) return(nil) local addrTable nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.groovePort httpHeader = "" soapMessage = "" httpResponse = "" wireDump = "" uri action = grooveInteropData.soap.actions.updateDiscussionEntry strMethod = grooveInteropData.soap.methods.updateDiscussionEntry strDiscussionEntry xmlData post postname entryURI stream entryURI = getPost(entryid) if entryURI == nil return(false) else uri = entryURI + "/"+entryid postname = getEntryName(entryid) if !defined(weblogData.posts[postname]) return(false) post = @weblogData.posts[postname] if !grooveInteropData.groove.running return(false) if grooveInteropData.prefs.fldebug port = grooveInteropData.prefs.debugPort bundle // create HTTP-header and SOAP-message strDiscussionEntry = grooveInteropData.soap.util.createDiscussionEntry(newSubject,newBody, "true") strMethod = string.replaceAll( strMethod, "##entry##", strDiscussionEntry) soapMessage = string(grooveInteropData.soap.templateSOAPRequest) soapMessage = string.replaceAll(soapMessage, "##nonce##", nonce) soapMessage = string.replaceAll(soapMessage, "##body##", strMethod) httpHeader = grooveInteropSuite.http.header.httpContinue(uri, action, sizeof(soapMessage)) wireDump = httpHeader + "\r\n" + soapMessage bundle // try to send/recieve try stream = tcp.openStream(host, port) tcp.writeStream(stream, wireDump) tcp.readStreamUntil(stream, "", 15, @httpResponse) try tcp.closeStream(stream) return(true) return(false) updateDiscussionEntry (273886094, "A", "B")  > 1hAhA namespacesoap:">Th@h@F"5$S}W& & -accounts/GWS/Groove/1.0/Accounts/spaces/GWS/Groove/1.0/Spaces/gJFE7!Nl urlhttp://127.0.0.1/grooveInterop/ex.wsfO.tSֺS  05j7Wo  * 4@ HT [g q} #filters#ftpSite #glossary{#images#prefs #template>{#toolsindex~/styleLVVerdana B8HB8H8Hn$!Wh  ! buildPostArgsqgroove_VArial j: j:B,;A7Arial%B2:zArial lfGp(96!LANDwinon onPrefs () on grooveError() delete(@grooveInteropSuite.http.postvars.op) webBrowser.openURL(homeURL) on modeString(mode) if mode == 0 return("Setting preferences for BLOG") if mode == 1 return("Setting preferences for NEWS") if mode == 2 return("Setting preferences for FILES") return("") on findIdentityAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.identities) return(false) addr = @grooveInteropData.groove.temp.identities for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) on findSpaceAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.spaces) return(false) addr = @grooveInteropData.groove.temp.spaces for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) on findToolAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.tools) return(false) addr = @grooveInteropData.groove.temp.tools for i = 1 to sizeof(addr^) if uri == addr^[i].Data return(@addr^[i]) return(false) on accountCombo(addr, name) local i str = "" return(str) on spacesCombo(addr, name) local i str = "" return(str) on toolsCombo(addr, name, mode=0) local i str = "" return(str) on writeAccounts(mode) local html = "" modestr = modeString(mode) html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "
"+modestr+"
Select Groove Identity:" html = html + accountCombo(@grooveInteropData.groove.temp.identities, "account") html = html + "
Click 'Get Spaces' to continue.
" return(html) on writeSpaces(mode) local html = "" modestr = modeString(mode) html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "
"+modestr+"
selected identity" + grooveInteropData.groove.temp.accountName + "
Select Space:" html = html + spacesCombo(@grooveInteropData.groove.temp.spaces, "spaces") html = html + "
Click 'Get Tools' to continue.
" return(html) on writeTools(mode=0) local html = "" modestr = modeString(mode) html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "
"+modestr+"
selected identity" + grooveInteropData.groove.temp.accountName + "
selected space" + grooveInteropData.groove.temp.spaceName + "
Select Tool:" html = html + toolsCombo(@grooveInteropData.groove.temp.tools, "tools", mode) html = html + "
Click 'Select this Tool' to continue.
" return(html) on writePrefs() local html = "" blog="---- not set ----", news="---- not set ----", files="---- not set ----" blogAccount="---- not set ----", newsAccount="---- not set ----", filesAccount="---- not set ----" blogSpace="---- not set ----", newsSpace="---- not set ----", filesSpace="---- not set ----" prefsText = string(grooveInteropSuite.gui.prefsText) checkBEnable = "" checkNEnable = "" checkFEnable = "" if defined(grooveInteropData.prefs.blog) if not defined(grooveInteropData.prefs.blog.enabled) grooveInteropData.prefs.blog.enabled = true if grooveInteropData.prefs.blog.enabled if grooveInteropData.prefs.blog.enabled {checkBEnable="checked"} blog = grooveInteropData.prefs.blog.toolName blogAccount = grooveInteropData.prefs.blog.toolAccountName blogSpace = grooveInteropData.prefs.blog.toolSpaceName else blogSpace = "---- Disabled ----" blogAccount = "---- Disabled ----" blog = "---- Disabled ----" if defined(grooveInteropData.prefs.news) if not defined(grooveInteropData.prefs.news.enabled) grooveInteropData.prefs.news.enabled = true if grooveInteropData.prefs.news.enabled if grooveInteropData.prefs.news.enabled {checkNEnable="checked"} news = grooveInteropData.prefs.news.toolName newsAccount = grooveInteropData.prefs.news.toolAccountName newsSpace = grooveInteropData.prefs.news.toolSpaceName else newsSpace = "---- Disabled ----" newsAccount = "---- Disabled ----" news = "---- Disabled ----" if defined(grooveInteropData.prefs.files) if not defined(grooveInteropData.prefs.files.enabled) grooveInteropData.prefs.files.enabled = true if grooveInteropData.prefs.files.enabled if grooveInteropData.prefs.files.enabled {checkFEnable="checked"} files = grooveInteropData.prefs.files.toolName filesAccount = grooveInteropData.prefs.files.toolAccountName filesSpace = grooveInteropData.prefs.files.toolSpaceName else filesSpace = "---- Disabled ----" filesAccount = "---- Disabled ----" files = "---- Disabled ----" html = html + "" html = html + "" html = html + "" html = html + "" html = html + "" if grooveInteropData.prefs.showAccountName html = html + "" else html = html + "" html = html + "
" + prefsText + "
 AccountSpaceTool  
BLOG"+blogAccount+""+blogSpace+""+blog+"Enabled:
NEWS"+newsAccount+""+newsSpace+""+news+"Enabled:
FILES"+filesAccount+""+filesSpace+""+files+"Enabled:
Multi-user blog (check to add poster's username to the post)
Multi-user blog (check to add poster's username to the post)
" return(html) local html = "" addrIdentity addrSpaces addrTool homeURL = "http://127.0.0.1:5335/grooveInterop/" tmpTable if !defined(grooveInteropData.prefs.showAccountName) grooveInteropData.prefs.showAccountName = true grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) bundle // tool-enable checkbox was clicked if defined(grooveInteropSuite.http.postvars.op) if grooveInteropSuite.http.postvars.op == "enable" if defined(grooveInteropData.prefs.blog) if defined(grooveInteropSuite.http.postvars.blog_enabled) grooveInteropData.prefs.blog.enabled = true else grooveInteropData.prefs.blog.enabled = false if defined(grooveInteropData.prefs.news) if defined(grooveInteropSuite.http.postvars.news_enabled) grooveInteropData.prefs.news.enabled = true else grooveInteropData.prefs.news.enabled = false if defined(grooveInteropData.prefs.files) if defined(grooveInteropSuite.http.postvars.files_enabled) grooveInteropData.prefs.files.enabled = true else grooveInteropData.prefs.files.enabled = false html = html + writePrefs() else if grooveInteropSuite.http.postvars.op == "accountname" if defined(grooveInteropSuite.http.postvars.showAccountName) grooveInteropData.prefs.showAccountName = true else grooveInteropData.prefs.showAccountName = false html = html + writePrefs() if grooveInteropSuite.http.postvars.op == "getaccounts" if defined(grooveInteropData.groove.temp) delete (@grooveInteropData.groove.temp) new (tabletype, @grooveInteropData.groove.temp) if defined(grooveInteropSuite.http.postvars.setblog) grooveInteropData.groove.temp.mode = 0 if defined(grooveInteropSuite.http.postvars.setnews) grooveInteropData.groove.temp.mode = 1 if defined(grooveInteropSuite.http.postvars.setfiles) grooveInteropData.groove.temp.mode = 2 if defined(grooveInteropData.groove.temp.identities) delete (@grooveInteropData.groove.temp.identities) new( tabletype, @grooveInteropData.groove.temp.identities) if not grooveInteropSuite.util.groove.refreshAccounts(@grooveInteropData.groove.temp.identities) return("No identities found! Please make sure Groove 2.5 is running. Click here to try again...") html = html + writeAccounts(grooveInteropData.groove.temp.mode) if grooveInteropSuite.http.postvars.op == "getspaces" addrIdentity = findIdentityAddr(grooveInteropSuite.http.postvars.account) grooveInteropData.groove.temp.accountName = addrIdentity^.Name grooveInteropData.groove.temp.accountURI = addrIdentity^.URI if defined(grooveInteropData.groove.temp.spaces) delete (@grooveInteropData.groove.temp.spaces) new( tabletype, @grooveInteropData.groove.temp.spaces) try if not grooveInteropSuite.util.groove.refreshSpaces(addrIdentity, @grooveInteropData.groove.temp.spaces) return("No spaces found for identity "+grooveInteropData.groove.temp.accountName+"! Click here to try again...") html = html + writeSpaces(grooveInteropData.groove.temp.mode) if grooveInteropSuite.http.postvars.op == "gettools" addrSpaces = findSpaceAddr(grooveInteropSuite.http.postvars.spaces) if addrSpaces grooveInteropData.groove.temp.spaceName = addrSpaces^.Name grooveInteropData.groove.temp.spaceURI = addrSpaces^.URI grooveInteropData.groove.temp.toolsURI = addrSpaces^.Tools if defined(grooveInteropData.groove.temp.tools) delete (@grooveInteropData.groove.temp.tools) new( tabletype, @grooveInteropData.groove.temp.tools) try if not grooveInteropSuite.util.groove.refreshTools(addrSpaces, @grooveInteropData.groove.temp.tools) return("No suitable tools found within space "+grooveInteropData.groove.temp.spaceName+"! Click here to try another space...") html = html + writeTools(grooveInteropData.groove.temp.mode) else grooveError() return if grooveInteropSuite.http.postvars.op == "selecttool" addrTool = findToolAddr(grooveInteropSuite.http.postvars.tools) grooveInteropData.groove.temp.toolName = addrTool^.Name grooveInteropData.groove.temp.toolData = addrTool^.Data new (tabletype, @tmpTable) tmpTable.toolAccountName = grooveInteropData.groove.temp.accountName tmpTable.toolAccountURI = grooveInteropData.groove.temp.accountURI tmpTable.toolName = addrTool^.Name tmpTable.toolData = addrTool^.Data tmpTable.toolSpace = grooveInteropData.groove.temp.spaceURI tmpTable.toolSpaceName = grooveInteropData.groove.temp.spaceName addrSpaces = findSpaceAddr(grooveInteropData.groove.temp.spaceURI) if addrSpaces tmpTable.Members = addrSpaces^.Members if grooveInteropData.groove.temp.mode == 0 grooveInteropData.prefs.blogTool = tmpTable.toolData grooveInteropData.prefs.blog = tmpTable if grooveInteropData.groove.temp.mode == 1 grooveInteropData.prefs.newsTool = tmpTable.toolData grooveInteropData.prefs.news = tmpTable if grooveInteropData.groove.temp.mode == 2 grooveInteropData.prefs.filesTool = tmpTable.toolData grooveInteropData.prefs.files = tmpTable delete(@grooveInteropSuite.http.postvars.op) addrIdentity = findIdentityAddr(tmpTable.toolAccountURI) if !defined(grooveInteropData.groove.contacts) new (tabletype, @grooveInteropData.groove.contacts) thread.callScript (@grooveInteropSuite.util.groove.refreshContacts,{addrIdentity, @grooveInteropData.groove.contacts}) grooveInteropSuite.util.groove.unsubscribe() webBrowser.openURL(homeURL) return else html = html + writePrefs() return(html) FUQ$h3h3  linetext Preferencespathtest.wsfU$n n ) --tz$p|Vp|V ) -Name Art Fritzson/Booz Allen HamiltonURI9grooveIdentity://e4i894t48bvaatqebka9yticei9pb3k2u9azk4b@tz$p|Vp|V # 'Nameandyswarbs -PopG2#3/SwaschURI2grooveIdentity://bf3v5frcxx9yazk9cqzwkhk96pzneezr@$p|Vp|V # 'Nameandyswarbs -PopG2#2/SwaschURI2grooveIdentity://7bcuushjkgrd7qi6mnsq52d96qaa9xun@51p.p. namespacesoap:5p.p.0,p.p. 0B0VR$nn  linetext Preferencespath index.wsfV P8pp   * ,012_K3[W^~% P$II  linetextHelp= #Arial a(a/AHLANDwinon deleteItemCallback (addrPost) )HiArial ,Eֺal8LANDwinon deleteDiscussionEntry(tooldata, entryID, identityurl, stream) local httpRequest = "" httpResult = "" method = grooveInteropData.soap.template.groove.methods.deleteDiscussionEntry soapaction = grooveInteropData.soap.template.groove.actions.deleteDiscussionEntry nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort xmlData, addrBody httpRequest = grooveInteropSuite.http.createRequest(nonce,method,tooldata,soapaction, identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) "=`p|j|  #Y^ hy    accountNameTim Knip accountURI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@mode spaceName grooveInteropspaceURIN/GWS/Groove/1.0/Spaces/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2atoolData/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEnginetoolNameFilestoolsURIM/GWS/Groove/1.0/Tools/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2aameFilestoolsitoolsURIM/GWS/Groove/1.0/Tools/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2aπG=en Bekkers [1] links to a story [2] ment, V  "+ 0: CL Q[ aalink008000bgcolorFFFFFFflRenderlink0000FFspaceGifspacetext000000vlink800080VArial HArial S׺`WLANDwinThis script runs in its own thread. 24/01/03; 14:01:44 by TK loop //loop until the application quits 01/02/03; 00:39:36 by TK if !grooveInteropData.initialized grooveInteropSuite.install() bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort thread.sleepFor (10) //sleep for ten seconds  gS׺hitem #1*{ g.S׺S  ". 9 everyHour ##nonce####url##000400000009000000020CB0000500000009000000020CB0000600000031000000010D30FFFF0A00000 30 000700000019000000010201800008000000B10000000140,Arial40,404E440003210400080101000090000001700000002011326C011326C000A000000150000000234321F34321F000B00000005000000020000C0000001800000001B7A82F15021B61000F0000005200000000400 10 4,4,:4,4,4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAS_K)W&S׺_RA00000000005B&Arial iiS"/KLANDwinon listSpaceMembers (addr=@grooveInteropData.prefs.LH|Q|Q ) 3i r  H M] b    Created2002-08-15T09:37:46.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID0a68c292123756fed351c8f6ef828997659f361d0c185668cID0ead6671de65853bc141c54a1a7c9fcf4c6c8cee8556203cdModified2002-08-15T09:37:46.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name MVC-003F.JPGPathQC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozoz\MVC-003F.JPGSize55781TypeFileUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/ead6671de65853bc141c54a1a7c9fcf4c6c8cee8556203cdrArial dIʺde <sHLANDwinon getStoryTitle (text) 03/02/03; 18:26:03 by TK get a title from the first sentence of the storytext (aggregatorData.stories) if it's a link, get the link-text... local addr textreg lst pattern = ">[^<]*" try textreg = string.firstSentence(text) if regex.extract(pattern, @textreg, @lst) lst[1] = string.replaceAll(lst[1], ">", "") return(lst[1]) else return(textreg) else return(tryError) dialog.notify(getStoryTitle(aggregatorData.stories[sizeof(aggregatorData.stories)-7].storytext)) eͭeͭeemi.eͭeͮ  " +DevSTim KTim KnipNmeͭeͭeeVR$ee  linetext Preferencespath index.wsfV0jh2h2 _ m  < No RMIjf !Arial aRaY1p8p&%p&% C Qh w 00001000 URI2grooveIdentity://7nv6g956nqk8zary4gsrcb7hksmkxbrn@ 00002000 NameJohn Giudice/Groove00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/7nv6g956nqk8zary4gsrcb7hksmkxbrn@ onArial gg01QLANDwinon refreshTools (addrSpace, addrToolsTable, stream=nil) 24/01/03; 17:13:40 by TK retreive usable tools local soapaction = grooveInteropData.soap.template.groove.actions.readTools method = grooveInteropData.soap.template.groove.methods.readTools nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, spacename host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j identityurl needCloseStream = false xmlTable, addrBody, lst bundle // open a stream try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) return(false) else return(false) try path = addrSpace^.Tools identityurl = addrSpace^.IdentityURL spacename = addrSpace^.Name bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false local tmpTable if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lst = xml.getAddressList(addrBody, "Tool") for j = 1 to sizeof(lst) new (tabletype, @tmpTable) tmpTable.IdentityURL = identityurl tmpTable.Type = xml.getValue(lst[j], "Type") tmpTable.Name = xml.getValue(lst[j], "Name") tmpTable.Data = xml.getValue(lst[j], "Data") tmpTable.SpaceName = spacename if tmpTable.Type == "urn:groove.net:platform.tools.Discussion" or tmpTable.Type == "urn:groove.net:platform.tools.Files" addrToolsTable^.[sizeof(addrToolsTable^)+1] = tmpTable bundle // close the stream try if needCloseStream tcp.closeStream(stream) if sizeof(addrToolsTable^) > 0 return(true) return(false) o VQ#Arial  fͺi,RWLANDwinon refreshSpaces (addrIdentity, addrSpaces, stream=nil) 24/01/03; 17:13:40 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readSpaces method = grooveInteropData.soap.template.groove.methods.readSpaces nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 needCloseStream = false bundle // open a stream if needed try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) return(false) else return(false) try path = addrIdentity^.Spaces identityurl = addrIdentity^.URI bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local tmpTable lst = xml.getAddressList(addrBody, "Space") for i = 1 to sizeof(lst) new (tabletype, @tmpTable) tmpTable.URI = xml.getValue(lst[i], "URI") tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.Tools = xml.getValue(lst[i], "Tools") tmpTable.IsLocal = xml.getValue(lst[i], "Local") tmpTable.Members = xml.getValue(lst[i], "Members") tmpTable.IdentityURL = identityurl if tmpTable.IsLocal == "true" addrSpaces^.[cnt] = tmpTable cnt = cnt + 1 bundle // close the stream try if needCloseStream tcp.closeStream(stream) if sizeof(addrSpaces^) > 0 return(true) return(false) ~ Arial jrpLANDwinon subscribeAll () local identityurl toolData callbackuri succes = false try if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) if defined(grooveInteropData.prefs.blog) identityurl = grooveInteropData.prefs.blog.toolAccountURI toolData = grooveInteropData.prefs.blog.toolData callbackuri = "dpp://localhost/grooveInterop_BLOGEVENT_" + clock.ticks() grooveInteropSuite.util.groove.subscribe(identityurl,"urn:groove-net:DiscussionEvent", toolData, callbackuri , 2) if defined(grooveInteropData.prefs.files) identityurl = grooveInteropData.prefs.files.toolAccountURI toolData = grooveInteropData.prefs.files.toolData callbackuri = "dpp://localhost/grooveInterop_FILESEVENT_" + clock.ticks() grooveInteropSuite.util.groove.subscribe(identityurl,"urn:groove-net:FilesEvent", toolData, callbackuri , 2) return(succes) subscribeAll () 9ppp{.p|V  )5 Vb {  % \h    +7 JV y      ' 8D Q] q}       &2 @L Ye nz      '3 \h w      ! 2> Wc r~     &2 Zf w       8D [g z       + : F \ h |    & F R d p    # 6 B ^ j   1 = Y e  & Y e z  * 9E     " FR co      ( 4@ LX iu       #/ co u      ) >J bn      % IU v        .: am r~     &2 7 Alex Schoch Alexandre Schoch h Andre.Bourgeois/Veridian Systems Andreas Berchtold/npt ag :Andreas Witt/On2Trade ~Andrew Falciani/BAE SYSTEMS ~ Andy Swarbrick>Andy Swarbrick#3/PopG "~ andyswarbs6andyswarbs -PopG1 is now obsolete use -PopG1#3 instead!Gandyswarbs -PopG2 - obsolete - replaced by /Swasch andyswarbs -PopG2#2/Swaschandyswarbs -PopG2#3/Swasch3 Art Fritzson/Booz Allen Hamiltonashok hingorani v2 D"Ashok Hingorani/CompuTact Software ashok25/CompuTact Software ashokpopg Barry Kaplan/Groove Ben Schochet rBig Al Bill Emerson jBill Ren/mValent bill_diamond XBlake Burris/Fusion Bob Doyle/Groove  Carlos AraujorCarlos Araujo - old[ECarlos Araujo\CrisalysZChris Holmes/MindjetZ% Chris Schneck Clifford Catex Clive DaviesxJComNexuswDan Shannon/Groovew:Daniel A. ShurmanvDaniel Shurmanv% DarrenLaytonuDarrenLayton - X InteractiveuDavid Scult/Groovetz(David Sharples/Parallelspace CorporationsDavid Shimberg H davidgjones Dell3 Suite75 :Donald Dodge/Groove Donald McCall7 Doug Bolton Erick Kapamas )Erin Lyle/Groove Forrest Duncan/Mysterian gj@ctarget.com _Graham Knight/Virtual Methods GrooveLogHarm van der Meer/Suite75LHeidi Lanam (2.1)/BAE SYSTEMSHeidi Lanam/BAE SYSTEMS"'Heyward Drummond/Solutions by Design IIPlHugh Pyle/GrooveIndro Celia/npt agO Ivor MarksOZ Jack GeraatsNJanine Battersby/IngensysN%jdesouzaJjdmJ/Jeroen Bekkers 1.3/Suite75IJeroen Bekkers at POPGNQJeroen Bekkers newMJeroen Bekkers/Suite75M3 jirong zhouLJoanne Maher/GrooveL#Joe Masteika/Solutions by Design IIK Joerg MartensJJohn BurkhardtJpJohn Burkhardt/GrooveIJohn Giudice/GrooveIRJohn Milan/TeamDirectionHJohn Retelle/MD VisionH.!John.Paul.Parker/Veridian SystemsGjohngG Jon UdellFjon.sg.zimmerman/Symbiant GroupEJose Maria BeletaEhJoseph A. EspinosaDJustin K. BigartDPJWollmanC K.C. BoltonC@ kaneko.tohruBKaren Marker/ViantB,karldAKate Ehrlich/ViantAKathleen Bissonnette/GrooveKevin Weaver/NCS/JJPRD? Kit Davis/Solutions by Design IIKPatten"lewellyn terouanne(France)Machteld Wijnands/Suite75Malky Burns/MysterianiMark Smith, Virtual MethodsMark Smith/Virtual Methods> Marty Heyman&Masaru Tsujimoto-Netsenger CorporationMatt Pope/Groove MatthewP2Michael Hermanf2Michael Herman (Current)/Parallelspace CorporationMichael Herman (Dev)"Mike Bedan (Home)ˊmikkelsdmwilde@mvalent.comzN.J.Q. LangeveldNat Welch/Viante NMonElmerStr)Office/Suite75 CParallelspace Shared Space Backup Account/Parallelspace CorporationG$Peter Berthold/Peer Development GmbH Peter Romo7Phil King - LaptopPhil King - Tool Test V2#Phil Stanhope/Componentry SolutionsyPhil/Componentry %PopG Support/PopG pwasmer  ralph.poole Richard Eckel/Groove|Richard Parrott(GLM) Rick Gyan/Solutions by Design IIR Rick Lillie Rick Wilkes SRobert E Hunt Jr SERobert E Hunt Jr Development RRoscoe the Polar Bear Rryeager/MD Vision QS.B. Chatterjee QS75 Test Machine Sabine Kampv3Sanjay Malhotra (Current)/Parallelspace CorporationSashaHsbellina ScottLareAShaun Hydock/BAHStefan Solomon/TeamDirectionSteffen M./ECNStephen DulaneySuite75 >> DedicatedvSuite75 Dedicated [2.0]Suite75 HelpdeskYSuite75 Office [v 2.0]nsuzuki.yasuhiro/RuecaTerri Martel/GroovePThees PeereboomĞ Thomas Klein#Thomas Mller/Peer Development GmbHw Thorsten Bruns/EUREKA ConsultingTim K\Tim KnipTim Knip [build 1342]ITim Knip/Suite75ʾTimA8Timothy R Plattɮtsujikawa.masahiro/Rueca&Vincent Lim/Envocis Technology LimitedzVladW. David BaylesspWerner Walter/npt agWolf Dieter MoggertS'Wolfgang R. von Stuermer/Symbiant GroupűWolfgang von StuermerxekcěUQ$g<\g<\  linetext Preferencespathtest.wsfUEg<\g<\_ Q$gEVgEV  linetext Preferencespathtest.wsfL_tArial FF.2LANDwinon finalFilter (pta) pta^.renderedText = string.replace (pta^.renderedText, "[[title]]", "") return (true) ���������������-02-13T01:44:54.00���� ��������� �&��Arial����������������������������� �����"�������Xb������^ {LAND�������win������������on createSelects () on createOption(name, value, checked="") local s="<option value=\"##name##\" ##checked##>##value##</option>" s = string.replaceAll(s, "##name##", name) s = string.replaceAll(s, "##value##", value) s = string.replaceAll(s, "##checked##", checked) return(s) on isFile(addrTool) if addrTool^.Type != grooveInteropData.groove.allowedTools.files.type return(false) on isDiscussion(addrTool) if addrTool^.Type != grooveInteropData.groove.allowedTools.discussion.type return(false) on findToolName(toolData) local i addr toolName = "0" if !defined(grooveInteropData.groove.tools) return("0") addr = @grooveInteropData.groove.tools for i = 1 to sizeof(addr^) if toolData == addr^.[i].Data toolName = nameof(addr^.[i]) return(toolName) local s = "<table align=\"center\"><form method=\"POST\">" addrTools i selected = "" if !defined(grooveInteropData.groove.tools) new (tabletype, @grooveInteropData.groove.tools) addr = @grooveInteropData.groove.tools bundle // create a select-combo for blogging s = s + "<tr><td>select a Groove Discussion Tool for your Radio-weblog</td><td><select name=\"blog\" onchange=\"validate(this)\">\n" for i = 1 to sizeof(addr^) if i == findToolName(grooveInteropData.prefs.blogTool) selected = "selected" else selected = "" if isDiscussion(@addr^.[i]) s = s + createOption(nameof(addr^.[i]), addr^.[i].Name + " ["+addr^.[i].SpaceName+"]", selected) s = s + "</select></td></tr>\n" bundle // create a select-combo for news s = s + "<tr><td>select a Groove Discussion-Tool for Radio news-stories</td><td><select name=\"news\" onchange=\"validate(this)\">\n" for i = 1 to sizeof(addr^) if i == findToolName(grooveInteropData.prefs.newsTool) selected = "selected" else selected = "" if isDiscussion(@addr^.[i]) s = s + createOption(nameof(addr^.[i]), addr^.[i].Name + " ["+addr^.[i].SpaceName+"]", selected) s = s + "</select></td></tr>\n" bundle // create a select-combo for files s = s + "<tr><td>select a Groove Files-Tool to retreive files from</td><td><select name=\"files\" onchange=\"validate(this)\">\n" for i = 1 to sizeof(addr^) if i == findToolName(grooveInteropData.prefs.filesTool) selected = "selected" else selected = "" if isFile(@addr^.[i]) s = s + createOption(nameof(addr^.[i]), addr^.[i].Name + " ["+addr^.[i].SpaceName+"]", selected) s = s + "</select></td></tr>\n" s = s + "<tr><td><input type=\"submit\" name=\"op\" value=\"ok\"></input></td>" s = s + "<td><input type=\"submit\" name=\"op\" value=\"get groove tools\"></input></td></tr>" s = s + "</form></table>" return(s) dialog.notify(createSelects()) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Ԁ������u�� ���Arial����������������������������� �����*��������!t;�������LAND�������win������������on upstreamFile (toolData, stream, filename, filesize) 02/02/03; 21:10:23 by TK get a file from a Groove Files Tool and copy it to a Radio www-folder on addToLinkTable(toolData, filename, filesize) 02/02/03; 21:11:31 by TK create a hyperlink to the file and store in a table local str = "" tmpTable saveFolder = user.radio.prefs.wwwfolder path = "" try path =string.replace(filename, saveFolder, "") path = string.replaceAll(path, "\\", "/") filename = file.fileFromPath(filename) str = str + "<a href=\"" + grooveInteropData.prefs.blogURL + path + "\">" str = str + filen���m����FFFF000000060001001777AA00000000005D0000000010017101-777F6FBE18000006000600343200-1034321FFFFF0106B0000100000034000000010E384034321FC6038C00033343D300002000000E800000000�E3,<SOAP-ENV:Header><GrooveHeader xmlns="http://webservices.groove.net/Groove/1.0/Core/"><TimeToLive>0</TimeToLive><GrooveIdentityURL>##url##</GrooveIdentityURL><GrooveNonce>##nonce##</GrooveNonce></GrooveHeader></SOAP-ENV:Header>000400000009000000020E50000500000009000000020E50000600000031000000010D30FFFF0A00000 30 000700000019000000010201800008000000B100000001�40,Arial�����������������������������������������������������������40,����������������������������������������������������������������404E44000321040008010100009000000170000000201072600107260000A000000150000000234321F34321F000B00000005000000020000C0000001600000001B32919921951000F0000005200000000400 10 �4,�����4,:����4,�����4,�����4,�����4,�����4,����00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��������������.��'��"��������������FFFF0FFFF0FFFE000000060001001777AA�SjN������������������������������������������������������������������������������������������������������������������m��������������!Uj"�������� �������T ����g��� ������ �����U ���b�� ����� �����. ���9��q ���z�� ����� �����9 ���C��z ����� ���createDiscussionEntry���:http://webservices.groove.net/Groove/1.0/Discussion#CreatecreateSubscription���=http://webservices.groove.net/Groove/1.0/Subscriptions#CreatedeleteDiscussionEntry���?http://webservices.groove.net/Groove/1.0/Discussion#DeleteEntrydeleteSubscription���=http://webservices.groove.net/Groove/1.0/Subscriptions#Delete readAccounts���6http://webservices.groove.net/Groove/1.0/Accounts#Read readContacts���6http://webservices.groove.net/Groove/1.0/Contacts#ReadreadDiscussion���8http://webservices.groove.net/Groove/1.0/Discussion#Read readEvents���4http://webservices.groove.net/Groove/1.0/Events#ReadreadFile���7http://webservices.groove.net/Groove/1.0/Files#ReadFile readFiles���3http://webservices.groove.net/Groove/1.0/Files#Read readSpaces���4http://webservices.groove.net/Groove/1.0/Spaces#Read readTools���3http://webservices.groove.net/Groove/1.0/Tools#ReadupdateDiscussionEntry���?http://webservices.groove.net/Groove/1.0/Discussion#UpdateEntryupdateSubscription���=http://webservices.groove.net/Groove/1.0/Subscriptions#Update�����-������������S׺_R�������� ����00001000 E���-�������� ������S׺_R�������������������$���g$Dg$D�������� ������� ���� Name���Donald Dodge/GrooveURI���9grooveIdentity://ejm77hdyzcc9p4rpcy9quyx7dbszzxskyqsbccr@����[����� ������ngng�������� ���� 00��%�������������$���nn��E�� ��������� ���Arial����������������������������� ������ ������iѺm�����)�1X/LAND�������win������������on getEvents () 08/02/03; 19:35:33 by TK Check for pending Groove events local startTime = clock.ticks() nonce = grooveInteropData.groove�[���������������Arial����������������������������� ������������jrpo������Z�LAND�������win������������on subscribeAll () local identityurl toolData callbackuri succes = false ret = false try if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) if defined(grooveInteropData.prefs.blog) identityurl = grooveInteropData.prefs.blog.toolAccountURI toolData = grooveInteropData.prefs.blog.toolData callbackuri = "dpp://localhost/grooveInterop_BLOGEVENT_" + clock.ticks() ret = grooveInteropSuite.util.groove.subscribe(identityurl,"urn:groove-net:DiscussionEvent", toolData, callbackuri , 2) if ret != false succes = true if defined(grooveInteropData.prefs.files) identityurl = grooveInteropData.prefs.files.toolAccountURI toolData = grooveInteropData.prefs.files.toolData callbackuri = "dpp://localhost/grooveInterop_FILESEVENT_" + clock.ticks() ret = grooveInteropSuite.util.groove.subscribe(identityurl,"urn:groove-net:FilesEvent", toolData, callbackuri , 2) if ret != false succes = true return(succes) subscribeAll () ���������������������������������������������������������������������������������������������������������������������������������������w����������'� ��Arial����������������������������� ������������`m'���V���fhLAND�������win������������on contactNameByURI (uri) 10/02/03; 22:36:17 by TK get a contact's name by it's identityURL on updateContacts() local addrIdentities addr if defined(grooveInteropData.groove.temp.identities) addrIdentities = @grooveInteropData.groove.temp.identities for i = 1 to sizeof(addrIdentities^) addr = @addrIdentities^[i] grooveInteropSuite.util.groove.refreshContacts(addr, @grooveInteropData.groove.contacts) on doesContactExist(uri) local addr if !defined(grooveInteropData.groove.contacts) new (tabletype, @grooveInteropData.groove.contacts) addr = @grooveInteropData.groove.contacts for i = 1 to sizeof(addr^) if addr^[i].URI == uri return(true) return(false) local addr i if not doesContactExist(uri) updateContacts() if defined(grooveInteropData.groove.contacts) addr = @grooveInteropData.groove.contacts for i = 1 to sizeof(addr^) if addr^[i].URI == uri return(addr^[i].Name) return("Unknown user") dialog.notify(contactNameByURI ("grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@")) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������w�������������8���fdfd�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance����������������fdfd��������F������B���j���Sf#�������� ������� ����&���2 ����=���I ����U���a ����i���u ������� ������� ������� ����contactNameByURI������getNonce������ handleBlog������ handleFiles������refresh������refreshAccounts������2refreshIdentities�������running������scan�������t��F���������&����������`R��������������item #1��VArial����������������������������� ���������������������������������������������ipt r�������������r��� ��Arial����������������������������� ��������������dIʺde ���U����sHLAND�������win������������on getStoryTitle (text) 03/02/03; 18:26:03 by TK get a title from the first sentence of the storytext (aggregatorData.stories) if it's a link, get the link-text... local addr textreg lst pattern = ">[^<]*" try textreg = string.firstSentence(text) if regex.extract(pattern, @textreg, @lst) lst[1] = string.replaceAll(lst[1], ">", "") return(lst[1]) else return(textreg) else return(tryError) dialog.notify(getStoryTitle(aggregatorData.stories[sizeof(aggregatorData.stories)-7].storytext)) �������������������������������������������������������������������������������������������������������FFFF000000060001001777AA00000000005E00000000100171018049042180000060006003913200-10391321FFFFF010C26000010000007800000002063184033A321F5F803C8000393303A31820631F248403A3391321F8EA038E000903391337000020000063700000000�631,<script language="javascript" type="text/javascript"> <!-- var tools = new Array("","",""); var blogNode = null; var newsNode = null; var filesNode = null; var blogData = ""; var newsData = ""; var filesData = ""; var myGrooveData = null; function validate(obj) { switch(obj.name) { case "blog": if( document.all.news.value == obj.value ) alert("This tool is in use by 'News', please try again.") ; else blogData = obj.value; blogNode.text = obj.value; break; case "news": if( document.all.blog.value == obj.value ) alert("This tool is in use by your Radio weblog, please try again." ); else newsData = obj.value; newsNode.text = obj.value; break; case "files": filesData = obj.value; filesNode.text = obj.value; break; } init(); } function init() { if( myGrooveData == null ) { myGrooveData = grooveData.XMLDocument; blogNode = myGrooveData.selectSingleNode("//SelectedTools/Tool[@type='blog']"); newsNode = myGrooveData.selectSingleNode("//SelectedTools/Tool[@type='news']"); filesNode = myGrooveData.selectSingleNode("//SelectedTools/Tool[@type='files']"); blogData = blogNode ? blogNode.text : blogData; newsData = newsNode ? newsNode.text : newsData; filesData = filesNode ? filesNode.text : filesData; } var lst = myGrooveData.selectNodes("//Tool[Type='urn:groove.net:platform.tools.Discussion']"); var html = ""; var blogCombo = ""; var newsCombo = ""; var filesCombo = ""; if(lst) { blogCombo = createCombo("blog", lst, blogData) + "<br>"; 0002000008F900000631�8F3, } lst = myGrooveData.selectNodes("//Tool[Type='urn:groove.net:platform.tools.Discussion']"); if(lst) { newsCombo = createCombo("news", lst, newsData) + "<br>"; } lst = myGrooveData.selectNodes("//Tool[Type='urn:groove.net:platform.tools.Files']"); if(lst) { filesCombo = createCombo("files", lst, filesData) + "<br>"; } document.all.blogDescription.innerHTML = "<hr /><b>BLOG</b><p />Choose a Discussion Tool for your <a href=\"http://127.0.0.1:5335/\">Radio weblog</a>:"; document.all.blogCombo.innerHTML = blogCombo; document.all.newsDescription.innerHTML = "<hr /><b>NEWS</b><p />Choose a Discussion Tool for the <a href=\"http://127.0.0.1:5335/system/pages/news\">Radio news-aggregator</a>:"; document.all.newsCombo.innerHTML = newsCombo; document.all.filesDescription.innerHTML = "<hr /><b>FILES</b><p />Choose a Files Tool to upstream from:"; document.all.filesCombo.innerHTML = filesCombo; } function createCombo(name, nodeList, data) { var html = '<select name="' + name + '" onchange="validate(this);window.status=this.value">'; var addedTools = new Array(); var found = false; for(var i = 0; i < nodeList.length; i++ ) { var el = nodeList(i); var toolData = el.childNodes(0).text; var identity = el.childNodes(1).text; var toolName = el.childNodes(2).text; var spaceName = el.childNodes(3).text; var sel = ""; if( data == toolData && data != ""){ sel = " selected"; } if( data == "" && i == 0 ){ sel = " selected"; } for(var j = 0; j < addedTools.length; j++ ) { if( addedTools[j] == toolData ) found = true; } if( !found ) { addedTools.push(toolData); html += '<option value="'+toolData+'" '+sel+'>' + toolName + ' [space: '+spaceName+']</option>'; } found = false; } html += '</select>'; return html; } function toolSpaceName(data) { var lst = grooveData.XMLDocument.selectNodes("//Tools/Tool"); if( lst ) { for(var i = 0; i < lst.length; i++ ) { var el = lst(i); var toolData = el.childNodes(0).text; if( data == toolData ) return(el.childNodes(3).text); } } return ""; } function form_submit(op) { document.all.op.value = op; document.forms[0].submit(); } //--> </script>00040000000A000000020F26000050000000A000000020F260000600000031000000010D30FFFF0A00000 20 000700000019000000010201800008000000B100000001�40,Arial�����������������������������������������������������������40,����������������������������������������������������������������404E440003210400080101000090000001700000002013B21E013B21E000A0000001700000002391321F391321F000B00000005000000020000C0000001A00000001C26C1067DF465640000F0000005200000000400 10 �4,77A�4,scr �4,E77A�4,p�p��4,100�4,0�4,����00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��������������.��'��"��������������FFFF0FFFF0FFFE000000060001001777AA�b\ bl�����������������������������������������$���������������������������������������������������������������������������V�������R���$���h|&h|&�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������O������h|&h|&�������������������G���Arial����������������������������� ��������������$cͺ$e���K����<LAND�������win������������on style () local s = string(grooveInteropWebsite.style) return(s) ��������������������7d6facvzh38xb39@ity������;����������������B���h'h'�������� ���� ��� ����%���[ ����f���r��������w ����~ accountName��� Tim Knip_1 accountURI���2grooveIdentity://nrc2m2cn2pkkxzc372q23waa7uvf6txa@ identities������bmodespaces������z���Ԁ�������[������h'h'�������������������.���h'h'�������� ������� �������e ����iName��� Tim Knip_1Spaces���G/GWS/Groove/1.0/Spaces/grooveIdentity/nrc2m2cn2pkkxzc372q23waa7uvf6txa@URI���2grooveIdentity://nrc2m2cn2pkkxzc372q23waa7uvf6txa@���Հ��U�����Q���$���SS�������� ���� ���h ����)������߱���8���Si�������� �����U����������W����������������������space���/GIFfGIF89a�������!����,�������D�;��VArial����������������������������� �������������������������������������������������������������St>9�������� ���� ��� ����!���- ����>���J ����T���` ����i���u ������� ������� ������� ������� ������� ����� ���)��5 ���B��N ���V��b ���m��y ����� ����� ����� ����� ��� checkBlog������ checkFiles������contactNameByURI������}n getEvents�������*getNonce������ _ handleBlog������ handleEvents������ jrefreshAccounts������refreshContacts������_refreshIdentities������ refreshSpaceMembers������ refreshSpaces������/ refreshTools������&vrunning������P saveEvents������` subscribe������} subscribeAll������xQ unsubscribe������updateOldPosts������ updateSubscriptions������7��ۀ�������w������wѺw�������� ����� ���~�������z���.���ww�������� ������� ����"���. ����</atts������ 400002000 Header������ 3 00003000 Body������ G�����8������1������ww�������� ���� namespace���soap:����8��������������ww�������������������8���wԁwԁ�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance����������������wԼwԼ���������`������F���$���wFwF�������� ������� ����/atts������/pcdata����adResponse���������`���T������1������wۈwۈ�������� ���� namespace���soap:���7���5�������1������wպ���T������� ������wۈwۈ���������5�������1������wĺw�������� ���� namespace���soap:���5��&��������$���ww�������� ���������&�������������8���wݤwݤ�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance����������V������wݤwݤ�������������������8���w)w)�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance���������� 7������wdwd������������ LX������ww�������� ����00001000 E��-�*�����b���$���ww�������R�V����� n������x}ߺx}�������� ����00001000 Envelope������ ���@� ����� n���.���x}ߺx}����������������L���|出|�������� ���� ���@ ����K���h ����k��� ������� ���������� CallbackURI���0dpp://localhost/grooveInterop_FILESEVENT_3210960 EventClass���urn:groove-net:FilesEventID���'bq8t4yrjwp3mx7vpajbvseue6c6izgjpbqagcri IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ sourceURI���/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine TimeToLive��������������8���wdwd�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance����������>������wҠwҠ�������������������8���vv�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance���������� F������vv�������������������8���gHgH�������� ���� ��� �������K ����T���x ���� namespace���soap: xmlns:soap���)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs��� http://www.w3.org/2001/XMLSchema xmlns:xsi���)http://www.w3.org/2001/XMLSchema-instance����������j������gHںgIH���������U�������Q���$���f%f%�������� ���� ��� ����linetext��� Preferencespath���test.wsf���U������� ������f%f%����������� ����l������Arial����������������������������� ������������Ffj���J����[3LAND�������win������������<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>{title} {grooveInteropSuite.html.style()} {grooveInteropSuite.html.grooveDataAsXML()} {grooveInteropSuite.html.js()} home | preferences | help
{bodytext} UQ$ff  linetext Preferencespathtest.wsfUffUQ$fjfj  linetext Preferencespathtest.wsfUgRgR !eagg 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@UQ$fĺf  linetext Preferencespathtest.wsfU)fĺfUQ$fqfq  linetext Preferencespathtest.wsfUfqfqUQ$fXfX  linetext Preferencespathtest.wsfU6wfXfXhagg 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@jrghJ.!!ȺhD  !- 6 createRequestheader^postvarsr8p&%p&% C Q` o 00001000 URI2grooveIdentity://gs5f474ev5qzdvr4kqdeyhu9gmxezzve@ 00002000 Name Peter Romo00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/gs5f474ev5qzdvr4kqdeyhu9gmxezzve@00004000 AwarenessOffLine8p&%p&% C Qd s 00001000 URI2grooveIdentit ? (Arial $!h<LANDwinon upstreamFile (  Arial iѺm)1X2LANDwinon getEvents () 08/02/03; 19:35:33 by TK Check for pending Groove events local startTime = clock.ticks() nonce = grooveInteropData.groove.webservicesnonce soapaction = grooveInteropData.soap.template.groove.actions.readEvents method = grooveInteropData.soap.template.groove.methods.readEvents httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.events host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, addr xmlTable callbackURI = "" identityurl stream if not defined(grooveInteropData.groove.events) grooveInteropData.groove.ready = false return(false) if defined(grooveInteropData.groove.eventTable) delete (@grooveInteropData.groove.eventTable) new (tabletype, @grooveInteropData.groove.eventTable) bundle // open a stream try stream = tcp.openStream(host, port) else grooveInteropData.groove.ready = false return(false) addr = @grooveInteropData.groove.events bundle // loop thru all event-subscriptions and save to a tmp-table try for i = 1 to sizeof(addr^) bundle // retreive events for current subscription method = grooveInteropData.soap.template.groove.methods.readEvents method = string.replaceAll(method, "##callbackuri##", addr^[i].CallbackURI) identityurl = addr^[i].IdentityURL httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest, stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false save the events for this subscription to a temporary table grooveInteropSuite.util.groove.saveEvents(xmlTable^, @grooveInteropData.groove.eventTable) else grooveInteropData.groove.ready = false radio.log.add("grooveInterop","Error while retreiving Groove-events: " + tryError, startTime) return(false) bundle // now handle all found events if defined(grooveInteropData.groove.eventTable) if sizeof(grooveInteropData.groove.eventTable) > 0 grooveInteropSuite.util.groove.handleEvents(@grooveInteropData.groove.eventTable, stream) else delete (@grooveInteropData.groove.eventTable) bundle // close the stream try tcp.closeStream(stream) else grooveInteropData.groove.ready = false return(false) grooveInteropData.groove.ready = true dialog.notify(getEvents()) JUQ$g+0g+0  linetext Preferencespathtest.wsfUrg+0g+0)]Bg7g7 B JR Wj p IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@IsLocaltrueNameV2.5 EvaluationToolsM/GWS/Groove/1.0/Tools/grooveTelespace/v84rwx4rzurq8tfxpvgyfj3j6mqn7nzg4nu4ysaURIN/GWS/Groove/1.0/Spaces/grooveTelespace/v84rwx4rzurq8tfxpvgyfj3j6mqn7nzg4nu4ysaS/Groove/1.0/Spaces/grooveTelespace/3gqki0$p%p%  ,2k,Arial !!bLANDwinon createFileDescriptor (addr) local str = "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" + addr^.ID + "" str = str + "" return(str) bundle // testcodt & Arial Vrn |RLANDwinon install () 24/01/03; 14:01:27 by TK local startTime = clock.ticks() radio.log.add("grooveInterop", "Beginning installation.", startTime) bundle // set the blogURL if defined(user.radio.prefs.defaultCloudData.url) grooveInteropData.prefs.blogURL = user.radio.prefs.defaultCloudData.url if not defined(grooveInteropData.groove.subscribed) grooveInteropData.groove.subscribed = false bundle // set data for rootUpdates if !defined(user.rootUpdates.servers.grooveInterop) new (tabletype, @user.rootUpdates.servers.grooveInterop) user.rootUpdates.servers.grooveInterop.autobackup = true user.rootUpdates.servers.grooveInterop.dbname = "grooveInterop.root" user.rootUpdates.servers.grooveInterop.dialogs = true if !defined(user.rootUpdates.servers.grooveInterop.lastupdate) user.rootUpdates.servers.grooveInterop.lastupdate = "Thu, 30 Jan 2003 11:13:29 GMT" user.rootUpdates.servers.grooveInterop.method = "radio.getUpdate" user.rootUpdates.servers.grooveInterop.openLog = true user.rootUpdates.servers.grooveInterop.port = 5335 user.rootUpdates.servers.grooveInterop.serialNum = "0000000" user.rootUpdates.servers.grooveInterop.server = "suite75.net" user.rootUpdates.servers.grooveInterop.URL = "" if !grooveInteropData.initialized bundle // check for rootUpdates grooveInteropData.rootupdates.updating = true thread.callScript (@grooveInteropData.rootupdates.update,{}) grooveInteropData.initialized = true bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort bundle // add callbacks if defined(aggregatorData.callbacks) if !defined(aggregatorData.callbacks.postScan.postScanCallback) aggregatorData.callbacks.postScan.postScanCallback = @grooveInteropSuite.util.postScanCallback grooveInteropSuite.util.postScanCallback() if !defined(user.radio.callbacks.postItem) new (tabletype, @user.radio.callbacks.postItem) if !defined(user.radio.callbacks.postItem.grooveInterop) user.radio.callbacks.postItem.grooveInterop = @grooveInteropSuite.util.postItemCallback if defined(user.radio.callbacks.deleteItem) new (tabletype, @user.radio.callbacks.deleteItem) if !defined(user.radio.callbacks.deleteItem.grooveInterop) user.radio.callbacks.deleteItem.grooveInterop = @grooveInteropSuite.util.deleteItemCallback radio.log.add("grooveInterop", "Installation complete.", startTime) install() 0VR$hfhf  linetext Preferencespath index.wsfVhfhfVR$hfhf  linetext Preferencespath index.wsfVahfhfVR$hehe  linetext Preferencespath index.wsfVheheVR$hehe  linetext Preferencespath index.wsfVyheheUQ$h2h2  linetext Preferencespathtest.wsfUh2h2!ah2h2 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@@~.h/lh/l>$p|Vp|V  !NameMichael Herman (Dev)URI2grooveIdentity://t9fti8rbfueba2vr37pgpsa5a5yimv7w@. </attss $p|Vp|V ; ?Name2Michael Herman (Current)/Parallelspace CorporationURI2grooveIdentity://7jsmsyhzguerxzf36gqdbwrkj27598hu@ .S׺S  ' ,fileMenu radio DuserƦoap:r$ qu@qu@ nS׺_RLpQpQ = Hj m  CallbackURI-dpp://localhost/grooveInterop_BLOGEVENT_88985 EventClassurn:groove-net:DiscussionEventID'n6htkesp25q3bkadhghxehvyw2zbahrstwh7hcs IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ sourceURI/GWS/Groove/1.0/Discussion/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/q448mdmcmacfa6msjdqp8krdhixyehcc3tz3a82.Discussion.Tool/DiscussionDataModelDelegate TimeToLivep p p p pкppкppppppXpXpXpappppppppppppVR$c\c\  linetext Preferencespath index.wsfVc\c\tR$coco  linetext Preferencespath index.wsfLANDwint 0 nn 00001000 URI2gro6 tQArial fh( 2qLANDwinon refreshIdentities (accountsXmlTable, addrAccounts) 24/01/03; 17:13:40 by TK retreive identities local addrBody, addrIdentity, addrContacts lstAccounts, lstIdentities i, j, k tmpTable contacts = "" lstIdentity if xml.getPathAddress(@accountsXmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lstAccounts = xml.getAddressList(addrBody, "Account") for i = 1 to sizeof(lstAccounts) contacts = xml.getValue(lstAccounts[i], "Contacts") lstIdentities = xml.getAddressList(lstAccounts[i], "Identities") for j = 1 to sizeof(lstIdentities) if sizeof(lstIdentities) > 0 lstIdentity = xml.getAddressList(lstIdentities[j], "Identity") for k = 1 to sizeof(lstIdentity) new(tabletype, @tmpTable) tmpTable.URI = xml.getValue(lstIdentity[k], "URI") tmpTable.Name = xml.getValue(lstIdentity[k], "Name") tmpTable.Spaces = xml.getValue(lstIdentity[k], "Spaces") tmpTable.Contacts = contacts addrAccounts^.[tmpTw' Arial `m'QfhLANDwinon contactNameByURI (uri) 10/02/03; 22:36:17 by TK get a contact's name by it's identityURL on updateContacts() local addrIdentities addr if defined(grooveInteropData.groove.temp.identities) addrIdentities = @grooveInteropData.groove.temp.identities for i = 1 to sizeof(addrIdentities^) addr = @addrIdentities^[i] grooveInteropSuite.util.groove.refreshContacts(addr, @grooveInteropData.groove.contacts) on doesContactExist(uri) local addr if !defined(grooveInteropData.groove.contacts) new (tabletype, @grooveInteropData.groove.contacts) addr = @grooveInteropData.groove.contacts for i = 1 to sizeof(addr^) if addr^[i].URI == uri return(true) return(false) local addr i if not doesContactExist(uri) updateContacts() if defined(grooveInteropData.groove.contacts) addr = @grooveInteropData.groove.contacts for i = 1 to sizeof(addr^) if addr^[i].URI == uri return(addr^[i].Name) return("Unknown user") dialog.notify(contactNameByURI ("grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@")) 0`+1f䶺f namespacesoap:4@ HT [g q} `??f䵺fm[Bg7պg7 B JR Wh n IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@IsLocaltrueName grooveInteropToolsM/GWS/Groove/1.0/Tools/grooveTelespace/gwqs37tbi3jwxtnrivyity4vujxycrq9wawgsz2URIN/GWS/Groove/1.0/Spaces/grooveTelespace/gwqs37tbi3jwxtnrivyity4vujxycrq9wawgsz2veTelespace/2fmG.h3 0 radio.weblog.publish() on handleGroovePost(entryid, uri, subject, body, createdby, created, modifiedby, modified, stream) 01/02/03; 01:48:49 by TK determine what to do: add, delete, edit local tmpTable post postid text userid = "" username = "unknown user" title = "no title" if not doesContactExist(createdby) updateContacts() if modifiedby != "" userid = modifiedby else userid = createdby try username = grooveInteropSuite.util.groove.contactNameByURI(userid) if defined(grooveInteropData.groove.posts[entryid]) postid = grooveInteropData.groove.posts[entryid].PostID if defined(weblogData.posts[postid]) if grooveInteropData.groove.posts[entryid].Modified != modified the Groove discussion-entry was modified grooveInteropData.groove.posts[entryid].Subject = subject if defined(grooveInteropData.prefs.showAccountName) if grooveInteropData.prefs.showAccountName == true body = ""+username+":
" + body else grooveInteropData.prefs.showAccountName = true body = ""+username+":
" + body grooveInteropData.groove.posts[entryid].Body= body grooveInteropData.groove.posts[entryid].ModifiedBy = modifiedby grooveInteropData.groove.posts[entryid].Modified = modified ok, found the post. now update the radio-post and publish post = @weblogData.posts[postid] post^.title = subject if wp.newTextObject(body, @text) post^.text = text radio.weblog.publish() else check whether the post was edited within Radio post = @weblogData.posts[postid] if defined(post^.title) title = post^.title if string(post^.text) != grooveInteropData.groove.posts[entryid].Body grooveInteropSuite.soap.updateDiscussionEntry(grooveInteropData.groove.posts[entryid].URI, grooveInteropData.groove.posts[entryid].CreatedBy, title, string(post^.text), stream) grooveInteropData.groove.posts[entryid].Subject = subject grooveInteropData.groove.posts[entryid].Body = string(post^.text) grooveInteropData.groove.posts[entryid].When = post^.when else the post was deleted from weblogData.posts need to remove the entry from the Groove-discussion try grooveInteropSuite.soap.deleteDiscussionEntry(grooveInteropData.groove.posts[entryid].URI, entryid, grooveInteropData.groove.posts[entryid].CreatedBy, stream) delete(@grooveInteropData.groove.posts[entryid]) else a new entry is available in the Groove discussion new (tabletype, @tmpTable) tmpTable.URI = uri tmpTable.Subject = subject if defined(grooveInteropData.prefs.showAccountName) if grooveInteropData.prefs.showAccountName == true body = ""+username+":
" + body else grooveInteropData.prefs.showAccountName = true body = ""+username+":
" + body tmpTable.Body = body tmpTable.CreatedBy = createdby tmpTable.Created = created tmpTable.ModifiedBy = modifiedby tmpTable.Modified = modified post = radio.weblog.post(tmpTable.Body) post^.title = tmpTable.Subject radio.weblog.publish() tmpTable.PostID = nameof(post^) tmpTable.When = post^.when grooveInteropData.groove.posts[entryid] = tmpTable -------------------------------------------------------------------------------------------------------------------------------------------------- start main function local startTime = clock.ticks() httpRequest = "" httpResult = "" identityurl = "" nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort method = grooveInteropData.soap.template.groove.methods.readDiscussion soapaction = grooveInteropData.soap.template.groove.actions.readDiscussion tooldata xmlData needCloseStream = false if !nonce or !grooveInteropData.groove.ready or grooveInteropData.rootupdates.updating return(false) if grooveInteropData.prefs.blogTool == "" return(false) bundle // create the groove-posts table if needed if !defined(grooveInteropData.groove.posts) new (tabletype, @grooveInteropData.groove.posts) bundle // open a stream try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) else return(false) bundle // send request, handle response try tooldata = grooveInteropData.prefs.blogTool if defined(grooveInteropData.prefs.blog.toolAccountURI) identityurl = grooveInteropData.prefs.blog.toolAccountURI httpRequest = grooveInteropSuite.http.createRequest(nonce,method,tooldata,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) else return(false) new(tabletype, @xmlData) try if xml.compile(httpResult, @xmlData) check for a fault if xml.getPathAddress(@xmlData, "Envelope/Body/Fault", @addrBody) local faultcode = xml.getValue(addrBody, "faultcode") faultstring = xml.getValue(addrBody, "faultstring") return(false) if xml.getPathAddress(@xmlData, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local lst, i entryid modified now delete all entries lst = xml.getAddressList(addrBody, "DiscussionEntry") for i = 1 to sizeof(lst) entryid = xml.getValue(lst[i], "ID") modified = xml.getValue(lst[i], "Modified") handleGroovePost(entryid, xml.getValue(lst[i], "URI"), xml.getValue(lst[i], "Subject"), xml.getValue(lst[i], "Body"),xml.getValue(lst[i], "CreatedBy"),xml.getValue(lst[i], "Created"),xml.getValue(lst[i], "ModifiedBy"),xml.getValue(lst[i], "Modified"), stream) checkGrooveDeletes(lst) bundle // close the stream try if needCloseStream tcp.closeStream(stream) else return(false) dialog.notify(handleBlog()) "UQ$g3̺g3  linetext Preferencespathtest.wsfUQ[g3̺g360hgthgt op getaccounts6K8hh C Qc r8&"8hԺh C Qo ~ ۀ-)8p&%p&% J Xo ~ 00001000 URI9grooveIdentity://ejm77hdyzcc9p4rpcy9quyx7dbszzxskyqsbccr@ 00002000 NameDonald Dodge/Groove00003000 VCardM/GWS/Groove/1.0/vCard/grooveIdentity/ejm77hdyzcc9p4rpcy9quyx7dbszzxskyqsbccr@00004000 AwarenessOffLineC,Arial ja`j4mVt8LANDwiKArial n/ĺn&F{LANDwinon refreshSpaceMembers (addr) 11/02/03; 18:59:41 by TK refreshes members of a space on findIdentityAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.identities) return(false) addr = @grooveInteropData.groove.temp.identities for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) on findSpaceAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.spaces) return(false) addr = @grooveInteropData.groove.temp.spaces for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) local addrSpace addrIdentity if not defined(addr^.toolAccountURI) return(false) if defined(grooveInteropData.groove.temp) delete (@grooveInteropData.groove.temp) new (tabletype, @grooveInteropData.groove.temp) new( tabletype, @grooveInteropData.groove.temp.identities) new( tabletype, @grooveInteropData.groove.temp.spaces) if grooveInteropSuite.util.groove.refreshAccounts(@grooveInteropData.groove.temp.identities) addrIdentity = findIdentityAddr(addr^.toolAccountURI) if grooveInteropSuite.util.groove.refreshSpaces(addrIdentity, @grooveInteropData.groove.temp.spaces) addrSpace = findSpaceAddr(addr^.toolSpace) if defined(addr^.Members) delete(@addr^.Members) addr^.Members = addrSpace^.Members return(true) return(false) dialog.notify(refreshSpaceMembers (@grooveInteropData.prefs.blog)) vtz$p|Vp|V P TNameGandyswarbs -PopG2 - obsolete - replaced by /SwaschURI2grooveIdentity://xxmh5jg8jwc249qkhiiizts8tx592kf9@S$p|Vp|V ? CName6andyswarbs -PopG1 is now obsolete use -PopG1#3 insteadURI2grooveIdentity://ew529hku24ce3dkgfcdgg65ymssx8k3f@S|_|_ ) 3i rv y  ' ,g lq v  Created2003-02-15T18:47:10.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderIDID0c5eba2557815703ce2b0518035b81ad630f28321bb9b73c9Modified2003-02-15T18:47:10.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@NameahahahPath7C:\Program Files\Radio UserLand\www\groove\files\ahahahSize0TypeFolderUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/c5eba2557815703ce2b0518035b81ad630f28321bb9b73c9-instancev51yкy namespacesoap:5 LyyVR$bf6bf6  linetext Preferencespath index.wsfV&bf6bf6VR$bfbf  linetext Preferencespath index.wsfV1bfbfpR$beɺbe  linetext Preferencespath index.wsfV2($bpbeɺbebebeVR$bdbd  linetext Preferencespath index.wsfVbdbdxp$bjbj  NamejohngURI2grooveIdentity://d6g3g6hntwa7smuqj563yw5dfsacbnff@x"9t$ee "VR$eVeV  linetext Preferencespath index.wsfV(eYeY.g7Ժg7 > AO Raccount2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ok Get Spacesop getspaceszd :Bg7պg7 B JR Wk q IdentityURL2grooveIdente FFFF0000000600010017 Bp&p&  ̀ g_ Arial iѺm)1X,LANDwinon getEvents () 08/02/03; 19:35:33 by TK Check for pending Groove events local startTime = clock.ticks() nonce = grooveInteropData.groove.webservicesnonce soapaction = grooveInteropData.soap.template.groove.actions.readEvents method = grooveInteropData.soap.template.groove.methods.readEvents httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.events host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort E onArial gg+1QLANDwinon refreshTools (addrSpace, addrToolsTable, stream=nil) 24/01/03; 17:13:40 by TK retreive usable tools local soapaction = grooveInteropData.soap.template.groove.actions.readTools method = grooveInteropData.soap.template.groove.methods.readTools nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, spacename host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j identityurl needCloseStream = false xmlTable, addrBody, lst bundle // open a stream try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) return(false) else return(false) try path = addrSpace^.Tools identityurl = addrSpace^.IdentityURL spacename = addrSpace^.Name bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false local tmpTable if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lst = xml.getAddressList(addrBody, "Tool") for j = 1 to sizeof(lst) new (tabletype, @tmpTable) tmpTable.IdentityURL = identityurl tmpTable.Type = xml.getValue(lst[j], "Type") tmpTable.Name = xml.getValue(lst[j], "Name") tmpTable.Data = xml.getValue(lst[j], "Data") tmpTable.SpaceName = spacename if tmpTable.Type == "urn:groove.net:platform.tools.Discussion" or tmpTable.Type == "urn:groove.net:platform.tools.Files" addrToolsTable^.[sizeof(addrToolsTable^)+1] = tmpTable bundle // close the stream try if needCloseStream tcp.closeStream(stream) if sizeof(addrToolsTable^) > 0 return(true) return(false) 3j!oi  *6 9E O[ lx } createSelects[grooveDataAsXML Ojs ?1 listFiles wlistSpaceMembers smenu8 prefsForm 1scripts Jstyle rVArial o5oV(/atts C000YArial $gWqmLANDwinhome preferences help YVR$`#`#  linetext Preferencespath index.wsfV;J`#`#VR$`ܺ`  linetext Preferencespath index.wsfVVR$``  linetext Preferencespath index.wsfVP``.vj  ?  K  W6K rJmnI&/qEp0a2O5gMOZKSqb33NLi,()2<)sg<`, 8y|GKE$GP&8&1([W+>&ԙե+ֱ7׽2K2 #9tN :Ğ D*~/3GN:b;JP\GHkf]:wW!E9384oub00z7=H b F`` eWI>"dXZX;:B>W=EJJ|K![)Q)!*+4+nqnX6*6176ho}pp0Z0NZ"XnXK&gHerz, :Nb v78Z[j!l !"{>*U5`#z V95hyCT (nL}Y/|."5<=p=? K;KQhWX QhWX *_K_KA00000000005B0000*S׺_R=2`ں` Name jirong zhou, =*,$efef # 'Nameandyswarbs -PBPArial cCcH%{8LANDwinon scan () local stream host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort if !grooveInteropData.groove.ready or grooveInteropData.rootupdates.updating return(false) if grooveInteropData.prefs.blogTool == "" and grooveInteropData.prefs.filesTool == "" return(false) bundle // open a stream try stream = tcp.openStream(host, port) else try tcp.closeStream(stream) else return(false) if grooveInteropData.prefs.blogTool != "" grooveInteropSuite.util.groove.handleBlog(stream) if grooveInteropData.prefs.filesTool != "" grooveInteropSuite.util.groove.handleFiles(stream) bundle // close the stream try tcp.closeStream(stream) *VR$_8_8  linetext Preferencespath index.wsfVk_8_8[P.`Ǜ`Ǯ ctenabledscript(k_K[!$tktk !;7!!׺!! httpContinueTP;Ğ$p|Vp|V # 'NameJeroen Bekkers 1.3/Suite75URI2grooveIdentity://r6ckviru4hkare9mzf2hmtvrtknx9ht3@I$p|Vp|V  NamejdmURI2grooveIdentity://92tikr4efvqjejg6imt2g2qrgxxcaq9w@rwI$p|Vp|V  NamejdesouzaURI2grooveIdentity://k5g8gqgy7r4345euxu4ems233cnrppji@51pXpX namespacesoap:5@pXpX+Arial S׺a(7QLANDwindialog.notify ("grooveInterop by Suite75") Lcocos.!9\B  + 5 onSettingsEonStart onWelcomeY VArial 2oV3/8`` V [g n ContactsI/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@NameTim KnipSpacesG/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@3:b``z Arial Arialz$eѣeѣ !eagg 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@x"R$cn,cn,  linetext Preferencespath index.wsfURI9grooveIdentity://e4i894t48bxlcn,cn,!8cmcm C Qj y 00001000 URI2grooveIdentity://zcaaiz334xch53z7znznmhihfrycwgrs@ 00002000 NameTim Knip [build 1342]00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/zcaaiz334xch53z7znznmhihfrycwgrs@00004000 AwarenessOffLine!Lh000000060001001777AA000000000# Arial S׺dlYBLANDwinThis script returns a string which appears in the Status Center on the Radio UserLand home page. return ("grooveInterop v." + grooveInteropInfo.version) LD' Arial S׺dl^BLANDwinThis script returns a string which appears in the Status Center on the Radio UserLand home page. return ("grooveInterop v." + grooveInteropInfo.version)  Created2002-08-15T15:22:4DH Arial !!jSj6LANDwinon httpContinue (url, action, siz) local str bundle // Create HTTP/1.1 header, append SOAP-message str = str + "POST " + url + " HTTP/1.1\r\n" str = str + "SOAPAction: \"" + action + "\"\r\n" str = str + "Connection: Keep-Alive\r\n" str = str + "Content-Type: text/xml; charset=\"utf-8\"" + "\r\n" str = str + "Content-Length: " + siz + "\r\n" str = str + "Expect: 100-continue\r\n" str = str + "Host: localhost" + "\r\n" return(str) .wݤwݤ 9$wѺw  */atts800002000 UpdateResponseW{bJ 9$wѺw  /atts/pcdata8wѺw  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance8thth  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance qthth6S׺_R  Name M6S׺_RaXa62S׺W startupBM6S׺_Rp\$aa  (/atts9t00002000 ReadResponsewinpm pp ) 3i t / 9M V   , 1? DI NX _g kCreated2003-02-12T23:37:00.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ EventClassurn:groove-net:FilesEvent EventSourcegrooveTelespace://6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine EventTypeFileAddEventDataFolderID056b3c386847f8904970e2df85b24e3ab894bf1bce128fab8ID01aa17255bc15495114fe1faa16297f0e163fe02a22095391Modified2003-02-12T23:37:00.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name New FolderSize0TypeFolderUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/1aa17255bc15495114fe1faa16297f0e163fe02a220953918Ty pp ) 3i t / 9M V   , 1? DI NX _g kCreated2003-02-12T23:36:54.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ EventClassurn:groove-net:FilesEvent EventSourcegrooveTelespace://6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine EventTypeFileAddEventDataFolderID0f2f6e1e1c931db98b35556ddcb54738d1af2923542a49e29ID056b3c386847f8904970e2df85b24e3ab894bf1bce128fab8Modified2003-02-12T23:36:54.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name New FolderSize0TypeFolderUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/56b3c386847f8904970e2df85b24e3ab894bf1bce128fab8  V %`!i  *6 ?i  r000000060001001777AA00000000005B0000000010017101804904218000006000600343200-1034321FFFFF0106B0000100000034000000010E384034321FC6038C00033343D300002000000E800000000E3,0##url####nonce##000400000009000000020E50000500000009000000020E50000600000031000000010D30FFFF0A00000 30 000700000019000000010201800008000000B10000000140,Arial40,404E44000321040008010100009000000170000000201072600107260000A000000150000000234321F34321F000B00000005000000020000C0000001600000001B32919921950000F0000005200000000400 10 4,4,:4,4,4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AASjNk r!V!j: q u  R _   R ] ( 2  4 J createDiscussionEntryW##entry##createSubscription##eventclass####sourceuri####callbackuri####timetolive##deleteDiscussionEntryLdeleteSubscription`##id## readAccountsC readContactsCreadDiscussionE readEventsp##callbackuri##readFileJ readFiles`true readSpacesA readTools@updateDiscussionEntrya##entry##updateSubscription##id####timetolive## r7!Nl urlhttp://127.0.0.1/grooveInterop/IE r$rr  &/atts000020mt.!!Ⱥoq  !- 6 createRequestqheaderISpostvarsAVArial 2oVZ. Arial W ijUgpH*LANDwinon createRequest (nonce,method,path,soapaction,identityurl="") 25/01/03; 01:40:48 by TK added support for sending the identity-url with the SOAP-header local httpRequest="" grooveHeader = string(grooveInteropData.soap.template.groove.header) soapEnvelope = string(grooveInteropData.soap.template.envelope) bundle // create the http-request grooveHeader = string.replaceAll(grooveHeader, "##nonce##", nonce) grooveHeader = string.replaceAll(grooveHeader, "##url##", identityurl) soapEnvelope = string.replaceAll(soapEnvelope, "##header##", grooveHeader) soapEnvelope = string.replaceAll(soapEnvelope, "##body##",method) httpRequest = grooveInteropSuite.http.header.httpContinue(path, soapaction, sizeof(soapEnvelope)-1) httpRequest = httpRequest + "\r\n" + soapEnvelope return(httpRequest) $tt  (/atts00002000 ReadResponsev*/attdh $tt  &/attsv00002000 ReadResult̀b.wѺw  ". </attsW00002000 Header 00003000 BodyW ~@bwޕwޕ namespacesoap:Z%1wYwY namespacesoap:</attsW00002000 HeaderZ~wޔwޔ8t(t(  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance Mtt(pdpd  (p(p(pppɰpɰptptpXpXpppppȄpȄpHpHp p pкppǔpǔpXpXpppppƤpƤphphp,p,pppŴpŴpxpxp" str = str + filename + "" new(tabletype, @tmpTable) tmpTable.Name = filename tmpTable.Size = filesize tmpTable.href = str if !defined(grooveInteropData.groove.filesLinks) new (tabletype, @grooveInteropData.groove.filesLinks) if !defined(grooveInteropData.groove.filesLinks[filename]) grooveInteropData.groove.filesLinks[filename] = tmpTable local nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort soapaction = grooveInteropData.soap.template.groove.actions.readFile method = grooveInteropData.soap.template.groove.methods.readFile httpRequest = "" httpResult = "" grooveFolder = user.radio.prefs.wwwfolder + "groove" saveFolder = user.radio.prefs.wwwfolder + "groove\\files" if !grooveInteropData.groove.ready or !grooveInteropData.initialized return(false) bundle // create folders and prefs.txt if not exists try if !file.exists( grooveFolder ) file.newFolder(grooveFolder) if !file.exists( saveFolder ) file.newFolder(saveFolder) if !file.exists(saveFolder + "\\prefs.txt") local str = "#flRender \"false\"" file.writeWholeFile( saveFolder + "\\prefs.txt", binary(str)) addToLinkTable(toolData,filename, filesize) bundle // send request, handle response try if defined(grooveInteropData.prefs.files.toolAccountURI) identityurl = grooveInteropData.prefs.files.toolAccountURI httpRequest = grooveInteropSuite.http.createRequest(nonce,method,toolData,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) else return(false) bundle // handle response try local addrResult addrData dat xmlData bundle // base64 decode response and save the file new(tabletype, @xmlData) if xml.compile(httpResult, @xmlData ) if xml.getPathAddress(@xmlData, "Envelope/Body/ReadFileResponse", @addrResult) dat = binary(base64.decode(xml.getValue(addrResult, "ReadFileResult"))) file.writeWholeFile(saveFolder + "\\" + filename, dat) return(true) else return(false) ?62S׺W startup6S׺_RS׺_R{w.S׺S  ". 9 everyHour!& everyMinutes everyNight{n n namespacesoap: 6$n n ) -Name Andre.Bourgeois/Veridian SystemsURI2grooveIdentity://gpun5q2y7wswicbthhssdfj28h6zn387@{$n n  NameAlexandre SchochURI2grooveIdentity://vcy58yiws25wiin598mg9ixgz3wVTArial $eʺ$f%9LANDwin UQ$g0g0  linetext Preferencespathtest.wsfUFg0g0$g$Dg$D  "NameWolfgang von StuermerURI9grooveIdentity://cbcm89t8rzj75d39md7frb3ufu22h22p4csa5zi@eaB*gI(gI(  /atts/pcB:gI#gI#$gIgI  okSelect this Tooltools/GWS/Groove/1.0/Discussion/grooveTelespace/gwqs37tbi3jwxtnrivyity4vujxycrq9wawgsz2/ToolContainer/etewptsv5gudprbhziatrkmadhghpi7tn6kvb6i.Discussion.Tool/DiscussionDataModelDelegatea5wui5@vnInI namespacesoap:00002Dvf Arial Fn7S[*LANDwin {title} {grooveInteropWebsite.style} <%radio.macros.editorsOnlyMenu ()%>
home | preferences | help
{bodytext} B*h7h7  + 3? IoBh6h6UQ$h5̺h5  linetext Preferencespathtest.wsfUh5̺h5B.Arial%Bi[i[   Data/GWS/Groov:,$Arial jj:.o2LANDwinon updateSubscriptions () 08/02/03; 07:36:17 by TK Updates all subscriptions to Groove events local soapaction = grooveInteropData.so,Arial ja`j9mVt8LANDwinon unsubscribe (id=nil) 08/02/03; 17:56:47 by TK Unsubscribe from all subscribed Groove events local soapaction = grooveInteropData.soap.template.groove.actions.deleteSubscription method = grooveInteropData.soap.template.groove.methods.deleteSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl = "" i, addr xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events try for i = 1 to sizeof(addr^) bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.deleteSubscription method = string.replaceAll(method, "##id##", addr^[i].ID) bundle // create the http-request identityurl = addr^[i].IdentityURL httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest, stream) delete(@grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) bundle // close the stream try tcp.closeStream(stream) unsubscribe() ,2 MS Sans Serif l#wLANDwinon buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) winon deleteDiscus\nZArial S4WD-jELANDwinLH84|Q|Q ) 3i r  H MX ]    Created2003-02-15T19:02:38.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID0e91363f2e795bdfd20fc9a7f74a216cdfd5172ecbf022e8cID0a68c292123756fed351c8f6ef828997659f361d0c185668cModified2003-02-15T19:02:38.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@NamezozozozPathDC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozozSize0TypeFolderUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/a68c292123756fed351c8f6ef828997659f361d0c185668c251pp namespacesoap:5ppVR$``  linetext Preferencespath index.wsfV``VR$``  linetext Preferencespath index.wsfV\``VR$`Z`Z  linetext Preferencespath index.wsfVG`Z`Ztp$aa  NamejohngURI2grooveIdentity://d6g3g6hntwa7smuqj563yw5dfsacbnff@t PW7!Nl urlhttp://127.0.0.1/grooveInterFY8csa>:8eeee onArial gg!1QLANDwinon refreshTools (addrSpace, addrToolsTable, stream=nil) 24/01/03; 17:13:40 by TK retreive usable tools local soapaction = grooveInteropData.soap.template.groove.actions.re:,$Arial jj:.o2LANDwinon updateSubscriptions () 08/02/03; 07:36:17 by TK Updates all subscriptions to Groove events local soapaction = grooveInteropData.soap.template.groove.actions.updateSubscription method = grooveInteropData.soap.template.groove.methods.updateSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl="", id, ttl=2 stream i xmlTable, addrBody, lst addr if not defined(grooveInteropData.groove.events) return(false) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events for i = 1 to sizeof(addr^) id = addr^[i].ID identiyurl = addr^[i].IdentityURL ttl = addr^[i].TimeToLive bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.updateSubscription method = string.replaceAll(method, "##id##", id) method = string.replaceAll(method, "##timetolive##", ttl) bundle // create the http-request, send to Groove and handle response try httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/UpdateResponse", @addrBody) bundle // close the stream try tcp.closeStream(stream) return(true) dialog.notify(updateSubscriptions ()) VR$clcl  linetext Preferencespath index.wsfVLclcl62S׺W startup6S׺_RGNS׺_R#$8ee C Q` o 00001000 URI2grooveIdentity://p45epwhfssqxrqdm9ie2kmmazb9agakz@ 00002000 Name Sabine Kamp00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/p45epwhfssqxrqdm9ie2kmmazb9agakz@00004000 AwarenessOffLineG[%2S׺W startup?  [S׺_RnR$`#`#  linetext Preferencespath index.wsf8aanD1ff namespacesoap:00002Dff $f#}f#}  NameJeroen Bekkers neFUOLH8h3u&"8p&%p&% C Qo ~ 00001000 URI2grooveIdentity://zekdstjvsuzh27y4csy776inz53bhswh@ 00002000 Nameashok25/CompuTact Software00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/zekdstjvsuzh27y4csy776inz53bhswh@00004000 AwarenessOffLineVR$_3d_3d  linetext Preferencespath index.wsfV38_3d_3d._Hʺ_H C P 00001000 URI2grooveIdentity://vcy58yiws25wiin598mg9ixgz3w47jc2@ 00002000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 00003000 URI2grooveIdentity://g8rvcmmwdqb7fnriyksk2sew5u8mic48@_E-_E-0,_E-_E. 1U08_E._E. B JR Wj p IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@IsLocaltrueNameV2.5 EvaluationToolsM/GWS/Groove/1.0/Tools/grooveTelespace/v84rwx4rzurq8tfxpvgyfj3j6mqn7nzg4nu4ysa_E>_E>$aa " &NameHarm van der Meer/Suite75URI2grooveIdentity://bxhzvqdj5et5nbtq34p37ui9c4zc6xjt@up 7coco  Name Cl7cocococoVR$]I]I  linetext Preferencespath index.wsfVb]I]I6Arial \CҺ\Di", "[[title]]") html.addPageToGlossary (pta) return (true) 62S׺W startup5P6S׺_R)ag7պg7 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@< everyMinute9 every>&n n  NameShaun Hyd>n n n n n n  & Arial Vrn |RLANDwinon install () 24/01/03; 14:01:27 by TK local startTime = clock.ticks() radio.log.add("grooveInterop", "Beginning installation.", startTime) bundle // set the blogURL if defined(user.radio.prefs.defaultCloudData.url) grooveInteropData.prefs.blogURL = user.radio.prefs.defaultCloudData.url if not defined(grooveInteropData.groove.subscribed) grooveInteropData.groove.subscribed = false bundle // set data for rootUpdates if !defined(user.rootUpdates.servers.grooveInterop) new (tabletype, @user.rootUpdates.servers.grooveInterop) user.rootUpdates.servers.grooveInterop.autobackup = true user.rootUpdates.servers.grooveInterop.dbname = "grooveInterop.root" user.rootUpdates.servers.grooveInterop.dialogs = true if !defined(user.rootUpdates.servers.grooveInterop.lastupdate) user.rootUpdates.servers.grooveInterop.lastupdate = "Thu, 30 Jan 2003 11:13:29 GMT" user.rootUpdates.servers.grooveInterop.method = "radio.getUpdate" user.rootUpdates.servers.grooveInterop.openLog = true user.rootUpdates.servers.grooveInterop.port = 5335 user.rootUpdates.servers.grooveInterop.serialNum = "0000000" user.rootUpdates.servers.grooveInterop.server = "suite75.net" user.rootUpdates.servers.grooveInterop.URL = "" if !grooveInteropData.initialized bundle // check for rootUpdates grooveInteropData.rootupdates.updating = true thread.callScript (@grooveInteropData.rootupdates.update,{}) grooveInteropData.initialized = true bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort bundle // add callbacks if defined(aggregatorData.callbacks) if !defined(aggregatorData.callbacks.postScan.postScanCallback) aggregatorData.callbacks.postScan.postScanCallback = @grooveInteropSuite.util.postScanCallback grooveInteropSuite.util.postScanCallback() if !defined(user.radio.callbacks.postItem) new (tabletype, @user.radio.callbacks.postItem) if !defined(user.radio.callbacks.postItem.grooveInterop) user.radio.callbacks.postItem.grooveInterop = @grooveInteropSuite.util.postItemCallback if defined(user.radio.callbacks.deleteItem) new (tabletype, @user.radio.callbacks.deleteItem) if !defined(user.radio.callbacks.deleteItem.grooveInterop) user.radio.callbacks.deleteItem.grooveInterop = @grooveInteropSuite.util.deleteItemCallback radio.log.add("grooveInterop", "Installation complete.", startTime) install() VR$bb  linetext Preferencespath index.wsfVbbwArial VV9LANDwinon startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false S׺_Rvd$Wm Wm $ )linetextSetup Wizard - Accountspathwizaccounts.wsfhg vpygArial Ip|bgbg'HArial "dxcQ36ELANDwinon listFiles () local addr i html = "
Groove Files:
" if !defined(grooveInteropData.groove.filesList) return(); for i = 1 to sizeof(addr^) html = html + addr^[i].href + "
" html = html + "
" return html dialog.notify(listFiles()) ate.groove.header) soapEnvelope = str "T;gg 00001000 URI2groov8Lg7Ժg7   * ,8 :F H1 {Arial iźk VQ#Arial  fͺi,MWLANDwinon refreshSpaces (addrIdentity, addrSpaces, stream=nil) 24/01/03; 17:13:40 by TK retreive spaces from Gro/>y Arial [nPuLANDwinon postScanCallback() 28/01/03; 13:55:51 by TK callback called after hourly scan of news-aggregator this function sends new stories to Groove see: aggregatorData.root local i addr cnt = 0 body = "", title="no title", storyname="" tmpTable entryid startTime = clock.ticks() identityurl = "" stream host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort if !defined(aggregatorData.stories) return(false) if grooveInteropData.prefs.newsTool == "" return(false) if defined(grooveInteropData.prefs.news.toolAccountURI) identityurl = grooveInteropData.prefs.news.toolAccountURI else return(false) if not grooveInteropData.prefs.news.enabled return(false) addr = @aggregatorData.stories bundle // open a stream stream = tcp.openStream(host, port) for i = 1 to sizeof(addr^) storyname = nameof(addr^[i]) body = addr^[i].storytext if defined(addr^[i].channeltitle) title = addr^[i].channeltitle title = title + " - " + grooveInteropSuite.util.getStoryTitle(body) if !defined(addr^[i].grooveInterop) entryid = grooveInteropSuite.soap.addDiscussionEntry(grooveInteropData.prefs.newsTool, identityurl, title, string.htmlToEmail(body), stream) if entryid cnt = cnt + 1 new(tabletype, @tmpTable) tmpTable.EntryID = entryid tmpTable.Data = grooveInteropData.prefs.newsTool addr^[i].grooveInterop = tmpTable try tcp.closeStream(stream) if cnt == 1 radio.log.add("grooveInterop", "Sent "+cnt+" new story to Groove.", startTime) if cnt > 1 radio.log.add("grooveInterop", "Sent "+cnt+" new stories to Groove.", startTime) postScanCallback() "*S׺_R  *Arial(2A$eeee ; ?Name2Michael HFFFF000000060001001777AA00000000006A0000000010017101804904218000006000600329200-181381302E032921FFFFF0106E00001000000370000000106E4084032921F30048E00i$]FFFF000000060001001777AA000000000065000000001001710190490021800000600060033C200-1F35F35033C21FFFFF010370000100000035000000010384084033C21F38048E0002933C3000020000003D0000000038,#title "Preferences" {grooveInteropSuite.gui.onPrefs()} 0004000000090000000203A00005000000090000000203A0000600000032000000010F310FFFF0C00000 50 000700000019000000010201E00008000000AF0000000140,Geneva40,10A0304E4400010400010000900000015000000020D11A30D11A3000A000000150000000233C21F33C21F000B00000005000000020000C000000150000000137383331EA0000F0000005200000000400 10 4,appn4,send4,84,&4,84,34,800130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAPĺh9 '8qSCwYwArial VV'9LANDwinon startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false S׺_R8cltclt  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceL>8cs cs C *28lArial FfjF[3LANDwin {title} {grooveInteropSuite.html.style()} {grooveInteropSuite.html.grooveDataAsXML()} {grooveInteropSuite.html.js()} home | preferences | help
{bodytext} 8bgbg  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instancebgbgbgbgFFFF000000060001001777AA0000000000670000000010017101-7FFE6FBE180000060006003283200-101A70328321FFFFF010400000100000039000000010412840328321F40B038E000273328330000020000041800000000412,

Save Preferences
Click this button to save preferences:

Refresh Groove Tools
Click this button to retrieve all available tools from Groove:
00040000000A000000020414000050000000A0000000204140000600000031000000010D30FFFF0A00000 20 000700000019000000010201800008000000B10000000140,Arial40,404E4400032104000801010000900000015000000020DC1E90DC1E9000A0000001700000002328321F328321F000B00000005000000020000C00000027000000021CEBB0B9040A18601850000F0000005200000000400 10 4,77A4,77A4,4,34,84,34,send00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAb\ɺb`;VR$_ɺ_  linetext Preferencespath index.wsfVH_ɺ_Arial Sގ\[dC yLANDwinon onStart () local html="" blog=0, news=0,files=0 grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) if defined(grooveInteropSuite.http.postvars.op) if grooveInteropSuite.http.postvars.op == "ok" blog = grooveInteropSuite.http.postvars.blog news = grooveInteropSuite.http.postvars.news files = grooveInteropSuite.http.postvars.files if defined(grooveInteropData.groove.tools[blog]) grooveInteropData.prefs.blogTool = grooveInteropData.groove.tools[blog].Data if defined(grooveInteropData.groove.tools[news]) grooveInteropData.prefs.newsTool = grooveInteropData.groove.tools[news].Data if defined(grooveInteropData.groove.tools[files]) grooveInteropData.prefs.filesTool = grooveInteropData.groove.tools[files].Data if grooveInteropSuite.http.postvars.op == "get groove tools" grooveInteropSuite.util.groove.refresh(@grooveInteropData.groove) webBrowser.openURL("http://127.0.0.1:5335/grooveInterop/") return("") html = html + grooveInteropSuite.html.createSelects() return(html) \ Arial !EWjqLANDwinon running () 24/01/03; 15:12:39 by TK Check whether Groove is running local soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path = "/GWS/Groove/1.0/Accounts/" ret = "" host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort if !nonce return(false) bundle // create the http-request grooveInteropData.groove.webservicesnonce = nonce httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction) try ret = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) if ret grooveInteropData.groove.ready = true return(true) else grooveInteropData.groove.ready = false return(false) pEpE na d!!׺!! httpContinue 7;9 dYgb\) mainscript dVR$\eк\e  linetext Preferencespath index.wsfV`\eѺ\e]W!Arial%,(8ee J Xn } 00001000 URI9grooveIdentity://6tywzm9yjv8rff8z4n5bi4etfmdnnvu96sztffr@ 00002000 NameKate Ehrlich/Viant00003000 VCardM/GWS/Groove/1.0/vCard/grooveIdentity/6tywzm9yjv8rff8z4n5bi4etfmdnnvu96sztffr@00004000 AwarenessOffLine]~z.XϺX  ". </atts900002000 HeaderRf 00003000 Body v~XNXιXNXN.XNXN  c gNameTim KnipSpacesG/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Ӏy$gIgI  Name4eah.h.X\CArialArial n/ĺn!F{LANDwinon refreshSpaceMembers (addr) 11/02/03; 18:59:41 by TK refreshes members of a space on findIdentityAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.identities) return(false) addr = @grooveInteropData.groove.temp.identities for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) on findSpaceAddr(uri) local i, addr if !defined(grooveInteropData.groove.temp.spaces) return(false) addr = @grooveInteropData.groove.temp.spaces for i = 1 to sizeof(addr^) if uri == addr^[i].URI return(@addr^[i]) return(false) local addrSpace addrIdentity if not defined(addr^.toolAccountURI) return(false) if defined(grooveInteropData.groove.temp) delete (@grooveInteropData.groove.temp) new (tabletype, @grooveInteropData.groove.temp) new( tabletype, @grooveInteropData.groove.temp.identities) new( tabletype, @grooveInteropData.groove.temp.spaces) if grooveInteropSuite.util.groove.refreshAccounts(@grooveInteropData.groove.temp.identities) addrIdentity = findIdentityAddr(addr^.toolAccountURI) if grooveInteropSuite.util.groove.refreshSpaces(addrIdentity, @grooveInteropData.groove.temp.spaces) addrSpace = findSpaceAddr(addr^.toolSpace) if defined(addr^.Members) delete(@addr^.Members) addr^.Members = addrSpace^.Members return(true) return(false) dialog.notify(refreshSpaceMembers (@grooveInteropData.prefs.blog)) t.!!ȺW\  !- 6 createRequestheaderpostvarsVArial 2oV΀gW\W\jWj_D_D _ m  ! 6l {  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/ue75fipr9tafqh2frwx66nber7kbzbdc6jn25k2 00002000 NameS75 CADViewer Beta testing00003000 Description00004000 Created2002-05-24T22:25:27.708+01:0000005000 Modified2002-05-24T22:25:27.718+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/ue75fipr9tafqh2frwx66nber7kbzbdc6jn25k200009000 MembersZ10103j0bi bi namespace0GbhߺbheK$SͺS  linetextHomepath index.wsfspathwizaccounts.e)@$ff  /atts8.gg C P 00001000 URI2grnBg }g }   "5 :Data/GWS/Groove/1.0/DiscHArial S׺`LHLANDwinThis script runs in its own thread. 24/01/03; 14:01:44 by TK loop //loop until the application quits 01/02/03; 00:39:36 by TK if !grooveInteropData.initialized grooveInteropSuite.install() bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort thread.sleepFor (10) //sleep for ten seconds &`Ritem #1VArial 2grooveIdentity://`cTspace/GIFfGIF89a!,D;VArial T$SS h mlinetext[["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.indexpath index.wsfVR$Y|Y|  linetext Preferencespath index.wsfVY|Y|VR$Y+Y+  linetext Preferencespath index.wsfVZY+Y+VR$YݺY  linetext Preferencespath index.wsfVYݺYVR$YɺY  linetext Preferencespath index.wsfV"YɺYArial XY2VLANDwinon createSelects () on createOption(name, value, checked="") local s="" s = string.replaceAll(s, "##name##", name) s = string.replaceAll(s, "##value##", value) s = string.replaceAll(s, "##checked##", checked) return(s) on isFile(addrTool) if addrTool^.Type != grooveInteropData.groove.allowedTools.files.type return(false) on isDiscussion(addrTool) if addrTool^.Type != grooveInteropData.groove.allowedTools.discussion.type return(false) local s = "
" addrTools i selected = "" if !defined(grooveInteropData.groove.tools) s = s + "\n" return(s) addr = @grooveInteropData.groove.tools bundle // create a select-combo for blogging s = s + "
\n" s = s + "" s = s + "
" return(s) dialog.notify(createSelects()) VR$YݺY  linetext Preferencespath index.wsfVXnYݺYR*Arial SގY LANDwinon onStart () local html="" grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) html = html + grooveInteropSuite.html.createSelects() return(html) RSJYźY type#urn:groove.net:platform.tools.FilesssionSSOYY type(urn:groove.net:platform.tools.DiscussionSUQ$YY   discussion$ofiles$UYźYYYI!|lpi  '3 :F LX co z    A S allowedTools$busycontacts[eventsfilesM filesLinks  identitiespostsŊreadyresponse spaces_ subscribedtemptestgtools7webservicesnonce'2dpiyr4svvbmeufubkcp9qbb64he59x88wzdmzawebservicesRegKeyGHKCU\Software\Groove Networks, Inc.\Groove\WebServices\WebServicesNonce\WebServices\WebServicesNonce} #Arial/$efef  #NameSuite75 Office [v 2.0]URI2grooveIdentity://p9emgz458k89fk5v85vwpfjg2wt73kag@I62S׺W startup6S׺_RS׺_R.0Bf#nf#n   $7 <Data/GWS/Groove/1.0/Discussion/grooveTelespace/v84rwx4rzurq8tfxpvgyfj3j6mqn7nzg4nu4ysa/ToolContainer/bbur6mic5r4z3tpwyizku2jbpj22p7tb4sehg9a.Discussion.Tool/DiscussionDataModelDelegate IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name3. Positive Points SpaceNameV2.5 EvaluationType(urn:groove.net:platform.tools.Discussion|!K| :D N_ imu#x #x  blogToolblogURL!http://radio.weblogs.com/0107414/ debugPort filesPath groove\files\ filesToolfldebuggrooveCurrentPort grooveHost 127.0.0.1 groovePortnewsTool radioHost 127.0.0.1 radioPortrefreshBlogTimeoutrefreshTimeBlogrefreshTimeFilesrefreshTimeNewsshowAccountNameVArial I22space/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEnginefldebuggrooveCurrentPort grooveHost 127.0.0.1 groovePortnews Z)newsTool/GWS/Groove/1.0/Discussion/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/7295gcrs5ejhz2ig7qt8mabyqyhbp5vzfse23xa.Discussion.Tool/DiscussionDataModelDelegate radioHost 127.0.0.1 radioPortrefreshBlogTimeoutrefreshTimeBlogrefreshTimeFilesrefreshTimeNewsshowAccountNameVArial I22I22VR$Y_Y_  linetext Preferencespath index.wsfV0Y_Y_VR$YκY  linetext Preferencespath index.wsfVNYκYFFFF000000060001001777AA00000000005B0000000010017101804904218000006000600343200-1034321FFFFF0104800001000000350000000104A4084034321F1B038E000333437000020000004F000000004A,function validate(obj) { window.status = obj.name + " >> " + obj.value; }0004000000090000000204C00005000000090000000204C0000600000031000000010D30FFFF0A00000 20 000700000019000000010201800008000000B10000000140,Arial40,404E44000321040008010100009000000150000000209C17D09C17D000A000000150000000234321F34321F000B00000005000000020000C00000013000000014A4221E42000F0000005200000000400 10 4,77A4,FFFF4,4,|4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAYsYJxVJ@([k[k @6[S[SVR$[ú[  linetext Preferencespath index.wsfV1[ú[VR$[ [  linetext Preferencespath index.wsfV[ [ H< Arial SWeLANDwinon getNonce () Try to read the GrooveNonce windows RegKey local key = grooveInteropData.groove.webservicesRegKey nonce nonce = winRegistry.read (key) if nonce grooveInteropData.groove.webservicesnonce = nonce else grooveInteropData.groove.webservicesnonce = "" return(nonce) dialog.notify(getNonce()) nteropData.soap.teDee xmlns)XTjgg U:,$Arial jj:.o2LANDwinon updateSubscriptions () 08/02/03; 07:36:17 by TK Updates all subscriptions to Groove events local soapaction = grooveInteropData.soc,Arial ja`j5motNLANDwinon unsubscribe (id=nil) 08/02/03; 17:56:47 by TK Unsubscribe from all subscribed Groove events local soapaction = grooveInteropData.soap.template.groove.actions.deleteSubscription method = grooveInteropData.soap.template.groove.methods.deleteSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl = "" i, addr xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events try for i = 1 to sizeof(addr^) bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.deleteSubscription method = string.replaceAll(method, "##id##", addr^[i].ID) bundle // create the http-request identityurl = addr^[i].IdentityURL httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest, stream) delete(@grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) bundle // close the stream try tcp.closeStream(stream) unsubscribe() V 2S׺W startup}( Preferencespath index.wsfVS׺_RD1e7e7 namespacesoap:00002Dpupu xmlns/htt/F17!Nl urlhttp://127.0.0.1/grooveInterop/I1Arial ILoq \h my ~ [["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.indexHelp 5Home` Preferences H&Retreiving a list of tools from Groove~Setup Wizard - AccountshVArial x*[ MS Sans Serif Eu7aL3*lLANDwinon pageFilter (pta) if typeOf (pta^.template) == outlineType or typeOf (pta^.template) == wpTextType table.assign (@pta^.template, string (pta^.template)) if typeOf (pta^.template) == stringType and not pta^.indirectTemplate pta^.template = string.replace (pta^.template, "", "[[title]]") html.addPageToGlossary (pta) return (true) ���������������������������������������V�������R���$���__�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������__����������������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������5header������Ipostvars������H��VArial����������������������������� ������������2��oV�������������������������΀�������e������W\W\��������>��������8���cluclu�������� ���� ���C ����Q���j ����y��� ���� 00001000 URI���2grooveIdentity://bd3cxcgm9kss5h5i9bwvuh4j8958apbi@ 00002000 Name���Malky Burns/Mysterian00003000 VCard���F/GWS/Groove/1.0/vCard/grooveIdentity/bd3cxcgm9kss5h5i9bwvuh4j8958apbi@00004000 Awareness���OffLinejwxtnrivyity4vujxycrq9wawgsz2��>����������t���.���!!Ⱥ\\�������� ������� ����!���- ����6 createRequest������N"header������KJpostvars������W��VArial����������������������������� ������������2��oV�������������������������΀�������������W\W\������������$���a������_E._E.�������� ���� 00001000 URI���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@��������������������� ��������������������'������������coco����������������������'����������������S׺_R�����������������������S׺_R�������������������������Arial����������������������������� ��������������S׺S���6����NLAND�������win������������This script runs every hour. ��������������[W���V��������������� ������� �������"���2�������������8���S}jN*�������� ���� ���& ����-���H ����O���j ����xaccounts���/GWS/Groove/1.0/Accounts/events���/GWS/Groove/1.0/Events/spaces���/GWS/Groove/1.0/Spaces/ subscriptions���/GWS/Groove/1.0/Subscriptions/�������������$���p|Vp|V�������� �������" ����&Name���Janine Battersby/IngensysURI���2grooveIdentity://icgs9mv2e2fn8bgi7hb82jijq4a4jm3y@��[�����������pXpX�ƀ�������NQ���$���p|Vp|V�������� ������� ����Name��� Jack GeraatsURI���2grooveIdentity://8pa9q6g6mm93ypsrvayt86yyd9necejt@���{��y�����NQ���$���p|Vp|V�������� ������� ����Name��� Ivor MarksURI���2grooveIdentity://ujvzvhswau346xd79sctbxtu6wymgn3p@�Ҁ�#������ě���$���p|Vp|V�������� ������� ����Name���Indro Celia/npt agURI���2grooveIdentity://ffjqyey4agrau5zbc848a7ygjxs94j97@�����������ě���$���p|Vp|V�������� �������0 ����4Name���'Heyward Drummond/Solutions by Design IIURI���2grooveIdentity://d8b8eyn6w53sey834sjg9gd38c2iniff@����A���)���������g2lg2l�������� ����00001000 Envelope������r����A�������Q������g2(g2(���������U�������Q���$���g1~g1~�������� ���� ��� ����linetext��� Preferencespath���test.wsf���U�������������g1~g1~���������V�������R���$���cdzcdz�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������cdzcdz���������Q������2������S׺W�������� ����startup�������~��� ����� ���Data�����Q����������������S׺_R���������Z���(��.���8���eeee�������� ���� ���C ����Q���{ ������� ���� 00001000 URI���2grooveIdentity://b4gwhu4zerpdsjq43qs9yin985xrb9gf@ 00002000 Name���&Masaru Tsujimoto-Netsenger Corporation00003000 VCard���F/GWS/Groove/1.0/vCard/grooveIdentity/b4gwhu4zerpdsjq43qs9yin985xrb9gf@00004000 Awareness���OffLine��[Help������|Home������V��Z���W������D���$���h@h@�������� ���� ������� identities������5mode����33������W��������������h@h@���������7������������hAhA�������� ����00001000 Envelope������7��?�����������otpotp�������� ���� namespace���soap:���U��?���8��� ���������o^ho^h�������� ����00001000 Envelope������8�������M������o^,o^,�����������������L���oXoX�������� ���� ���? ����J���l ����o��� ������� ���������� CallbackURI���/dpp://localhost/grooveInterop_BLOGEVENT_7688042 EventClass���urn:groove-net:DiscussionEventID���'2kmsj5na7b8rwgwypcyvw72xs4e9bybchiepica IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ sourceURI���/GWS/Groove/1.0/Discussion/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/q448mdmcmacfa6msjdqp8krdhixyehcc3tz3a82.Discussion.Tool/DiscussionDataModelDelegate TimeToLive�����k������R���$���YY�������� ���� ��� ����linetext��� Preferencespath��� index.wsfLAND�������wi���k�������X������YY���������V�������R���$���Y-Y-�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������K&������Y-Y-��������V�����M���j���_D_D�������� ���� ���_ ����m��� ������� ������� ������� ����� ���,��b ���q�� ��� 00001000 URI���N/GWS/Groove/1.0/Spaces/grooveTelespace/6h7ztkw9trqas578g3j2ytghjqwp279yprfcy9a 00002000 Name���__TechieIndex.t900003000 Description����00004000 Created���2002-02-25T12:48:57.246+01:0000005000 Modified���2002-06-09T20:01:15.960+01:0000006000 Local���false00007000 IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 Tools���M/GWS/Groove/1.0/Tools/grooveTelespace/6h7ztkw9trqas578g3j2ytghjqwp279yprfcy9a00009000 Members������H�������V���V�������R���$���\Sκ\S�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������)Q������\Sκ\S������������������� ����Arial����������������������������� ��������������S׺S��� ����QLAND�������win������������dialog.notify ("Hello, World!") �����tartup������\����������������w����Arial����������������������������� ��������������VV��� ����<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W���������0�����'���`���aa�������� ���� ���G ����T��� ������ ���!��% ���6��l ���{�� ����� ��� 00001000 ID���7ixek35pmsvd4u8cndwffwyvwz87minkarevhssi.Discussion.Tool 00002000 URI���/GWS/Groove/1.0/Tools/grooveTelespace/6qmnbbdajnejtfe6gc6j4wv95jficp4wvncxnq2/ToolContainer/ixek35pmsvd4u8cndwffwyvwz87minkarevhssi.Discussion.Tool 00003000 Name���Incoming RSSfeeds00004000 Cateogory����00005000 Creator���2grooveIdentity://ekwbwvjkwrxu23sncqm85v9i78gwjvib@00006000 Owner���DRootDisplay.Tool_u6jpcc5jvvxshucmiif9pabbttb4xc23rnvwm4s.Custom.Tool 00007000 Type���(urn:groove.net:platform.tools.Discussion 00008000 Data���/GWS/Groove/1.0/Discussion/grooveTelespace/6qmnbbdajnejtfe6gc6j4wv95jficp4wvncxnq2/ToolContainer/ixek35pmsvd4u8cndwffwyvwz87minkarevhssi.Discussion.Tool/DiscussionDataModelDelegate��4��0����������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������eheader������b-postvars������b ��VArial����������������������������� ������������2��oV�������������������������΀�������v������W\W\���������������a������_E._E.�������� ���� 00001000 URI���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@z�������� �������F ����V������� F������N������Arial��������������������(�� ��������� � ��Arial����������������������������� ������������Vrdn�������RLAND�������win������������on install () 24/01/03; 14:01:27 by TK local startTime = clock.ticks() radio.log.add("grooveInterop", "Beginning installation.", startTime) bundle // set the blogURL if defined(user.radio.prefs.defaultCloudData.url) grooveInteropData.prefs.blogURL = user.radio.prefs.defaultCloudData.url bundle // set data for rootUpdates if !defined(user.rootUpdates.servers.grooveInterop) new (tabletype, @user.rootUpdates.servers.grooveInterop) user.rootUpdates.servers.grooveInterop.autobackup = true user.rootUpdates.servers.grooveInterop.dbname = "grooveInterop.root" user.rootUpdates.servers.grooveInterop.dialogs = true if !defined(user.rootUpdates.servers.grooveInterop.lastupdate) user.rootUpdates.servers.grooveInterop.lastupdate = "Thu, 30 Jan 2003 11:13:29 GMT" user.rootUpdates.servers.grooveInterop.method = "radio.getUpdate" user.rootUpdates.servers.grooveInterop.openLog = true user.rootUpdates.servers.grooveInterop.port = 5335 user.rootUpdates.servers.grooveInterop.serialNum = "0000000" user.rootUpdates.servers.grooveInterop.server = "suite75.net" user.rootUpdates.servers.grooveInterop.URL = "" if !grooveInteropData.initialized bundle // check for rootUpdates grooveInteropData.rootupdates.updating = true thread.callScript (@grooveInteropData.rootupdates.update,{}) grooveInteropData.initialized = true bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort bundle // add callbacks if !defined(aggregatorData.callbacks.postScan.postScanCallback) aggregatorData.callbacks.postScan.postScanCallback = @grooveInteropSuite.util.postScanCallback grooveInteropSuite.util.postScanCallback() if !defined(user.radio.callbacks.postItem) new (tabletype, @user.radio.callbacks.postItem) if !defined(user.radio.callbacks.postItem.grooveInterop) user.radio.callbacks.postItem.grooveInterop = @grooveInteropSuite.util.postItemCallback if defined(user.radio.callbacks.deleteItem) new (tabletype, @user.radio.callbacks.deleteItem) if !defined(user.radio.callbacks.deleteItem.grooveInterop) user.radio.callbacks.deleteItem.grooveInterop = @grooveInteropSuite.util.deleteItemCallback radio.log.add("grooveInterop", "Installation complete.", startTime) install() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� F���V�������R���$���[y[y�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������n������[y[y���������V�������R���$���[?[?�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������[?[?���������V�������R���$���Y)Y)�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������p������Y)Y)���������V�������R���$���YպY�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������p������YպY���������V�������R���$���YmYm�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������0Z������YmYm�������������z�� �.��Arial����������������������������� ������������+\B������~LAND�������win������������on addDiscussionEntry (tooldata, identityurl, subject="not set", body="not set", stream=nil) 25/01/03; 23:10:42 by TK add an entry to a Groove Discussion local i httpRequest = "" httpResult = "" soapmessage = string(grooveInteropData.soap.template.envelope) soapheader = string(grooveInteropData.soap.template.groove.header) method = grooveInteropData.soap.template.groove.methods.createDiscussionEntry soapaction = grooveInteropData.soap.template.groove.actions.createDiscussionEntry addrNewEntry = @grooveInteropData.soap.util.DiscussionEntry nonce = grooveInteropData.groove.webservicesnonce host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort xmlData, addrBody needCloseStream = false strEntry = "" entryid = false if !nonce or !grooveInteropData.groove.ready or grooveInteropData.groove.busy return(false) bundle // build SOAP message addrNewEntry^["ParentID"] = "-1" addrNewEntry^["Unread"] = "true" addrNewEntry^["Subject"] = subject addrNewEntry^["Body"] = xml.entityEncode(body) strEntry = xml.decompile(addrNewEntry) strEntry = string.replaceAll(strEntry, "<?xml version=\"1.0\"?>", "") strEntry= "<DiscussionEntry>" + strEntry + "</DiscussionEntry>" method = string.replaceAll(method, "##entry##", strEntry) bundle // open a stream, if needed if stream == nil stream = tcp.openStream(host, port) needCloseStream = true bundle // create HTTP header, append SOAP message and send it to Groove... httpRequest = grooveInteropSuite.http.createRequest(nonce,method,tooldata,soapaction) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) bundle // handle response new(tabletype, @xmlData) if xml.compile(httpResult, @xmlData) check for a fault if xml.getPathAddress(@xmlData, "Envelope/Body/Fault", @addrBody) local faultcode = xml.getValue(addrBody, "faultcode") faultstring = xml.getValue(addrBody, "faultstring") if grooveInteropData.prefs.fldebug dialog.notify("SOAP Fault:\n\ncode: " + faultcode + "\ndescription: " + faultstring) if xml.getPathAddress(@xmlData, "Envelope/Body/CreateResponse", @addrBody) try entryid = xml.getValue(addrBody, "CreateResult") if needCloseStream tcp.closeStream(stream) return(entryid) grooveInteropSuite.soap.clearDiscussion(grooveInteropData.prefs.newsTool) addDiscussionEntry(grooveInteropData.prefs.newsTool,"Aiaiai... rich text. Can it be done?","<OK> http://www") ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������F����G���Arial����������������������������� ��������������$cͺ$e���G����<LAND�������win������������on style () local s = string(grooveInteropWebsite.style) return(s) ��������������������le>") return (true) ������"���������8���p&%p&%�������� ���� ���C ����Q���k ����z��� ���� 00001000 URI���2grooveIdentity://xbw98dxnk9gd6km5g9v24wz92itw9j9j@ 00002000 Name���Jeroen Bekkers at POPG00003000 VCard���F/GWS/Groove/1.0/vCard/grooveIdentity/xbw98dxnk9gd6km5g9v24wz92itw9j9j@000040�������FFFF000000060001001777AA000000000065000000001001710190490021800000600060033C200-1F35F35033C21FFFFF0103700001000000330000000103884033C21F38048E0002933C3000020000003D00000000�38,#title "Preferences" {grooveInteropSuite.gui.onPrefs()} 0004000000090000000203A00005000000090000000203A0000600000032000000010F310FFFF0C00000 50 000700000019000000010201E00008000000AF00000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������10A0304E4400010400010000900000015000000020CE1A00CE1A0000A000000150000000233C21F33C21F000B00000005000000020000C000000150000000137383331EA0000F0000005200000000400 10 �4,appn�4,send�4,8�4,&����4,8�4,3�4,800130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��������������.��'��"��������������FFFF0FFFF0FFFE000000060001001777AA�Pĺh9 ���(���������������������������������������8������������nP������A�������������������������������������������������������/������+���.���c5c5�������� ������� ������� ����"Name���iffr.gifSize���3063URI���/GWS/Groove/1.0/Files/grooveTelespace/gwqs37tbi3jwxtnrivyity4vujxycrq9wawgsz2/ToolContainer/hmewi7hetrfeqq8giqjybfr9e5qej4hdv7qcefi.Files.Tool/DocumentShareEngine/bd3864da7d291f27b2d5ccfdfb34e629c77f0ee76dd34364��/����������������c4޺c4�����������������������c34c34�����������������������c2c2����������/������������aa�������� ���� ��� ����li���/����������������S׺_R�����������������������S׺_R�����������������������a䤺a����������9�������5������\Y\Y�������� ����op���get groove tools���9�������:B������\Y\Z�������������������w����Arial����������������������������� ��������������VV��� ����<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W�������������������$���WzWz�������� �������M ����]00001000 Member���9grooveIdentity://qwm4nbvyfw6w9dytdtstdjtke3gkzq5svims9t3@00002000 Member���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@a���������H��������Arial������������������&��v������r���j���gg�������� ���� ���_ ����m��� ������� ������� �����$ ���3��< ���Q�� ����� ��� 00001000 URI���N/GWS/Groove/1.0/Spaces/grooveTelespace/rhj3q267ujfxhvgye5cxsrsu8s6netjdvrnf4vs 00002000 Name���5Groove - Radio Let's continue the conversation......00003000 Description����00004000 Created���2002-06-05T16:45:45.477+01:0000005000 Modified���2002-06-05T16:47:39.060+01:0000006000 Local���false00007000 IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 Tools���M/GWS/Groove/1.0/Tools/grooveTelespace/rhj3q267ujfxhvgye5cxsrsu8s6netjdvrnf4vs00009000 Members������a0��������������w����Arial����������������������������� ��������������VV��� ����<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W�����������������������S׺V���������6���������������Arial����������������������������� ��������������S׺Wl������t/LAND�������win������������This script runs every minute. if grooveInteropData.initialized and !grooveInteropData.rootupdates.updating thread.callScript (@grooveInteropSuite.util.groove.running,{}) �����������������6���H�������D���$���W|$�������� ���������update������̴updating���H����������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������+header������1postvars������v��VArial����������������������������� ������������2��oV�������������������������΀�������������W\W\��������y��� ������\���Arial����������������������������� ������������!EWj���.���3�=LAND�������win������������on running () 24/01/03; 15:12:39 by TK Check whether Groove is running local soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path = "/GWS/Groove/1.0/Accounts/" ret = "" host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort if !nonce return(false) bundle // create the http-request grooveInteropData.groove.webservicesnonce = nonce httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction) try ret = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) if ret grooveInteropData.groove.ready = true return(true) else grooveInteropData.groove.ready = false return(false) ����������������������������������������������������������������������������������������������������������������������������������Header = ��y���<���$���������S׺W�������� ������� ����client���������<�������������S׺V����������������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������1header������postvars������e��VArial����������������������������� ������������2��oV�������������������������΀�������rz������W\W\�����������%���������Arial����������������������������� ��������������Vr\W���A����4LAND�������win������������on install () 24/01/03; 14:01:27 by TK local startTime = clock.ticks() radio.log.add("grooveInterop", "Beginning installation.", startTime) if !grooveInteropData.initialized bundle // check for rootUpdates grooveInteropData.rootupdates.updating = true thread.callScript (@grooveInteropData.rootupdates.update,{}) grooveInteropData.initialized = true bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort bundle // add news-callback if !defined(aggregatorData.callbacks.postScan.postScanCallback) aggregatorData.callbacks.postScan.postScanCallback = @grooveInteropSuite.util.postScanCallback grooveInteropSuite.util.postScanCallback() bundle // add tables radio.log.add("grooveInterop", "Installation complete.", startTime) install() �������������������������������������������������������������������������������������������������������������������:groove.net:platform.tools.Discussion�����{���%���R���$���[[�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���������������� �������m���i���������{�������������[[��������<���C����l��� ��Arial����������������������������� ������������Sގ\TW���1�� LAND�������win������������on onStart () local html="" blog=0, news=0,files=0 grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) if defined(grooveInteropSuite.http.postvars.op) blog = grooveInteropSuite.http.postvars.blog news = grooveInteropSuite.http.postvars.news files = grooveInteropSuite.http.postvars.files if defined(grooveInteropData.groove.tools[blog]) grooveInteropData.prefs.blogTool = grooveInteropData.groove.tools[blog].Data if defined(grooveInteropData.groove.tools[news]) grooveInteropData.prefs.newsTool = grooveInteropData.groove.tools[news].Data if defined(grooveInteropData.groove.tools[files]) grooveInteropData.prefs.filesTool = grooveInteropData.groove.tools[files].Data html = html + grooveInteropSuite.html.createSelects() return(html) ���������������������������������������������������������������������������������������������������������������������������������������������������������<���V�������R���$���[`[`�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������X������[`[`���������V�������R���$���[[�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������[[����������������<������Arial����������������������������� ������������Sގ[ ��� ��� LAND�������win������������on onStart () local html="" grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) if defined(grooveInteropSuite.http.postvars.OK) else html = html + grooveInteropSuite.html.createSelects() return(html) �������������������������������������������������������V�������R���$���[ͺ[�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������[ͺ[����������������0������Arial����������������������������� ������������Sގ[����� LAND�������win������������on onStart () local html="" grooveInteropSuite.util.buildPostArgs(@grooveInteropSuite.http.postvars) if defined(grooveInteropSuite.http.postvars.O html = html + grooveInteropSuite.html.createSelects() return(html) ���������������������������������������������V�������R���$���[[�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������[[�����������������`���Arial����������������������������� ��������������Y[������CLAND�������win������������on js () on prefsAsJS() local s = "" addr i blogURL = grooveInteropData.prefs.blogTool newsURL = grooveInteropData.prefs.newsTool filesURL = grooveInteropData.prefs.filesTool blog=0, news=0, files=0 if !defined(grooveInteropData.groove.tools) return("var tools = new Array(0,0,0);\n\n") addr = @grooveInteropData.groove.tools for i = 1 to sizeof(addr^) if blogURL == addr^.[i].Data blog = nameof(addr^.[i]) if newsURL == addr^.[i].Data news = nameof(addr^.[i]) if filesURL == addr^.[i].Data files = nameof(addr^.[i]) s = "var tools = new Array("+blog+","+news+","+files+");\n\n" return(s) local scr = "<script language=\"javascript\" type=\"text/javascript\">\n<!--\n" scr = scr + prefsAsJS() scr = scr + string(grooveInteropSuite.html.scripts.validate) scr =scr + "//-->\n</script>\n" return(scr) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������V�������R���$���[2[2�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������6*������[2[2������������������`���Arial����������������������������� ��������������Y[ ������CLAND�������win������������on js () on prefsAsJS() local s = "" addr i blogURL = grooveInteropData.prefs.blogTool newsURL = grooveInteropData.prefs.newsTool filesURL = grooveInteropData.prefs.filesTool blog=0, news=0, files=0 if !defined(grooveInteropData.groove.tools) return("var tools = new Array(0,0,0);\n\n") addr = @grooveInteropData.groove.tools for i = 1 to sizeof(addr^) if blogURL == addr^.[i].Data blog = nameof(addr^.[i]) if newsURL == addr^.[i].Data news = nameof(addr^.[i]) if filesURL == addr^.[i].Data files = nameof(addr^.[i]) s = "var tools = new Array("+blog+","+news+","+files+");\n\n" return(s) local scr = "<script language=\"javascript\" type=\"text/javascript\">\n<!--\n" scr = scr + prefsAsJS() scr = scr + string(grooveInteropSuite.html.scripts.validate) scr =scr + "//-->\n</script>\n" return(scr) ��������������������������������������������������������������������������������������������������������������������������������������������������V�������R���$���[ [ �������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������h������[ [ ���������V�������R���$���[ [ �������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������[ [ �����������FFFF000000060001001777AA00000000005C00000000100171018049042180000060006003F3200-103F321FFFFF0101040000100000037000000010107408403F321F107038E000E33F37000020000010D00000000�107,function validate(obj) { switch(obj.name) { case "blog": if( parseInt(document.all.news.value) == obj.value) alert("d"); break; case "news": break; } window.status = obj.name + " >> " + obj.value; } function init() { document.all.news.value = 1; }00040000000A000000020109000050000000A0000000201090000600000031000000010D30FFFF0A00000 20 000700000019000000010201800008000000B100000001�40,Arial�����������������������������������������������������������40,����������������������������������������������������������������404E44000321040008010100009000000170000000201181E901181E9000A00000015000000023F321F3F321F000B00000005000000020000C0000001600000001104DABC1CA40000F0000005200000000400 10 �4,77A�4,FFFF�4,�����4,�|��4,���4,�����4,����00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��������������.��'��"��������������FFFF0FFFF0FFFE000000060001001777AA�Ys[ ��� ������������������������������������������������Q�y����������������������������������������������������������������V�������R���$���[ Ⱥ[ �������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������o}������[ Ⱥ[ �������������������w����Arial����������������������������� ��������������VV��� ����<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ������������������������g�����%w������S׺_R�������� ��������$���7�������3������cqںcs`�������� ���� iffr.gif������W��g���t�������p���$���c[c[�������� ������� ����Name���Tim KURI���2grooveIdentity://93knjnckbmqtvjrgiteb5egg6hxg5kma@���t��������o������c[mc[m���������i������a������cgcg�������� ���� 00001000 URI���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@b�����i��e�����LO���$���eEeE�������� ���� ��� ����linetext��� Preferencespath��� index.wsfontacts/38xb39@��e��� ������������ceҺce�������� ������ ����������������ceҺce�����������������������ceҺce�����������������������ceҺce�����������������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������3header������[postvars������7��VArial����������������������������� ������������2��oV�������������������������΀�������8������W\W\���������c������Z���$���WzWz�������� ������� ����&/atts������#00002000 ReadResult�������������c��W����� !������k;k;�������� ���� namespace���soap:����|/pcdata����adResult�������W���5�������1������j oj o�������� ���� namespace���soap:���5����������������j aj a�����������������������j Bj"����������4�������0������j Bj a�������� ����Tim K���������4�����FFFF000000060001001777AA000000000065000000001001710190490021800000600060033C200-1F35F35033C21FFFFF0103700001000000330000000103884033C21F38048E0002933C3000020000003D00000000�38,#title "Preferences" {grooveInteropSuite.gui.onPrefs()} 0004000000090000000203A00005000000090000000203A0000600000032000000010F310FFFF0C00000 50 000700000019000000010201E00008000000AF00000001�40,Geneva����������������������������������������������������������40,����������������������������������������������������������������10A0304E4400010400010000900000015000000020CE1A00CE1A0000A000000150000000233C21F33C21F000B00000005000000020000C000000150000000137383331EA0000F0000005200000000400 10 �4,appn�4,send�4,8�4,&����4,8�4,3�4,800130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��������������.��'��"��������������FFFF0FFFF0FFFE000000060001001777AA�Pĺh9 ���(���������������������������������������8������������nP������A���������������������������������������������������������������������R�������N���$���TurTur�������� ���� ��� ����fileMenu������Wuser������3���R����������������TurTur����������7�������3������YgYs�������� ���� validate������R���7���6�������2������S׺W�������� ����startup������6h���6����������������S׺_R����������������&����������`R��������������item #1��VArial����������������������������� ������������������������������������������������7{ everyNigh����U����� Q���$���p|Vp|V�������� ������� ����Name���Thees PeereboomURI���2grooveIdentity://i7tutag6if4kavkb2vgbtq2gbutxtekr@spon�������������L���pLźpL������������ "~���$���p|Vp|V�������� ������� ���� Name���Terri Martel/GrooveURI���2grooveIdentity://dwgp5gjdeb29kth322pvehsue2sm43fm@���������� "~���$���p|Vp|V�������� ������� ����"Name���suzuki.yasuhiro/RuecaURI���2grooveIdentity://7gjd4eedqu5x78q7q26xg5wzin2ea4sc@��������������$���p|Vp|V�������� ������� ����#Name���Suite75 Office [v 2.0]URI���2grooveIdentity://p9emgz458k89fk5v85vwpfjg2wt73kag@�U���U�������Q���$���gDhgDh�������� ���� ��� ����linetext��� Preferencespath���test.wsf���U�������Z3������gDhgDh��������,��������8���p&%p&%�������� ���� ���C ����Q���^ ����m��� ���� 00001000 URI���2grooveIdentity://wbc3x87dmjc99tbucznv2x8zy84vmc73@ 00002000 Name��� ScottLare00003000 VCard���F/GWS/Groove/1.0/vCard/grooveIdentity/wbc3x87dmjc99tbucznv2x8zy84vmc73@00004000 Awareness���Online�������win����������,�g�����Z������pp�������� ������� �������R ����_��6 ���<���[�������W������pupu��������b������͡� ���!����Arial������������������������������j���`Ǜo31�������� ���� ��� �������* ����4���@ ����H���T ����[���g ����q���} ������� ������� ����#filters������͡#ftpSite������p* #glossary������C#images�������}`#prefs������� #template������� ˕#tools������index������style�������ʑ��&�������T������Arial����������������������������� �������������$eʺ$f���%����9LAND�������win������������<style> <!-- BODY{ background: #B2E57F; font-family:tahoma,verdana,arial; font-size:10pt; } TABLE,TD{ background: #B2E57F; font-family:tahoma,verdana,arial; font-size:10pt; } //--> </style> �����������������������������������������������������������������������g���U�������Q���$���g;g;�������� ���� ��� ����linetext��� Preferencespath���test.wsf���U�������F������g;g;�����������$������k� ��Arial����������������������������� ����� � ������Vbi���<���w�HLAND�������win������������on update () 24/01/03; 14:01:21 by TK local startTime = clock.ticks() ctParts = 0 bundle // set data for rootUpdates if !defined(user.rootUpdates.servers.grooveInterop) new (tabletype, @user.rootUpdates.servers.grooveInterop) user.rootUpdates.servers.grooveInterop.autobackup = true user.rootUpdates.servers.grooveInterop.dbname = "grooveInterop.root" user.rootUpdates.servers.grooveInterop.dialogs = true if !defined(user.rootUpdates.servers.grooveInterop.lastupdate) user.rootUpdates.servers.grooveInterop.lastupdate = "Thu, 30 Jan 2003 11:13:29 GMT" user.rootUpdates.servers.grooveInterop.method = "radio.getUpdate" user.rootUpdates.servers.grooveInterop.openLog = true user.rootUpdates.servers.grooveInterop.port = 5335 user.rootUpdates.servers.grooveInterop.serialNum = "0000000" user.rootUpdates.servers.grooveInterop.server = "suite75.net" user.rootUpdates.servers.grooveInterop.URL = "" radio.log.add("grooveInterop", "Checking \""+user.rootUpdates.servers.grooveInterop.server+"\" for updates.", startTime) try rootUpdates.update(@grooveInteropSuite,true,@ctParts) if ctParts > 0 radio.log.add("grooveInterop", "Found "+ctParts+" new part(s) on \""+user.rootUpdates.servers.grooveInterop.server+"\".", startTime) else radio.log.add("grooveInterop", "No new part(s) found on \""+user.rootUpdates.servers.grooveInterop.server+"\".", startTime) get the new version# if defined(grooveInteropSuite.version) grooveInteropInfo.version = grooveInteropSuite.version delete(@grooveInteropSuite.version) grooveInteropData.rootupdates.updating = false return(ctParts) dialog.notify(update()) ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������:���"���������S׺W�������� ������� �������c ����gNam���:� ��������$���gg�������� ���� ���C ����P 00001��2���������.����I�� {������������Arial����������������������������� �������������iźk ������#�cLAND�������win������������on subscribe (identityurl, eventclass, sourceURI, callbackURI, ttl) 08/02/03; 07:36:17 by TK subscribe to a Groove-event local addrSave soapaction = grooveInteropData.soap.template.groove.actions.createSubscription method = grooveInteropData.soap.template.groove.methods.createSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort tmpTable xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) addrSave = @grooveInteropData.groove.events bundle // create the input-message method = string.replaceAll(method, "##eventclass##", eventclass) method = string.replaceAll(method, "##sourceuri##", sourceURI) method = string.replaceAll(method, "##callbackuri##", callbackURI) method = string.replaceAll(method, "##timetolive##", ttl) try bundle // create the http-request, send it and handle response httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/CreateResponse", @addrBody) new (tabletype, @tmpTable) tmpTable.ID = xml.getValue(addrBody, "CreateResult") tmpTable.IdentityURL = identityurl tmpTable.sourceURI = sourceURI tmpTable.CallbackURI = callbackURI tmpTable.EventClass = eventclass tmpTable.TimeToLive = ttl addrSave^.[sizeof(addrSave^)] = tmpTable return(tmpTable.CallbackURI) return(false) dialog.notify(subscribe("grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@","urn:groove-net:DiscussionEvent", grooveInteropData.prefs.blogTool, "dpp://localhost/BLOGEVENTc"+clock.ticks(), 2, @grooveInteropData.groove.events)) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �������������w����Arial����������������������������� ��������������VV��� ����<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W��������0��������$���_E._E.�������� ���� ���C ����P 00001000 URI���2groov��B���e������N� ��������$���aa���o����������H�����Arial����������������������������� ������������S׺`���K���������Q������M���j���gg�������� ���� ���_ ����m��� ������� ������� ������� ����� ���,��b ���q�� ��� 00001000 URI���N/GWS/Groove/1.0/Spaces/grooveTelespace/2js6uuc6zfzgf2ug3nqrm6ringwdp7xeyrisxj2 00002000 Name���RadioBlogger Tst00003000 Description����00004000 Created���2002-08-02T17:20:02.631+01:0000005000 Modified���2002-08-02T17:20:02.781+01:0000006000 Local���false00007000 IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 Tools���M/GWS/Groove/1.0/Tools/grooveTelespace/2js6uuc6zfzgf2ug3nqrm6ringwdp7xeyrisxj200009000 Members������2�0�������������w����Arial����������������������������� ��������������VV��� ����?LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W����������l������d������WzWz�������� ����00001000 Member���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@�����l����������$���tt�������� ������!���J�������F���$���tt�������� ������� ����/atts������ I:/pcdata������w�D����� J���$���tJtL�������� ������� ����0������1���������H������ J���L���tLtL�������� ���� ���@ ����K���h ����k��� ������� ���������� CallbackURI���0dpp://localhost/grooveInterop_FILESEVENT_5146517 Eve�o��L������H������|_|_�������� �������) ����3���i ����r��� ������� ������ �����H ���M��] ���b�� ����� ����� ����� ���Created���2002-08-15T09:37:46.000+01:00 CreatedBy���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@FolderID���0a68c292123756fed351c8f6ef828997659f361d0c185668cID���0ead6671de65853bc141c54a1a7c9fcf4c6c8cee8556203cdModified���2002-08-15T09:37:46.000+01:00 ModifiedBy���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name��� MVC-003F.JPGPath���QC:\Program Files\Radio UserLand\www\groove\files\ahahah\haha\zozozoz\MVC-003F.JPGSize���55781Type���FileUnread���trueURI���/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/ead6671de65853bc141c54a1a7c9fcf4c6c8cee8556203cd��������������w����Arial����������������������������� ��������������VV��� ����<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W��������0�����=H���$���_E._E.�������� ���� ���J ����W 00001000 URI���9��=���B������L���t���`Ǜcpt�������� ���� ��� �������* ����4���@ ����H���T ����[���g ����q���} ������� ������q������m���j���gg�������� ���� ���_ ����m��� ������� ������� ������ ���.��7 ���L�� ����� ��� 00001000 URI���N/GWS/Groove/1.0/Spaces/grooveTelespace/khuvjzbfk2btgfu5rfygeixse9zbskgg3xre7bi 00002000 Name���0Chat with gj@ctarget.com, Jeroen Bekkers/Suite7500003000 Description����00004000 Created���2002-05-16T17:51:05.308+01:0000005000 Modified���2002-05-16T18:26:06.546+01:0000006000 Local���false00007000 IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 Tools���M/GWS/Groove/1.0/Tools/grooveTelespace/khuvjzbfk2btgfu5rfygeixse9zbskgg3xre7bi00009000 Members������m�0�������������w����Arial����������������������������� ��������������VV��� ����?LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W����������g������a������_E._E.�������� ���� 00001000 URI���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@� ���g������+���$���h(h(�������� ������!�����������8���p&%p&%�������� ���� ���C ����Q���h ����w��� ���� 00001000 URI���2grooveIdentity://dwgp5gjdeb29kth322pvehsue2sm43fm@ 00002000 Name���Terri Martel/Groove00003000 VCard���F/GWS/Groove/1.0/vCard/grooveIdentity/dwgp5gjdeb29kth322pvehsue2sm43fm@00004000 Awareness���Online�K��:������6���8���p&%p&%�������� ���� ���J ����X���| ������� ���� 00001000 URI���9grooveIdentity://e4i894t48bvaatqebka9yticei9pb3k2u9azk4b@ 00002000 Name��� Art Fritzson/Booz Allen Hamilton00003000 VCard���M/GWS/Groove/1.0/vCard/grooveIdentity/e4i894t48bvaatqebka9yticei9pb3k2u9azk4b@00004000 Awareness���OffLine�����������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������4header������\postvars������8��VArial����������������������������� ������������2��oV�������������������������΀�������[������W\W\������������������� ����Arial����������������������������� ��������������S׺S�������QLAND�������win������������dialog.notify ("Hello, World!") �����LAND�������������t���.���!!ȺW\�������� ������� ����!���- ����6 createRequest������header������ postvars��������VArial����������������������������� ������������2��oV�������������������������΀�������7������W\W\��������������� ���}���Arial����������������������������� ��������������S׺S�������HLAND�������win������������This script returns a string which appears in the Status Center on the Radio UserLand home page. return ("I'm a cool Tool!") ����������HTTP/1.1 header, append SO��������)2���$���SW�������� ������� ����client��3� ��������A�ˀ��I� ,�����W>���B���f#nf#n�������� ������� ������� ����� �����2 ���7Data���/GWS/Groove/1.0/Discussion/grooveTelespace/v84rwx4rzurq8tfxpvgyfj3j6mqn7nzg4nu4ysa/ToolContainer/ehcrqes7pjcmpzv36d5s962bzifrn28z4ppikua.Discussion.Tool/DiscussionDataModelDelegate IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name��� 2. Discussion SpaceName���V2.5 EvaluationType���(urn:groove.net:platform.tools.Discussion���s�����W>���B���f#mf#m�������� ������� ������� ������� ����� ���Data���/GWS/Groove/1.0/Files/grooveTelespace/3g������FF��u�����"b>��y� ��Arial����������������������������� ������������[n������P�uLAND�������win������������on postScanCallback() 28/01/03; 13:55:51 by TK callback called after hourly scan of news-aggregator this function sends new stories to Groove see: aggregatorData.root local i addr cnt = 0 body = "", title="no title", storyname="" tmpTable entryid startTime = clock.ticks() identityurl = "" stream host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.grooveCurrentPort if !defined(aggregatorData.stories) return(false) if grooveInteropData.prefs.newsTool == "" return(false) if defined(grooveInteropData.prefs.news.toolAccountURI) identityurl = grooveInteropData.prefs.news.toolAccountURI else return(false) if not grooveInteropData.prefs.news.enabled return(false) addr = @aggregatorData.stories bundle // open a stream stream = tcp.openStream(host, port) for i = 1 to sizeof(addr^) storyname = nameof(addr^[i]) body = addr^[i].storytext if defined(addr^[i].channeltitle) title = addr^[i].channeltitle title = title + " - " + grooveInteropSuite.util.getStoryTitle(body) if !defined(addr^[i].grooveInterop) entryid = grooveInteropSuite.soap.addDiscussionEntry(grooveInteropData.prefs.newsTool, identityurl, title, string.htmlToEmail(body), stream) if entryid cnt = cnt + 1 new(tabletype, @tmpTable) tmpTable.EntryID = entryid tmpTable.Data = grooveInteropData.prefs.newsTool addr^[i].grooveInterop = tmpTable try tcp.closeStream(stream) if cnt == 1 radio.log.add("grooveInterop", "Sent "+cnt+" new story to Groove.", startTime) if cnt > 1 radio.log.add("grooveInterop", "Sent "+cnt+" new stories to Groove.", startTime) postScanCallback() ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/�:�����"b,���$��Arial����������������������������� ������������jj������:�.o2LAND�������win������������on updateSubscriptions () 08/02/03; 07:36:17 by TK Updates all subscriptions to Groove events local soapaction = grooveInteropData.soap.template.groove.actions.updateSubscription method = grooveInteropData.soap.template.groove.methods.updateSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl="", id, ttl=2 stream i xmlTable, addrBody, lst addr if not defined(grooveInteropData.groove.events) return(false) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events for i = 1 to sizeof(addr^) id = addr^[i].ID identiyurl = addr^[i].IdentityURL ttl = addr^[i].TimeToLive bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.updateSubscription method = string.replaceAll(method, "##id##", id) method = string.replaceAll(method, "##timetolive##", ttl) bundle // create the http-request, send to Groove and handle response try httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/UpdateResponse", @addrBody) bundle // close the stream try tcp.closeStream(stream) return(true) dialog.notify(updateSubscriptions ()) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������V�������R���$���cVcV�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V������� ?������cVcV���������V�������R���$���cUcU�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V������� ������cUcU���������V�������R���$���cUcU�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V������� K������cUcU���������V�������R���$���cUmcUm�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V������� ������cUmcUm���������V�������R���$���cUUcUU�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V������� W������cUUcUU���������V�������R���$���cU8cU8�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V������� ������cU8cU8���������V�������R���$���cTcT�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V��������rJ������cTcT�������������������w����Arial����������������������������� ��������������VV�������<LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ������������������������������؍���$���gg�������� ���� ��� ����linetext��� Preferencesp��F�������������$���SS�������� ���� ���h ����mlinetext���[["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.indexpath��� index.wsf�����6�������2������S׺W�������� ����startup����������6� �����N���$���gEgF�������� ����� ��B��������`��j� ��Arial����������������������������� ��������������ee���$��dvLAND�������win������������on testGWS () local host = "127.0.0.1" port = 5333 nonce = grooveInteropData.groove.webservicesnonce path = "/Suite75/1.0/TestCity" method = "<Read�B�� o�������n�����Arial����������������������������� �������������gg���+���1�QLAND�������win������������on refreshTools (addrSpace, addrToolsTable, stream=nil) 24/01/03; 17:13:40 by TK retreive usable tools local soapaction = grooveInteropData.soap.template.groove.actions.re�w��:�������,���$��Arial����������������������������� ������������jj������:�.o2LAND�������win������������on updateSubscriptions () 08/02/03; 07:36:17 by TK Updates all subscriptions to Groove events local soapaction = grooveInteropData.soap.template.groove.actions.updateSubscription method = grooveInteropData.soap.template.groove.methods.updateSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl="", id, ttl=2 stream i xmlTable, addrBody, lst addr if not defined(grooveInteropData.groove.events) return(false) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events for i = 1 to sizeof(addr^) id = addr^[i].ID identiyurl = addr^[i].IdentityURL ttl = addr^[i].TimeToLive bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.updateSubscription method = string.replaceAll(method, "##id##", id) method = string.replaceAll(method, "##timetolive##", ttl) bundle // create the http-request, send to Groove and handle response try httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/UpdateResponse", @addrBody) bundle // close the stream try tcp.closeStream(stream) return(true) dialog.notify(updateSubscriptions ()) ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ �������������w����Arial����������������������������� ��������������VV��� ����?LAND�������win������������on startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false ��������������������������������������S׺W�����������������B���cncn�������� ������� ������� ����� �����2 ���7Data���/GWS/Groove/1.0/Discussion/grooveTelespace/v84rwx4rzurq8tfxpvgyfj3j6mqn7nzg4nu4ysa/ToolContainer/ehcrqes7pjcmpzv36d5s962bzifrn28z4ppikua.Discussion.Tool/DiscussionDataModelDelegate IdentityURL���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name��� 2. Discussion SpaceName���V2.5 EvaluationType���(urn:groove.net:platform.tools.DiscussionOffLine�����B��� ���2������S׺W�������� ����startup������'�������������B����������������S׺W����������������d������WzWz�������� ����00001000 Member���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@�� ������������Wr WR���$���� :��������`���WzWz�������� ���� ��� ���(����������H��;�� �������h�� ���Arial����������������������������� ������������aGa�������������8���eeee�������������8���ee�������� ���� ���C ����Q���c ����r��� ���� 00001000 URI���2grooveIdentity://npjfz3utwmfjdmb38c7zzgxa2kyjypv9@ 00002000 Name���Andy Swarbrick00003000 VCard���F/GWS/Groove/1.0/vCard/grooveIdentity/npjfz3utwmfjdmb38c7zzgxa2kyjypv9@00004000 Awareness���OffLine������������8���ee�������� ���� ���C ����Q���e ����t��� ���� 00001000 URI���2grooveIdentity:�A�������M���������P���$��Arial����������������������������� ������������fͺgF��� ���$�iLAND�������win������������on refreshSpaces (addrIdentity, addrSpaces, stream=nil) 24/01/03; 17:13:40 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readSpaces method = grooveInteropData.soap.template.groove.methods.readSpaces nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 needCloseStream = false bundle // open a stream if needed try if stream == nil needCloseStream = true stream = tcp.openStream(host, port) else try tcp.closeStream(stream) return(false) else return(false) try path = addrIdentity^.Spaces identityurl = addrIdentity^.URI bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local tmpTable lst = xml.getAddressList(addrBody, "Space") for i = 1 to sizeof(lst) new (tabletype, @tmpTable) tmpTable.URI = xml.getValue(lst[i], "URI") tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.Tools = xml.getValue(lst[i], "Tools") tmpTable.IsLocal = xml.getValue(lst[i], "Local") tmpTable.IdentityURL = identityurl if tmpTable.IsLocal == "true" addrSpaces^.[cnt] = tmpTable cnt = cnt + 1 bundle // close the stream try if needCloseStream tcp.closeStream(stream) if sizeof(addrSpaces^) > 0 return(true) return(false) ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� :���r������R���$���[ߺ[�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���X��2�����6���$���[���r����������������[ߺ[�����������������������[[���������'��� FFFF000000060001001777AA000000000064000000001001710180490421800000600060031A3200-101031A321FFFFF0101F1000010000003800000001028484031A321F283038E00019331A37000020000028A00000000�284,function validate(obj) { switch(obj.name) { case "blog": if( parseInt(document.all.news.value) == parseInt(obj.value)) alert("This tool is in use by 'News', please try again.") ; else tools[0] = parseInt(obj.value); break; case "news": if( parseInt(document.all.blog.value) == parseInt(obj.value)) alert("This tool is in use by your Radio weblog, please try again." ); else tools[1] = parseInt(obj.value); break; case "files": tools[2] = parseInt(obj.value); break; } init(); } function init() { document.all.blog.value = tools[0]; document.all.news.value = tools[1]; document.all.files.value = tools[2]; }00040000000A000000020286000050000000A0000000202860000600000031000000010D30FFFF0A00000 20 000700000019000000010201800008000000B100000001�40,Arial�����������������������������������������������������������40,����������������������������������������������������������������404E44000321040008010100009000000170000000201A221D01A221D000A000000170000000231A321F31A321F000B00000005000000020000C00000016000000011E8FEE42DA72000F0000005200000000400 10 �4,77A�4,FFFF�4,�����4,�|��4,���4,�����4,����00130000007E00000000DA91F8CE1C1D1E1F7F1B0�44,-��.��������������.��'��"��������������FFFF0FFFF0FFFE000000060001001777AA�Ys[����������������������������������������������������{T���������������������������������������������������������������������'���V�������R���$���[g[g�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������76������[g[g��������"���������� ��Arial����������������������������� ������������-Oغ-Y���+���Q�RGLAND�������win������������on toolStatus (uri, stream=nil) local i host =grooveInteropData.prefs.grooveHost port =grooveInteropData.prefs.groovePort needCloseStream = false lst xmlData, addrBody bundle // check connection if grooveInteropData.groove.status < 2 grooveInteropSuite.soap.connectionStatus() if grooveInteropData.groove.status < 2 return(false) bundle // set debug port if debug is on if grooveInteropData.prefs.fldebug port = grooveInteropData.prefs.debugPort bundle // open a stream, if needed if stream == nil try stream = tcp.openStream(host, port) needCloseStream = true else return(false) xmlData = grooveInteropSuite.soap.getDiscussionEntries(uri, stream) if needCloseStream tcp.closeStream(stream) if xml.getPathAddress(@xmlData, "Envelope/Body/Fault", @addrBody) local faultcode = xml.getValue(addrBody, "faultcode") faultstring = xml.getValue(addrBody, "faultstring") return(false) if xml.getPathAddress(@xmlData, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local i lst = xml.getAddressList(addrBody, "DiscussionEntry") if number(sizeof(lst)) >= 0 return(true) else return(false) dialog.notify(toolStatus("/GWS/Groove/1.0/Discussion/grooveTelespace/grooveIdentity_58_47_47rw7p4fzrrtgbsycfd7d6facvzh38xb39_64@3ijciqajivpte8z7hw82dfwyfbnask7fe5qydq2/ToolContainer/ug5djaa75u5xp3ysax3i5dgab67x5r358j8qs7a.Discussion.Tool/DiscussionDataModelDelegate")) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������"������ ������.���gOgO�������� �������> ����A���O ����Raccount���2grooveIdentity://93knjnckbmqtvjrgiteb5egg6hxg5kma@ok��� Get Spacesop���spaces�V}5��������������������gOgO���������V�������R���$���\Zʺ\Z�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������>W������\Zʺ\Z���������V�������R���$���\Z\Z�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V��"���������������`R����������������"���0�������,������crcr�������� ����op���refresh���0�������:������crcr���������V�������R���$���\[\[�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������������\[\[���������x������a������_D_D�������� ���� 00001000 URI���2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@����&W���.���\d���x��,�����8������bj@bj@������������space���/��,���V�������R���$���bj׺bj�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������<`������bj׺bj���������V�������R���$���\Wr\Wr�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V�������EJ������\Wr\Wr���������V�������R���$���\W\W�������� ���� ��� ����linetext��� Preferencespath��� index.wsf���V���E��� ���5������\X\X�������� ����op���get groove tools ����#blog���E�������=������\W\W���������������W����������������������space���/GIFfGIF89a�������!����,�������D�;��VArial����������������������������� ���������������������������������������������//86jdh����������8������f#|f#|�������� ����00001000 Envelop��3�^����=��������I���L�������hD�������� ����\���h ����m���y ����~��� ������� ������� ����[["C:\\Program Files\\Radio UserLand\\Tools\\grooveInterop.root"].grooveInteropWebsite.index������fHelp������Home������ Preferences������p&Retreiving a list of tools from Groove������lSetup Wizard - Accounts��������VArial����������������������������� ��������������������������������������������������������l������Arial����������������������������� ������������Ffj���J����[3LAND�������win������������<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>{title} {grooveInteropSuite.html.style()} {grooveInteropSuite.html.grooveDataAsXML()} {grooveInteropSuite.html.js()} home | preferences | help
{bodytext} VR$\VԺ\V  linetext Preferencespath index.wsfVJ|\VԺ\Vfa_E._E. 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@kf@̐g;úg; 00001000 Envelopelp@UQ$g9g9  linetext Preferencespathtest.wsfUzg9g9/g.g.  /a/g.g.4bcjbcj B O 4&8bcjbcja R$bhvbhv  linetext Preferencespath index.wsf BaGPbhvbhv BHArial ``fh LANDwinon contactNameByURI (uri) local addr i if defined(grooveInteropData.groove.contacts) addr = @grooveInteropData.groove.contacts for i = 1 to sizeof(addr^) if addr^[i].URI == uri return(addr^[i].Name) return("Unknown user") dialog.notify(contactNameByURI ("grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@")) qu5yxz2 VR$\V \V  linetext Preferencespath index.wsfVK\V \V VR$\U\U  linetext Preferencespath index.wsfV![8\U\U !\VZ\VZ\VH\VH  X Arial SW LANDwinon client(host,port=9080,data,stream=nil,flDebug=false) 22/01/03; 01:43:28 by TK create a tcp stream to a host when needed and send raw data when a stream is provided the connection will stay alive (HTTP 100-continue) TODO: on stream-close Groove responds with HTTP-error 400, why? local needCloseStream = false httpResult = "" try bundle // open a stream to Groove if needed if stream == nil try stream = tcp.openStream(host, port) needCloseStream = true else try tcp.closeStream(stream) return(false) bundle // write data to the stream try tcp.writeStream(stream, data) else try tcp.closeStream(stream) return(false) bundle //read from the stream until we signal the soap end-tag this is tricky, hopefully the end-tag remains the same.... try tcp.readStreamUntil(stream, "\r\n", 15, @httpResult) else try tcp.closeStream(stream) return(false) bundle //close the stream if needed if needCloseStream try tcp.closeStream(stream) return the raw response return(httpResult) else return(false) bundle // test-code local soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts grooveHeader = string(grooveInteropData.soap.template.groove.header) soapEnvelope = string(grooveInteropData.soap.template.envelope) nonce = grooveInteropSuite.util.groove.getNonce() data = "" httpRequest = "" httpResult = "" path = "/GWS/Groove/1.0/Accounts/" ret = @grooveInteropData.httpResult if !nonce return(nil) try grooveInteropData.groove.webservicesnonce = nonce grooveHeader = string.replaceAll(grooveHeader, "##nonce##", nonce) grooveInteropData.httpResult=grooveHeader soapEnvelope = string.replaceAll(soapEnvelope, "##header##", grooveHeader) soapEnvelope = string.replaceAll(soapEnvelope, "##body##",method) else dialog.notify(tryError) bundle // create HTTP header, append SOAP message and send it to Groove... httpRequest = grooveInteropSuite.http.header.httpContinue(path, soapaction, sizeof(soapEnvelope)) httpRequest = httpRequest + "\r\n" + soapEnvelope grooveInteropData.httpResult=httpRequest try ret^ = grooveInteropSuite.soap.rpc.client("localhost",5333,httpRequest) else dialog.notify(tryError) E_K5_K5 namespacesoap:ȯsEVR$\\\\  linetext Preferencespath index.wsfVXZ\\\\VR$\[κ\[  linetext Preferencespath index.wsfVX\[κ\[VR$\[\[  linetext Preferencespath index.wsfV;\[\[T6FFFF000000060001001777AA000000000064000000001001710180490421800000600060031A3200-101031A321FFFFF0101E9000010000003A0000000102844084031A321F283038E00019331A37000020000028A00000000284,function validate(obj) { switch(obj.name) { case "blog": if( parseInt(document.all.news.value) == parseInt(obj.value)) alert("This tool is in use by 'News', please try again.") ; else tools[0] = parseInt(obj.value); break; case "news": if( parseInt(document.all.blog.value) == parseInt(obj.value)) alert("This tool is in use by your Radio weblog, please try again." ); else tools[1] = parseInt(obj.value); break; case "files": tools[2] = parseInt(obj.value); break; } init(); } function init() { document.all.blog.value = tools[0]; document.all.news.value = tools[1]; document.all.files.value = tools[2]; }00040000000A000000020286000050000000A0000000202860000600000031000000010D30FFFF0A00000 20 000700000019000000010201800008000000B10000000140,Arial40,404E44000321040008010100009000000170000000201A221D01A221D000A000000170000000231A321F31A321F000B00000005000000020000C00000014000000011E910932E0000F0000005200000000400 10 4,77A4,FFFF4,4,|4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAYs\Wz{TT^S$SW  client resultAsXmltLAND^`\\\\!!׺!! Q.2gg J W  '] j  4 Aw   G T   00001000 URI9grooveIdentity://ihsagp6xnqurj5qvdt45sjn9usegrf3a4jc99fk@ 00002000 URI2grooveIdentity://zdmq3y6zxgbz92bu43e94aec5inpaf55@ 00003000 URI9grooveIdentity://c634ktt4a7svact2qmz4vnc73k9u5zrxhqb7bjd@ 00004000 URI2grooveIdentity://yrt9bjhyjh9sv9a335abumxqbcg9yucs@ 00005000 URI2grooveIdentity://ekwbwvjkwrxu23sncqm85v9i78gwjvib@ 00006000 URI9grooveIdentity://jsntby4suvvztvz978ymxpjyfj9368ah57c3m9q@ 00007000 URI9grooveIdentFFFF000000060001001777AA00000000006A0000000010017101804904218000006000600329200-181381302E032921FFFFF0106E00001000000370000000106E4084032921F30048E000163291A60000200000073000000006E,#title "Retreiving a list of tools from Groove"

Retrieving a list of tools from Groove, please wait...

00040000000A000000020170100050000000A00000002017000006000000650000000210D30FFFF0A00000 20 10F310FFFF0C00000 10 00070000002F00000002010180101E000080000015F0000000240,Arial40,404E440003210400080101040,Geneva40,10A0304E44000104000100009000000150000000209917A09917A000A000000150000000232921F32921F000B00000005000000020000C00000018000000016E671F17711A30000F0000005200000000400 10 4,bund4,04,F34,4,4,4,00130000007E00000000DA91F8CE1C1D1E1F7F1B044,-..'"FFFF0FFFF0FFFE000000060001001777AAclcnn_~t.!!ȺW\  !- 6 createRequestmheaderjpostvarsjVArial 2oV΀W\W\j_D_D _ m{  !B QZ o   00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/ksrwvdynsd3rgwacsee599mze3r84r43mmhge22 00002000 Name test space00003000 DescriptionItest space (created via http://www.cabezal.com/skunkworks/makespace.html)00004000 Created2002-06-08T23:57:57.267+01:0000005000 Modified2002-06-08T23:57:57.287+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/ksrwvdynsd3rgwacsee599mze3r84r43mmhge2200009000 Membersols.Discussion<Arial "dxO KLANDwinon listFiles () local addr = @grooveInteropData.groove.sync.files i html = "
Groove Files
" for i = 1 to sizeof(addr^) html = html + addr^[i].href + "
" html = html + "
" return html dialog.notify(listFiles()) ]U$hihi %,(8p&%p&% C Qu 00001000 URI2grooveIdentity://gpun5q2y7wswicbthhssdfj28h6zn387@ 00002000 Name Andre.Bourgeois/Veridian Systems00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/gpun5q2y7wswicbthhssdfj28h6zn387@00004000 AwarenessOffLine]2hDhD  linet2YS׺_R.hAQhAQ V [g lhrefMiffr.gifNameiffr.gifSize3063t.!!ȺW\  !- 6 createRequestuvheaderrpostvarsrzVArial 2oV΀,W\W\A MS Sans Serif #wLANDwinon buildPostArgs (theTableAdr) local pta=html.getpageTableAddress() new( tableType, theTableAdr ) webserver.parseArgs( pta^.requestBody, theTableAdr ) + "POST " + urlA ;2< Arial'-UQjgg _ m   0f u  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/r77m9xdbxqzhfeigvbjp7ugey43pwer57ghdsfa 00002000 NameS75 Syntens Subsidie00003000 Description00004000 Created2002-05-13T10:52:01.921+01:0000005000 Modified2002-05-16T14:51:19.296+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/r77m9xdbxqzhfeigvbjp7ugey43pwer57ghdsfa00009000 Members:QMjgg _  h Arial aGa<`6*LANDwinon updateDiscussionEntry (tooldata, identityurl, subject="not set", body="not set", stream=nil) 01/02/03; 22:10:42 by TK update an existing Groove discussion-entry local i httpRequest = "" httpResult = "" soapmessage = string(grooveI< {Arial iźk #cLANDwinon subscribe (identityurl, eventclass, sourceURI, callbackURI, ttl) 08/02/03; 07:36:17 by TK subscribe to a Groove-event local addrSave soapaction = grooveInteropData.soap.template.groove.actions.createSubscription method = grooveInteropData.soap.template.groove.methods.createSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort tmpTable xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) addrSave = @grooveInteropData.groove.events bundle // create the input-message method = string.replaceAll(method, "##eventclass##", eventclass) method = string.replaceAll(method, "##sourceuri##", sourceURI) method = string.replaceAll(method, "##callbackuri##", callbackURI) method = string.replaceAll(method, "##timetolive##", ttl) try bundle // create the http-request, send it and handle response httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/CreateResponse", @addrBody) new (tabletype, @tmpTable) tmpTable.ID = xml.getValue(addrBody, "CreateResult") tmpTable.IdentityURL = identityurl tmpTable.sourceURI = sourceURI tmpTable.CallbackURI = callbackURI tmpTable.EventClass = eventclass tmpTable.TimeToLive = ttl addrSave^.[sizeof(addrSave^)] = tmpTable return(tmpTable.CallbackURI) return(false) dialog.notify(subscribe("grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@","urn:groove-net:DiscussionEvent", grooveInteropData.prefs.blogTool, "dpp://localhost/BLOGEVENTc"+clock.ticks(), 2, @grooveInteropData.groove.events)) VR$bYbY  linetext Preferencespath index.wsfV3bYbYVR$bpIbpI  linetext Preferencespath index.wsfVVR$bobo  linetext Preferencespath index.wsfVboboVR$boBboB  linetext Preferencespath index.wsfVVR$bnbn  linetext Preferencespath index.wsfV<bnbnwArial VV baba  +VR$ba}ba}  linetext Preferencespath index.wsfV&ba}ba}VR$baba  linetext Preferencespath index.wsfVVR$b`b`  linetext Preferencespath index.wsfVb`b`VR$b_b_  linetext Preferencespath index.wsfVb_b_VR$b_b_  linetext Preferencespath index.wsfVVR$b_b_  linetext Preferencespath index.wsfVb_b_VR$b]Db]D  linetext Preferencespath index.wsfVb]Db]Df `!ob\  *6 9E O[ `l v createSelectsw0grooveDataAsXMLjs> listFilesKmenu prefsFormscriptsstyleVArial o5oVfVR$b\b\  linetext Preferencespath index.wsfVԙb\b\VR$aa  linetext Preferencespath index.wsfVaa% _K_K %S׺_Rm \.aa   12IA3C Namems - MS Sans Serif#$efef  !NameMichael Herman (Dev)URI2grooveIdentity://t9fti8rbfueba2vr37pgpsa5a5yimv7w@HArial S׺`KHLANDwinThis script runs in its own thread. 24/01/03; 14:01:44 by TK loop //loop until the application quits 01/02/03; 00:39:36 by TK if !grooveInteropData.initialized grooveInteropSuite.install() bundle // if debugging: set a debug-port for tcpTrace if grooveInteropData.prefs.fldebug grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.debugPort else grooveInteropData.prefs.grooveCurrentPort = grooveInteropData.prefs.groovePort thread.sleepFor (10) //sleep for ten seconds sVR$_y_y  linetext Preferencespath index.wsfVf_y_ywArial VV ?LANDwinon startup () 24/01/03; 13:40:57 by TK grooveInteropData.groove.ready = false grooveInteropData.initialized = false S׺W"jgg C P  '] j  - : 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 00002000 URI2grooveIdentity://ehcf5asm7rv2b66jktctau8jybnnpv5v@ 00003000 URI9grooveIdentity://jsntby4suvvztvz978ymxpjyfj9368ah57c3m9q@ 00004000 URI9grooveIdentity://c634ktt4a7svact2qmz4vnc73k9u5zrxhqb7bjd@ 00005000 URI2grooveIdentity://6wz2arcyzrsi535exbtigja6z6w2qhpu@ 00006000 URI9grooveIdentity://dfqeju7pd5xn625uqe4rmqxg8vmtmaf4ayt8b78@ 00007000 URI2grooveIdentity://6ykrka2u3eq7uufche3i5rzqraj6hgtv@ 00008000 URI2grooveIdentity://ekwbwvjkwrxu23sncqm85v9i78gwjvib@ 00009000 URI2grooveIdentity://7jsmsyhzguerxzf36gqdbwrkj27598hu@v7w@00004000 AwarenessOffLineHU5` P"\ KfG3}lRlhJ{lzA0> b \Y`!7ԍRU:zG LrT(Oy>n}Y/|.)7.2;'_<=p=? K;KQhWX HUW;MW;MHTTP/1.1 100 Continue HTTP/1.1 200 OK Content-Type: text/xml Content-Length: 1185 6dpdvftiik589mqh77r3khumwmxt23gcxxy9nmsDevgrooveIdentity://xxukk274gxq6irj9jvbp7rm4pyg7thhk@Dev/GWS/Groove/1.0/Spaces/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@/GWS/Groove/1.0/Contacts/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@un8756asq88pnbcmq3qvea7785s74d2kkswanbaTim KnipgrooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Tim Knip/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 5W:պW: LWIWI F V  /e u00001000 Member2grooveIdentity://p3rrzai5yugcexbvbswcppnnutp46rxc@00002000 Member2grooveIdentity://bf3v5frcxx9yazk9cqzwkhk96pzneezr@00003000 Member9grooveIdentity://ane9umacped92c65syvi2t7wcy2i3jpggzxpvzr@00004000 Member2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00005000 Member2grooveIdentity://e6xunm7czmssdem8j52t4gu6vfr4un8n@00006000 Member2grooveIdentity://7jsmsyhzguerxzf36gqdbwrkj27598hu@ soapEnvelope = string.replaceAleW\\\\ "&305$ 8ee C Qm | 00001000 URI2grooveIdentity://qam26ppwi24eh89mcnru335xemagihsn@ 00002000 Nametsujikawa.masahiro/Rueca00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/qam26ppwi24eh89mcnru335xemagihsn@00004000 AwarenessOffLinee:"S׺W :jS׺V Arial S׺Wk1W{'LANDwinThis script runs every minute. if grooveInteropData.initialized thread.callScript (@grooveInteropSuite.util.groove.running,{})  .S׺S  *ea_E._E. 00001000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Xs KJhRl}{tC *U5`f+lzA0> b \Y`!7ԍRU:zG LrT(Oyn}Y/|P)7.2;'_<=p=? K;KQhWX X*WDWD G}RlhJlzA0 b \Y`!7ԍRU:zG LrT(Oy>n}Y/|.)7.2;'_<=p=? K;KQhWX Nb WzWz 0$ea_E._E.GBcncn ylhjgg _ m  )2 G}   00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/igzd9nsdf2smr4pzhq5knekjkgdrthgwicn4pea 00002000 Name+Groove Developers Conference 2002 (private)00003000 Description00004000 Created2002-04-26T16:33:35.458+01:0000005000 Modified2002-05-01T18:34:17.539+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/igzd9nsdf2smr4pzhq5knekjkgdrthgwicn4pea00009000 Members QMjgg _ m  ,b q  00001000 URIN/GWS/Groove/1.0/Spaces/grooveTelespace/6h7ztkw9trqas578g3j2ytghjqwp279yprfcy9a 00002000 Name__TechieIndex.t900003000 Description00004000 Created2002-02-25T12:48:57.246+01:0000005000 Modified2002-06-09T20:01:15.960+01:0000006000 Localfalse00007000 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@00008000 ToolsM/GWS/Groove/1.0/Tools/grooveTelespace/6h7ztkw9trqas578g3j2ytghjqwp279yprfcy9a00009000 MembersNVR$Wn{Wn{  linetext Preferencespath index.wsfVWn{Wn{hd$Wm Wm $ )linetextSetup Wizard - Accountspathwizaccounts.wsfhVR$Wm Wm  linetext Preferencespath index.wsfVWm Wm g/` cP"\ KfG3}lRlhJ{lzA0> b \Y`!7ԍRU:zG LrT(Oy>n}Y/|.)7.2;'_<=p=? K;KQhWX KQg`W:rW:rHTTP/1.1 100 Continue HTTP/1.1 200 OK Content-Type: text/xml Content-Length: 1185 6dpdvftiik589mqh77r3khumwmxt23gcxxy9nmsDevgrooveIdentity://xxukk274gxq6irj9jvbp7rm4pyg7thhk@Dev/GWS/Groove/1.0/Spaces/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@/GWS/Groove/1.0/Contacts/grooveIdentity/xxukk274gxq6irj9jvbp7rm4pyg7thhk@un8756asq88pnbcmq3qvea7785s74d2kkswanbaTim KnipgrooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Tim Knip/GWS/Groove/1.0/Spaces/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@/GWS/Groove/1.0/Contacts/grooveIdentity/rw7p4fzrrtgbsycfd7d6facvzh38xb39@ W:OW:O)4#T Arial 44Wcoc6LANDwinon refresh (addrSaveTable) 24/01/03; 15:56:43 by TK Retrieve all relevant data from Groove This is the main function to retreive Groove-data 25/01/03; 02:35:24 by TK added support for identyurl in SOAP-header ------------------------------------------------------------------------------------------------------------------------------------------------------- SUBS ------------------------------------------------------------------------------------------------------------------------------------------------------- on refreshIdentities (accountsXmlTable, addrAccounts) 24/01/03; 17:13:40 by TK retreive identities local addrBody, addrIdentity, addrContacts lstAccounts, lstIdentities i, j tmpTable contacts = "" if xml.getPathAddress(@accountsXmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lstAccounts = xml.getAddressList(addrBody, "Account") for i = 1 to sizeof(lstAccounts) contacts = xml.getValue(lstAccounts[i], "Contacts") lstIdentities = xml.getAddressList(lstAccounts[i], "Identities") for j = 1 to sizeof(lstIdentities) if sizeof(lstIdentities) > 0 if xml.getPathAddress(lstIdentities[j], "Identity", @addrIdentity) new(tabletype, @tmpTable) tmpTable.URI = xml.getValue(addrIdentity, "URI") tmpTable.Name = xml.getValue(addrIdentity, "Name") tmpTable.Spaces = xml.getValue(addrIdentity, "Spaces") tmpTable.Contacts =contacts name = xml.getValue(addrIdentity, "Name") addrAccounts^.[name] = tmpTable on refreshContacts(addrIdentities, addrContacts, stream) 01/02/03; 03:13:41 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readContacts method = grooveInteropData.soap.template.groove.methods.readContacts nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 for i = 1 to sizeof(addrIdentities^) path = addrIdentities^[i].Contacts identityurl = addrIdentities^[i].URI bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local tmpTable lst = xml.getAddressList(addrBody, "Contact") for i = 1 to sizeof(lst) new (tabletype, @tmpTable) try tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.URI = xml.getValue(lst[i], "URI") addrContacts^.[tmpTable.Name] = tmpTable on refreshSpaces (addrIdentities, addrSpaces, stream) 24/01/03; 17:13:40 by TK retreive spaces from Groove local soapaction = grooveInteropData.soap.template.groove.actions.readSpaces method = grooveInteropData.soap.template.groove.methods.readSpaces nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path, identityurl host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j xmlTable, addrBody, lst cnt = 1 for i = 1 to sizeof(addrIdentities^) path = addrIdentities^[i].Spaces identityurl = addrIdentities^[i].URI bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) local tmpTable lst = xml.getAddressList(addrBody, "Space") for i = 1 to sizeof(lst) new (tabletype, @tmpTable) try tmpTable.Name = xml.getValue(lst[i], "Name") tmpTable.Tools = xml.getValue(lst[i], "Tools") tmpTable.IsLocal = xml.getValue(lst[i], "Local") tmpTable.IdentityURL = identityurl if tmpTable.IsLocal == "true" addrSpaces^.[cnt] = tmpTable cnt = cnt + 1 on refreshTools (addrSpacesTable, addrToolsTable, stream) 24/01/03; 17:13:40 by TK retreive usable tools local soapaction = grooveInteropData.soap.template.groove.actions.readTools method = grooveInteropData.soap.template.groove.methods.readTools nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult = "" path, spacename host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort i, j identityurl xmlTable, addrBody, lst try for i = 1 to sizeof(addrSpacesTable^) path = addrSpacesTable^.[i].Tools identityurl = addrSpacesTable^.[i].IdentityURL spacename = addrSpacesTable^.[i].Name bundle // create the http-request httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false local tmpTable if xml.getPathAddress(xmlTable, "Envelope/Body/ReadResponse/ReadResult", @addrBody) lst = xml.getAddressList(addrBody, "Tool") for j = 1 to sizeof(lst) new (tabletype, @tmpTable) tmpTable.IdentityURL = identityurl tmpTable.Type = xml.getValue(lst[j], "Type") tmpTable.Name = xml.getValue(lst[j], "Name") tmpTable.Data = xml.getValue(lst[j], "Data") tmpTable.SpaceName = spacename if tmpTable.Type == "urn:groove.net:platform.tools.Discussion" or tmpTable.Type == "urn:groove.net:platform.tools.Files" addrToolsTable^.[sizeof(addrToolsTable^)+1] = tmpTable else dialog.notify(tryError) ------------------------------------------------------------------------------------------------------------------------------------------------------- MAIN CODE ------------------------------------------------------------------------------------------------------------------------------------------------------- local startTime = clock.ticks() soapaction = grooveInteropData.soap.template.groove.actions.readAccounts method = grooveInteropData.soap.template.groove.methods.readAccounts nonce = grooveInteropSuite.util.groove.getNonce() httpRequest = "" httpResult path = grooveInteropData.soap.template.groove.path.accounts stream host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort numTools = 0 bundle // main code if !nonce or !grooveInteropData.groove.ready or grooveInteropData.groove.busy or grooveInteropData.rootupdates.updating return(false) radio.log.add("grooveInterop", "Starting to fetch tools from Groove.", startTime) bundle // create the http-request grooveInteropData.groove.webservicesnonce = nonce httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction) bundle // open a stream try stream = tcp.openStream(host, port) else try tcp.closeStream(stream) else return(false) bundle // get accounts try local xmlTable identitiesTable spacesTable toolsTable contactsTable new( tabletype, @identitiesTable ) new( tabletype, @toolsTable ) new( tabletype, @spacesTable ) new( tabletype, @contactsTable ) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) try if xmlTable != false refreshIdentities(xmlTable^, @identitiesTable) refreshSpaces(@identitiesTable, @spacesTable, stream) refreshTools(@spacesTable, @toolsTable, stream) numTools = sizeof(toolsTable) addrSaveTable^.spaces = spacesTable addrSaveTable^.identities = identitiesTable addrSaveTable^.tools = toolsTable try refreshContacts(@identitiesTable, @contactsTable, stream) addrSaveTable^.contacts = contactsTable else strange hickup sometimes on first run of tool lets just try one more time try refreshContacts(@identitiesTable, @contactsTable, stream) addrSaveTable^.contacts = contactsTable else dialog.notify(tryError) bundle // close the stream try tcp.closeStream(stream) bundle // log it if numTools > 0 radio.log.add("grooveInterop", "Found "+numTools+" Groove tools, go to grooveInterop to set preferences", startTime) else radio.log.add("grooveInterop", "No Groove tools found!", startTime) webBrowser.openURL("http://127.0.0.1:5335/grooveInterop/") bundle // test code refresh(@grooveInteropData.groove) )hTg7պg7 000&OK$SͺS  Y8p&%p&% C Qh w:,$Arial jj :.o2LANDwinon updateSubscriptions () 08/02/03; 07:36:17 by TK Updates all subscriptions to Groove events local soapaction = grooveInteropData.soap.template.groove.actions.updateSubscription method = grooveInteropData.soap.template.groove.methods.updateSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort identityurl="", id, ttl=2 stream i xmlTable, addrBody, lst addr if not defined(grooveInteropData.groove.events) return(false) bundle // open a stream try stream = tcp.openStream(host, port) else return(false) addr = @grooveInteropData.groove.events for i = 1 to sizeof(addr^) id = addr^[i].ID identiyurl = addr^[i].IdentityURL ttl = addr^[i].TimeToLive bundle // create the input-message method = grooveInteropData.soap.template.groove.methods.updateSubscription method = string.replaceAll(method, "##id##", id) method = string.replaceAll(method, "##timetolive##", ttl) bundle // create the http-request, send to Groove and handle response try httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest,stream) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/UpdateResponse", @addrBody) bundle // close the stream try tcp.closeStream(stream) return(true) dialog.notify(updateSubscriptions ()) : {Arial iźk #cLANDwinon subscribe (identityurl, eventclass, sourceURI, callbackURI, ttl) 08/02/03; 07:36:17 by TK subscribe to a Groove-event local addrSave soapaction = grooveInteropData.soap.template.groove.actions.createSubscription method = grooveInteropData.soap.template.groove.methods.createSubscription nonce = grooveInteropData.groove.webservicesnonce httpRequest = "" httpResult = "" path = grooveInteropData.soap.template.groove.path.subscriptions host = grooveInteropData.prefs.grooveHost port = grooveInteropData.prefs.grooveCurrentPort tmpTable xmlTable, addrBody, lst if not defined(grooveInteropData.groove.events) new (tabletype, @grooveInteropData.groove.events) addrSave = @grooveInteropData.groove.events bundle // create the input-message method = string.replaceAll(method, "##eventclass##", eventclass) method = string.replaceAll(method, "##sourceuri##", sourceURI) method = string.replaceAll(method, "##callbackuri##", callbackURI) method = string.replaceAll(method, "##timetolive##", ttl) try bundle // create the http-request, send it and handle response httpRequest = grooveInteropSuite.http.createRequest(nonce,method,path,soapaction,identityurl) httpResult = grooveInteropSuite.soap.rpc.client(host,port,httpRequest) xmlTable = grooveInteropSuite.soap.rpc.resultAsXml(httpResult) if xmlTable != false if xml.getPathAddress(xmlTable, "Envelope/Body/CreateResponse", @addrBody) new (tabletype, @tmpTable) tmpTable.ID = xml.getValue(addrBody, "CreateResult") tmpTable.IdentityURL = identityurl tmpTable.sourceURI = sourceURI tmpTable.CallbackURI = callbackURI tmpTable.EventClass = eventclass tmpTable.TimeToLive = ttl addrSave^.[sizeof(addrSave^)] = tmpTable return(tmpTable.CallbackURI) return(false) dialog.notify(subscribe("grooveIdentity://22qsxnmvvqufc44fyhh872kszfwuvkcv@","urn:groove-net:DiscussionEvent", grooveInteropData.prefs.blogTool, "dpp://localhost/BLOGEVENTc"+clock.ticks(), 2, @grooveInteropData.groove.events)) {51mm namespacesoap:5 CmmLmh(mh( > If i  CallbackURI.dpp://localhost/grooveInterop_FILESEVENT_63956 EventClassurn:groove-net:FilesEventID'cvf56b774cu3ypk7hbwzwjmnzpfps9btxrs9yu2 IdentityURL2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ sourceURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine TimeToLive91mm namespacesoap:9mm51mm namespacesoap:5 OmmZ%1mm namespacesoap:</atts f00002000 HeaderZ mm8mm  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instanceRKmm8mm  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance mm8mm  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance 1mmVR$j tj t  linetext Preferencespath index.wsfVj tj t"8n 9n 9 C Qj y 00001000 URI2grooveIdentity://7946s2te66yx7ge2vdz9rizzrcrgcfza@ 00002000 NameAndreas Witt/On2Trade00003000 VCardF/GWS/Groove/1.0/vCard/grooveIdentity/7946s2te66yx7ge2vdz9rizzrcrgcfza@00004000 AwarenessOffLineL"+z.|剺|  ". </attsY00002000 Header 00003000 Body x V@L.|z0|z0`\$|剺|  (/atts00002000 ReadResponse `VR$|剺|  &/atts F00002000 ReadResultV\X|剺| xmlns0http://webservices.groove.net/Groove/1.0/Events/\8|uE|uE  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instance3|u|u1pp ) 3i t / 9M V   , 1? DI NX _g kCreated2003-02-12T23:36:50.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ EventClassurn:groove-net:FilesEvent EventSourcegrooveTelespace://6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine EventTypeFileAddEventDataFolderID0f2f6e1e1c931db98b35556ddcb54738d1af2923542a49e29ID09c998fab875881335203c84aa521055473538e4498d69aa4Modified2003-02-12T23:36:50.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name New FolderSize0TypeFolderUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/9c998fab875881335203c84aa521055473538e4498d69aa41pp ) 3i t / 9M V   , 1? DI NX _g kCreated2003-02-12T23:36:44.000+01:00 CreatedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ EventClassurn:groove-net:FilesEvent EventSourcegrooveTelespace://6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine EventTypeFileAddEventDataFolderID0a9c2749e5d49f978e472e85bcdbc2af45147abb53b23b087ID0f2f6e1e1c931db98b35556ddcb54738d1af2923542a49e29Modified2003-02-12T23:36:44.000+01:00 ModifiedBy2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@Name New FolderSize0TypeFolderUnreadtrueURI/GWS/Groove/1.0/Files/grooveTelespace/6dwiqqyd96f3u2nnbkmqgwrcu6ax43m2zbssh2a/ToolContainer/2rtcq3hqx8a46nigih3jzvn325crqai7eqm4fk2.Files.Tool/DocumentShareEngine/f2f6e1e1c931db98b35556ddcb54738d1af2923542a49e291`Ritem #1VArial p1HArial S׺`TP$SjS  envelope grooveT8Si  ' /; @actionsq!headerkmethodsvpath8S}jN* & -H Oj xaccounts/GWS/Groove/1.0/Accounts/events/GWS/Groove/1.0/Events/spaces/GWS/Groove/1.0/Spaces/ subscriptions/GWS/Groove/1.0/Subscriptions/ڀ~tԺt namespacesoap: M=51tԺt namespacesoap:~8j tj t  K Tx namespacesoap: xmlns:soap)http://schemas.xmlsoap.org/soap/envelope/xmlns:xs http://www.w3.org/2001/XMLSchema xmlns:xsi)http://www.w3.org/2001/XMLSchema-instancecj j  f#ff#f C P  O \   %[ h  $ 1n {  7 Dz    C P   V c  & 3i v  2 ?u    > K   J W 00001000 URI2grooveIdentity://bxhzvqdj5et5nbtq34p37ui9c4zc6xjt@ 00002000 URI2grooveIdentity://en64rka5g4cqx2gf95jpmjeqgtkzg958@ 00003000 URI2grooveIdentity://6ym5dzfzn4c99tq98jbkcx9c3a5bqecx@ 00004000 URI2grooveIdentity://36tfhub3i9vy2wd7cbjh5t2h8wc8g9bg@ 00005000 URI2grooveIdentity://28kmdfgzckmk4gnm5qykszr4y7g6qav4@ 00006000 URI2grooveIdentity://xux39825w5scqf9et9sm7eeednrmsidn@ 00007000 URI2grooveIdentity://kcvrwjsz2gay5d88sp9awy5pc5nwbyn3@ 00008000 URI2grooveIdentity://ekwbwvjkwrxu23sncqm85v9i78gwjvib@ 00009000 URI2grooveIdentity://eax658iniha373qaskehs3tc6ak9v5sq@ 00010000 URI2grooveIdentity://8jc42qpte2uncb65uq645f6nb6tsn2a3@ 00011000 URI2grooveIdentity://qam26ppwi24eh89mcnru335xemagihsn@ 00012000 URI2grooveIdentity://wgsgqz6e6xfifp8xbr7w5tchkayzaw34@ 00013000 URI9grooveIdentity://jsntby4suvvztvz978ymxpjyfj9368ah57c3m9q@ 00014000 URI2grooveIdentity://x7n3fcc48kf7pij4bfkewe4xf7ne7nvq@ 00015000 URI2grooveIdentity://qfaeeiw2ceimkza3ts3g8ehc4wz5dwyy@ 00016000 URI2grooveIdentity://dwirqtpt7amtjpnbuzb364uc7wbvpsu6@ 00017000 URI2grooveIdentity://itv5kt6py7knnqdvr6y6mtkcvqi6m2j7@ 00018000 URI2grooveIdentity://jywkysb4y64pwhkcj3bcvs3sph34rtz4@ 00019000 URI2grooveIdentity://d8b8eyn6w53sey834sjg9gd38c2iniff@ 00020000 URI2grooveIdentity://dvj9w4n2wqhma4fqv6wwykkd2zy5s7zk@ 00021000 URI2grooveIdentity://icgs9mv2e2fn8bgi7hb82jijq4a4jm3y@ 00022000 URI2grooveIdentity://a7g7pu4svuaiz3n7gcb3quuyfu4nntpq@ 00023000 URI2grooveIdentity://7946s2te66yx7ge2vdz9rizzrcrgcfza@ 00024000 URI9grooveIdentity://g3uxpcge3sz5xiu2r5i3jtpu2rhsibqin66g3sp@ 00025000 URI2grooveIdentity://rw7p4fzrrtgbsycfd7d6facvzh38xb39@ 00026000 URI2grooveIdentity://qpvnyckb9kfpqzeyz4pigvmyxsc8wn6w@ 00027000 URI9grooveIdentity://amrkzdsy6vdnwnxvdhu855ibyz8dagguts9fivg@ 00028000 URI2grooveIdentity://7nv6g956nqk8zary4gsrcb7hksmkxbrn@ 00029000 URI2grooveIdentity://7gjd4eedqu5x78q7q26xg5wzin2ea4sc@ 00030000 URI2grooveIdentity://7jsmsyhzguerxzf36gqdbwrkj27598hu@ 00031000 URI2grooveIdentity://b4gwhu4zerpdsjq43qs9yin985xrb9gf@ 00032000 URI2grooveIdentity://ephumzdp2b2se78iprc9nmk46h5ea4cg@ 00033000 URI2grooveIdentity://t5y5rniuwxxtdm4scjj8zsefadecgaz3@ 00034000 URI2grooveIdentity://ypmwcikqcs5wwi9nsvqyafbhckwycnn4@ 00035000 URI2grooveIdentity://dwgp5gjdeb29kth322pvehsue2sm43fm@ 00036000 URI2grooveIdentity://2mp92tdep3t2wef5j35wzh7m5qzkzf3z@ 00037000 URI2grooveIdentity://373ssaw8hc547fd744cpnvaxp562h42m@ 00038000 URI2grooveIdentity://f5avs49746zq2iug3whama6tf53rrswe@ 00039000 URI2grooveIdentity://srmnmntnqn8zgtsgg7s5mqtkukn8fr4u@ 00040000 URI9grooveIdentity://ane9umacped92c65syvi2t7wcy2i3jpggzxpvzr@ 00041000 URI2grooveIdentity://6ykrka2u3eq7uufche3i5rzqraj6hgtv@ 00042000 URI2grooveIdentity://ssvxcakzgwjsrectcgkc93mcjfn3m2a8@ ր.fdfd "&+Lg7պg7 C P  O \ 00001000 URI2groo <&TArial $eʺ$f