Thanks Chris, I'll let you all know if I get a chance to try this out!

On 29 Dec 2008, at 22:20, Chris Chabot wrote:

Hey Ben, Here's the bit more detailed version of my response:

Main point of contact between the container, the gadget renderer and the social api is the security token. Now fortunately the security token works the same between the PHP and Java versions, hence you can swap PHP and Java versions as you seem fit, either completely or even partially. As such using one of the two versions for the rendering/js serving/etc, and the other for
the social api implementation is perfectly doable.

The one thing you do want to keep in mind though is the cross-domain policy that is the basis of the security model of gadgets (the SNS and shindig being on different domains prevents the gadget from doing evil things to the SNS), but also means that the iframe domain (gadget renderer) has to be the
same as the social end point.

So if you want to use PHP for the rendering, and the social API in java,
you'd probably have to:
a) run both on the same machine and use an apache trick like:
   ProxyRequests Off
   <Proxy *>
       Order deny,allow
       Allow from all
   </Proxy>
   ProxyPass /social http://localhost:8080/social
   ProxyPassReverse /social http://localhost:8080/social

b) Do the above, but proxy to a different machine
c) have your load balancer/etc route those requests to a different machine



On Mon, Dec 29, 2008 at 1:06 PM, Ben Smith <[email protected]> wrote:

On a rather un-related note. Can the PHP Shindig container be pointed at an
alternative OpenSocial RESTful endpoint?

We split our technologies (the ones that are relevant here anyway) between Java for the service layer and PHP for the app/presentation layer. With this in mind, I was wondering whether the PHP implementation would be able to handle the rendering of the container and any OS-Templates along with the distribution of the JS, while using the Java RESTful service layer instead
of its own service implementation (similar to how the JS would).

I realise this wouldn't be a goal of the PHP implementation, I was just
interested in how feasible it would be.

Cheers,
Ben Smith
BBC


On 29 Dec 2008, at 11:46, Chris Chabot wrote:

oh ps if you edit shindig/php/config/container.php and set this to true:
// Allow anonymous (READ) access to the profile information? (aka REST
and
JSON-RPC interfaces)
// setting this to false means you have to be authenticated through OAuth
to read the data
'allow_anonymous_token' => true,

you should be able to make REST requests without having to add security tokens or authenticating with OAuth (though those are still required for
any
write actions of course)

Lastly, it seems by the error your getting it's trying to use the
jsonBatch
endpoint, which isn't REST either but the internal-only protocol we used during the 0.7 days.. in other words it's using old crufty 0.7 days code
in
javascript when you set the 'impl' to 'rest'.

We should probably either remove that switch all together, or hook it up
to
the actual features/opensocial-rest/restfulcontainer.js and make sure that
that uses the right end-points (/social/rest/<foo> instead of
/social/jsonBatch).



On Mon, Dec 29, 2008 at 12:30 PM, Chris Chabot <[email protected]>
wrote:

Shindig (both versions) fully support :


http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/restful-protocol

In the case of the comment you copied, it's the POST/PUT action on
/people
... which isn't part of the OpenSocial spec, and the comment indicates
that
some day it *could* possibly be added to the spec (like for adding
friends
or something), in which case that bit of code will be replaced by the
proper
action.

The json-rpc and rest implementations both use the exact same
implementations btw, just get there through a different code path (see
ApiServlet for the base class, JsonRpcServlet for the json-rpc
implementation and DataServiceServlet for the REST one). For instance a
GET
on /social/rest/people is the same as a json-rpc request with
{'method':'people.get'}.

So with that hopefully cleared up, I have to admit that I haven't used
the
REST gadgets JavaScript code for a long time .. so I have no idea what
shape
that is in.. but that's all that the switch in the
shindig/js/container.js
file does, switch over the js code that powers the social data calls in gadgets; If you want to use the REST endpoint in any other situation, there's no need to change that config file at all, you can just call the
url's directly.




On Mon, Dec 29, 2008 at 11:51 AM, Jerôme Gangneux <
[email protected]> wrote:

I remember that REST was the default protocol for PHP at the beginning,
and
shindig switch to RPC to uniforms Java and PHP
Ok that's cool but does it mean that REST for PHP (and I'm not talking
about
REST in opensocial here) is abandoned?
I see this in the code

{{{
    // in our current implementation this will throw a
SocialSPIException since we don't support
    // adding people/friendships in our API yet, but this might be
added
some day
}}}
in /php/src/social/service/RestRequestItem.php line 62

and if I switch RPC to REST in container.js (config) it doesn't work
anymore
getting 500 errors
{{{
<h1>500 Internal Server Error - Internal Server Error</h1>
Invalid or unknown service endpoint: jsonBatch?st=RTN5RVVybW(...)
}}}

Yes I know, RPC is better etc, but I really need REST for some proof of
concept dev
what's the plan ?

Jerome G






Reply via email to