Just a thought: rpc should cater for the 'nocache' attribute - either in another input field or with query /rpc?nocache=1.
Otherwise, I get the cached version for the info, then the ifr might return a newer version. Of course, under normal usage without nocache=1 there's no guarantee the cache won't expire between these stages. In fact, even with nocache=1, the XML could be changed between calls. Looking at the code, I wondered if query parameters should be passed to gadget server when invoked by the rpc servlet, but in tests it certainly doesn't work. Thanks, Dan -----Original Message----- From: Kevin Brown [mailto:[EMAIL PROTECTED] Sent: 11 February 2008 22:09 To: [email protected] Subject: Re: Getting Gadget Info without rendering gadget That's exactly the intended use for RpcServlet. Great example! On Feb 11, 2008 2:04 PM, Dan Lester <[EMAIL PROTECTED]> wrote: > > OK, I'll keep checking out and trying the Rpc again over the next few > days. I'm playing around with both Java and PHP at the moment (but > both using Java gadget server of course). My initial code to get info > over Rpc just used curl in something like: > > > $gadgets_array = array(); > > foreach ($gadgetUrls as $url) { > $gadgets_array[] = array( 'url' => $url, > 'moduleId' => > count($gadgets_array)+1 ); > } > > $req = array( > 'context' => array( > 'country' => 'US', > 'language' => 'en', > 'view' => 'default' ), > 'gadgets' => $gadgets_array ); > > $rpc = new > RpcSender('http://localhost:8080/gadgets/rpc'<http://localhost:8080/gadg ets/rpc%27> > ); > $info = $rpc->Send($req); > > class RpcSender { > > private $addr; > > function __construct($addr) { > $this->addr = $addr; > } > > public function GetAddr() { > return $this->addr; > } > > public function Send($req) { > // req is an array-object that needs to be JSON-ified > > $json_req = json_encode($req); > > $ch = curl_init(); > curl_setopt($ch, CURLOPT_URL, $this->GetAddr()); > curl_setopt($ch, CURLOPT_POST, 1); > curl_setopt($ch, CURLOPT_POSTFIELDS, $json_req); > curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); > > $res = curl_exec($ch); > > if (curl_errno($ch)) { > $res = null; > // Should handle curl_error($ch); > } else { > $res = json_decode($res, true); > } > > curl_close($ch); > > return $res; > } > } > > > > -----Original Message----- > From: Kevin Brown [mailto:[EMAIL PROTECTED] > Sent: 11 February 2008 19:58 > To: Dan Lester > Cc: [email protected] > Subject: Re: Getting Gadget Info without rendering gadget > > > On Feb 11, 2008 11:23 AM, Dan Lester <[EMAIL PROTECTED]> wrote: > > > Kevin, > > > > The JsonRpc servlet is a great contribution - I've got it working > > from > > > PHP. > > > > However, is there any chance it could return all available details > > from the spec? That would include thumbnail_url, width, height, > > author_email, etc - every attribute on the ModulePrefs tag, I > > suppose. > > > Yes, these will be added. Not all of them are currently supported on > the GadgetSpec interface. I'll be adding these over the next few days > (after submitting the pending headers patch; see SHINDIG-56). I think > we'll ultimately wind up supporting the entire extended spec here, not > just the canonical one. > > > > > > You mention that error handling is "kind of rough". I think any > > client > > > can just cater for the idiosyncrasies for now, but one glaring issue > > is that any one gadget spec not found causes the whole call to break > > (returns 'Incomplete processing'). That rather ruins your hard work > > to > > > allow multiple gadget specs to be fetched at once. > > > I went ahead and fixed this in SHINDIG-56 as well. I didn't realize it > was breaking when anything failed, but rather only when something went > horribly wrong. I'll double check this. > > > > > > > > SHINDIG-25 is marked as closed which is why I'm bringing it up > > rather than just waiting to see if you had anything more in store... > > > I'd like new , individual bugs to be opened for specific issues as > they're encountered, which is why I closed SHINDIG-25. > > I'm glad you appreciate it, though. Thanks for the feedback! > > ~Kevin > >

