// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
= image:kamelets/twitter-timeline-source.svg[] Twitter Timeline Source

*Provided by: "Apache Software Foundation"*

*Support Level for this Kamelet is: "Preview"*

Allows to get tweets from the timeline of a specific user from Twitter.

It requires tokens that can be obtained by creating an application 
in the Twitter developer portal: https://developer.twitter.com/.

== Configuration Options

The following table summarizes the configuration options available for the `twitter-timeline-source` Kamelet:
[width="100%",cols="2,^2,3,^2,^2,^3",options="header"]
|===
| Property| Name| Description| Type| Default| Example
| *accessToken {empty}* *| Access Token| The Access Token from the Twitter application in the developer portal| string| | 
| *accessTokenSecret {empty}* *| Access Token Secret| The Access Token Secret from the Twitter application in the developer portal| string| | 
| *apiKey {empty}* *| API Key| The API Key from the Twitter application in the developer portal| string| | 
| *apiKeySecret {empty}* *| API Key Secret| The API Key Secret from the Twitter application in the developer portal| string| | 
| *user {empty}* *| User| The user we want to read the timeline| string| | `"ApacheCamel"`
|===

NOTE: Fields marked with ({empty}*) are mandatory.

== Usage

This section summarizes how the `twitter-timeline-source` can be used in various contexts.

=== Knative Source

The `twitter-timeline-source` Kamelet can be used as Knative source by binding it to a Knative object.

.twitter-timeline-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: twitter-timeline-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: twitter-timeline-source
    properties:
      accessToken: "The Access Token"
      accessTokenSecret: "The Access Token Secret"
      apiKey: "The API Key"
      apiKeySecret: "The API Key Secret"
      user: "ApacheCamel"
  sink:
    ref:
      kind: InMemoryChannel
      apiVersion: messaging.knative.dev/v1
      name: mychannel
  
----
Make sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `twitter-timeline-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f twitter-timeline-source-binding.yaml
----

==== *Binding to Knative using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind twitter-timeline-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.user=ApacheCamel" channel/mychannel
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

=== Kafka Source

The `twitter-timeline-source` Kamelet can be used as Kafka source by binding it to a Kafka topic.

.twitter-timeline-source-binding.yaml
[source,yaml]
----
apiVersion: camel.apache.org/v1alpha1
kind: KameletBinding
metadata:
  name: twitter-timeline-source-binding
spec:
  source:
    ref:
      kind: Kamelet
      apiVersion: camel.apache.org/v1alpha1
      name: twitter-timeline-source
    properties:
      accessToken: "The Access Token"
      accessTokenSecret: "The Access Token Secret"
      apiKey: "The API Key"
      apiKeySecret: "The API Key Secret"
      user: "ApacheCamel"
  sink:
    ref:
      kind: KafkaTopic
      apiVersion: kafka.strimzi.io/v1beta1
      name: my-topic
  
----

Ensure that you've installed https://strimzi.io/[Strimzi] and created a topic named `my-topic` in the current namespace.
Make also sure you have xref:latest@camel-k::installation/installation.adoc[Camel K installed] into the Kubernetes cluster you're connected to.

Save the `twitter-timeline-source-binding.yaml` file into your hard drive, then configure it according to your needs.

You can run the source using the following command:

[source,shell]
----
kubectl apply -f twitter-timeline-source-binding.yaml
----

==== *Binding to Kafka using the Kamel CLI:*

The procedure described above can be simplified into a single execution of the `kamel bind` command:

[source,shell]
----
kamel bind twitter-timeline-source -p "source.accessToken=The Access Token" -p "source.accessTokenSecret=The Access Token Secret" -p "source.apiKey=The API Key" -p "source.apiKeySecret=The API Key Secret" -p "source.user=ApacheCamel" kafka.strimzi.io/v1beta1:KafkaTopic:my-topic
----

This will create the KameletBinding under the hood and apply it to the current namespace in the cluster.

// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT
