Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Twitter

Available as of Camel

...

2.10

...

The

...

Twitter

...

component

...

enables

...

the

...

most

...

useful

...

features

...

of

...

the

...

Twitter

...

API

...

by

...

encapsulating

...

Twitter4J

...

.

...

It

...

allows

...

direct,

...

polling,

...

or

...

event-driven

...

consumption

...

of

...

timelines,

...

users,

...

trends,

...

and

...

direct

...

messages.

...

Also,

...

it

...

supports

...

producing

...

messages

...

as

...

status

...

updates

...

or

...

direct

...

messages.

...

Twitter

...

now

...

requires

...

the

...

use

...

of

...

OAuth

...

for

...

all

...

client

...

application

...

authentication.

...

In

...

order

...

to

...

use

...

camel-twitter

...

with

...

your

...

account,

...

you'll

...

need

...

to

...

create

...

a

...

new

...

application

...

within

...

Twitter

...

at

...

https://dev.twitter.com/apps/new

...

and

...

grant

...

the

...

application

...

access

...

to

...

your

...

account.

...

Finally,

...

generate

...

your

...

access

...

token

...

and

...

secret.

...

Maven

...

users

...

will

...

need

...

to

...

add

...

the

...

following

...

dependency

...

to

...

their

...

pom.xml

...

for

...

this

...

component:

Code Block
xml
xml

{code:xml}
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-twitter</artifactId>
    <version>${camel-version}</version>
</dependency>
{code

URI format

Code Block
}

h3. URI format

{code}
twitter://endpoint[?options]
{code}

h3. 

TwitterComponent:

...

The

...

twitter

...

component

...

can

...

be

...

configured

...

with

...

the

...

Twitter

...

account

...

settings

...

which

...

is

...

mandatory

...

to

...

configure

...

before

...

using.

...


You

...

can

...

also

...

configure

...

these

...

options

...

directly

...

in

...

the

...

endpoint.

Wiki Markup

{div:class=confluenceTableSmall}
|| Option || Description ||
| consumerKey | The consumer key |
| consumerSecret | The consumer secret |
| accessToken | The access token |
| accessTokenSecret | The access token secret |
{div}

h3. 

Consumer

...

Endpoints:

...

Rather

...

than

...

the

...

endpoints

...

returning

...

a

...

List

...

through

...

one

...

single

...

route

...

exchange,

...

camel-twitter

...

creates

...

one

...

route

...

exchange

...

per

...

returned

...

object.

...

As

...

an

...

example,

...

if

...

"timeline/home"

...

results

...

in

...

five

...

statuses,

...

the

...

route

...

will

...

be

...

executed

...

five

...

times

...

(one

...

for

...

each

...

Status).

Wiki Markup

{div:class=confluenceTableSmall}
|| Endpoint || Context || Body Type || Notice ||
| directmessage | direct, polling | twitter4j.DirectMessage | |
| search | direct, polling | twitter4j.Tweet | |
| streaming/filter | event, polling | twitter4j.Status | |
| streaming/sample | event, polling | twitter4j.Status | |
| timeline/home | direct, polling | twitter4j.Status | |
| timeline/mentions | direct, polling | twitter4j.Status | |
| timeline/public | direct, polling | twitter4j.Status | @deprecated. Use timeline/home or direct/home instead. Removed from *Camel 2.11* onwards. |
| timeline/retweetsofme | direct, polling | twitter4j.Status | |
| timeline/user | direct, polling | twitter4j.Status | |
| trends/daily | *Camel 2.10.1:* direct, polling | twitter4j.Status | @deprecated. Removed from Camel 2.11 onwards. |
| trends/weekly | *Camel 2.10.1:* direct, polling | twitter4j.Status | @deprecated. Removed from Camel 2.11 onwards. |
{div}

h3. 

Producer

...

Endpoints:

Wiki Markup

{div:class=confluenceTableSmall}
|| Endpoint || Body Type ||
| directmessage | String |
| search | List<twitter4j.Tweet> |
| timeline/user | String |
{div}

h3. 

URI Options

