This is input-only, correct?  Are there plans for output component(s) too?

Don

On Thu, Sep 30, 2010 at 3:08 PM, Bruno Borges <bruno.bor...@gmail.com> wrote:
> Hadrian, remember the talk we had on ApacheCon 2009?
> I know I took almost a year to have this thing done. Sorry for taking so
> long! But here it goes.
>
> I just want to state that Neociclo <http://www.neociclo.com> supported me a
> lot on achieving this.
> Not only we were able to code the Camel
> OFTP<http://accord.ow2.org/odetteftp>component but now also I had time
> and motivation to finish this component.
>
> *Camel Social*
> http://code.google.com/p/camel-social
>
> The component is a PoC to poll social stream path in a uniform way from
> social networks.
>
> Some features:
> - supports OAuth
> - supports Basic Auth (wrapped by a OAuth credentials object (token =
> username, secret = password)
> - supports uniform SocialData (a unique id and the data itself)
> - supports skip read social data (saves unique id for future polling and
> skip them)
> - supports custom social providers (just implement a SocialProvider)
> - supports Twitter out of the box
> - has Facebook and Foursquare classes ready to be implemented
> - supports RateLimitExceededException to sleep consumer thread for a while
> - supports session/non-session aware social providers
> - supports social data producer on social stream path
>
> *In a nutshell: *
> from("social://twitter/public?skipRead=true&delay=5000")
> .transform(xpath("//status/text/text()").stringResult())
> .process(new Processor() {
> *public void* process(Exchange arg0) *throws* Exception {
> System.*out*.print(arg0.getIn().getHeader(SocialHeaders.*SOCIAL_DATA_ID*) + ":
> ");
> System.*out*.println(arg0.getIn().getBody());
> }
> });
>
> *How it works:*
> - there can be only one pair of OAuth consumer token and consumer secret
> (from client application) per endpoint
> - OAuth is not required but recommended because of data fetch rate limits
> (150 requests per hour on Twitter; 350 if "OAuthed")
> - endpoint can have user oauth token/secret. In this case, it will poll
> data. Otherwise it will work as event-based consumer
> - exchanges going to this endpoint's producer with OAUTH header user's
> token/secret and POLL_STREAM header to true will fire consumers to poll data
> for that user
> - exchanges going to this endpoint's producer with SOCIAL_DATA header to be
> updated will require user's OAuth either specified on the endpoint or within
> message headers
> - endpoint specifies the social (stream) path. For example, in Twitter
> provider there's support for user's home timeline and the public timeline.
> "social://twitter/home" or "social://twitter/public"
> - the provider must be able to return unique social data from the requested
> social path
> - social data is retrieved as is from the social network and can be
> retrieved on message body, processed either by XPath (case of
> Twitter/Foursquare provider) and JSON (case of Facebook)
>
> *Things to consider*
> - must the component require providers to present social data on unified
> format? (twitter can provide xml/json/rss; facebook provides only json)
> - must the one component's endpoint be able to stream social data for
> different client's oauth token/secret? Like it does per user
>
> *What's next?*
> - consider to move this component to Camel trunk
> - consider to have main social network providers (Twitter, Facebook,
> Foursquare, Orkut, Buzz)
> - optimize the data fetch process (take a look at AbstractTwitterPath)
>
> Now, I definitely need some help on this to provide better support for
> different social networks and social paths.
> Anybody interested?
>
> Cheers!!
>
> Bruno Borges
> www.brunoborges.com.br
> +55 21 76727099
>
> "The glory of great men should always be
> measured by the means they have used to
> acquire it."
>  - Francois de La Rochefoucauld
>

Reply via email to