Wiki Markup
 Options
{div:class=confluenceTableSmall}
|| Name || Default Value || Description ||
| type | {{direct}} | direct, event, or polling |
| delay | {{60}} | in seconds |
| consumerKey | {{null}} | Consumer Key. Can also be configured on the {{TwitterComponent}} level instead. |
| consumerSecret | {{null}} | Consumer Secret. Can also be configured on the {{TwitterComponent}} level instead. |
| accessToken | {{null}} | Access Token. Can also be configured on the {{TwitterComponent}} level instead. |
| accessTokenSecret | {{null}} | Access Token Secret. Can also be configured on the {{TwitterComponent}} level instead. |
| user | {{null}} | Username, used for user timeline consumption, direct message production, etc. |
| locations| {{null}} | 'lat,lon;lat,lon;...' Bounding boxes, created by pairs of lat/lons.  Can be used for streaming/filter |
| keywords| {{null}} | 'foo1,foo2,foo3...' Can be used for search and streaming/filter. See [Advanced search|https://support.twitter.com/articles/71577-using-advanced-search] for keywords syntax for searching with for example OR. |
| userIds| {{null}} | 'username,username...' Can be used for streaming/filter |
| filterOld | {{true}} | Filter out old tweets, that has previously been polled. This state is stored in memory only, and based on last tweet id. *Since Camel 2.11.0* The search producer supports this option |
| sinceId | {{1}} | *Camel 2.11.0:* The last tweet id which will be used for pulling the tweets. It is useful when the camel route is restarted after a long running.|
| lang | {{null}} | *Camel 2.11.0:* The lang string [ISO_639-1|http://en.wikipedia.org/wiki/ISO_639-1] which will be used for searching |
| count | {{null}} | *Camel 2.11.0:* Limiting number of results per page. |
| numberOfPages | {{1}} | *Camel 2.11.0:* The number of pages result which you want camel-twitter to consume. |
{div}

h3. 

Message header

Wiki Markup
 header
{div:class=confluenceTableSmall}
|| Name || Description ||
|{{CamelTwitterKeywords}}|This header is used by the search producer to change the search key words dynamically.|
|{{CamelTwitterSearchLanguage}}| *Camel 2.11.0:* This header can override the option of {{lang}} which set the search language for the search endpoint dynamically|
|{{CamelTwitterCount}}|*Camel 2.11.0* This header can override the option of {{count}} which sets the max twitters that will be returned.|
|{{CamelTwitterNumberOfPages}}|*Camel 2.11.0* This header can converrid the option of {{numberOfPages}} which sets how many pages we want to twitter returns.|
{div}

h3. 

Message

...

body

...

All

...

message

...

bodies

...

utilize

...

objects

...

provided

...

by

...

the

...

Twitter4J

...

API.

Use cases

To create a status update within your Twitter profile, send this producer a String body.

Code Block



h3. Use cases

h4. To create a status update within your Twitter profile, send this producer a String body.
{code}
from("direct:foo")
  .to("twitter://timeline/user?consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]);
{code}
h4. To 

To poll,

...

every

...

5

...

sec.,

...

all

...

statuses

...

on

...

your

...

home

...

timeline:

{
Code Block
}
from("twitter://timeline/home?type=polling&delay=5&consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]")
  .to("bean:blah");
{code}
h4. To search for all statuses with the keyword 

To search for all statuses with the keyword 'camel':

{
Code Block
}
from("twitter://search?type=direct&keywords=camel&consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]")
  .to("bean:blah");
{code}

h4. Searching using a producer with static keywords
{code}

Searching using a producer with static keywords

Code Block
from("direct:foo")
  .to("twitter://search?keywords=camel&consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]");
{code}

h4. Searching using a producer with dynamic keywords from header
In the bar header we have the keywords we want to search, so we can 

Searching using a producer with dynamic keywords from header

In the bar header we have the keywords we want to search, so we can assign this value to the CamelTwitterKeywords header.

Code Block
assign this value to the {{CamelTwitterKeywords}} header.
{code}
from("direct:foo")
  .setHeader("CamelTwitterKeywords", header("bar"))
  .to("twitter://search?consumerKey=[s]&consumerSecret=[s]&accessToken=[s]&accessTokenSecret=[s]");
{code}

h3. Example
See also the [Twitter Websocket Example].

{include:Endpoint See Also}
- [Twitter Websocket Example]

Example

See also the Twitter Websocket Example.

Include Page
Endpoint See Also
Endpoint See Also