diff --git a/docs/modules/ROOT/assets/images/kamelets/google-sheets-stream-source.svg b/docs/modules/ROOT/assets/images/kamelets/google-sheets-stream-source.svg new file mode 100644 index 000000000..28f6a330b --- /dev/null +++ b/docs/modules/ROOT/assets/images/kamelets/google-sheets-stream-source.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc index 3f8b08544..bec52232a 100644 --- a/docs/modules/ROOT/nav.adoc +++ b/docs/modules/ROOT/nav.adoc @@ -7,6 +7,7 @@ * xref:ROOT:ftps-source.adoc[image:kamelets/ftps-source.svg[] FTPS Source] * xref:ROOT:google-calendar-stream-source.adoc[image:kamelets/google-calendar-stream-source.svg[] Google Calendar Stream Source] * xref:ROOT:google-mail-stream-source.adoc[image:kamelets/google-mail-stream-source.svg[] Google Mail Stream Source] +* xref:ROOT:google-sheets-stream-source.adoc[image:kamelets/google-sheets-stream-source.svg[] Google Sheets Stream Source] * xref:ROOT:http-source.adoc[image:kamelets/http-source.svg[] HTTP Source] * xref:ROOT:jira-source.adoc[image:kamelets/jira-source.svg[] Jira Source] * xref:ROOT:kafka-source.adoc[image:kamelets/kafka-source.svg[] Kafka Source] diff --git a/docs/modules/ROOT/pages/google-mail-stream-source.adoc b/docs/modules/ROOT/pages/google-mail-stream-source.adoc index 5d9a3727c..f214fd3f8 100644 --- a/docs/modules/ROOT/pages/google-mail-stream-source.adoc +++ b/docs/modules/ROOT/pages/google-mail-stream-source.adoc @@ -18,7 +18,7 @@ The following table summarizes the configuration options available for the `goog | *index {empty}* *| Index| An index for the google mail endpoint| string| | | *refreshToken {empty}* *| Refresh Token| OAuth 2 refresh token for google mail application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.| string| | | labels| Gmail labels| Comma separated list of labels to take into account| string| | `"inbox"` -| markAsRead| Mark as read| Mark the message as read once it has been consumed| boolean| `false`| +| markAsRead| Mark as read| Mark the message as read once it has been consumed| boolean| `true`| | query| Gmail query| The query to execute on gmail box| string| `"is:unread"`| `"is:unread -category:(promotions OR social)"` |=== diff --git a/docs/modules/ROOT/pages/google-sheets-stream-source.adoc b/docs/modules/ROOT/pages/google-sheets-stream-source.adoc new file mode 100644 index 000000000..337d0c9cd --- /dev/null +++ b/docs/modules/ROOT/pages/google-sheets-stream-source.adoc @@ -0,0 +1,74 @@ +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT += image:kamelets/google-sheets-stream-source.svg[] Google Sheets Stream Source + +*Provided by: "Apache Software Foundation"* + +Receive data from Google Sheets. + +== Configuration Options + +The following table summarizes the configuration options available for the `google-sheets-stream-source` Kamelet: +[width="100%",cols="2,^2,3,^2,^2,^3",options="header"] +|=== +| Property| Name| Description| Type| Default| Example +| *accessToken {empty}* *| Access Token| OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage.| string| | +| *applicationName {empty}* *| Application name| Google Sheets application name| string| | +| *clientId {empty}* *| Client Id| Client ID of the sheets application| string| | +| *clientSecret {empty}* *| Client Secret| Client Secret of the sheets application| string| | +| *index {empty}* *| Index| An index for the google sheets endpoint| string| | +| *refreshToken {empty}* *| Refresh Token| OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.| string| | +| *spreadsheetId {empty}* *| Spreadsheet ID| The Spreadsheet ID to be used as events source| string| | +| range| Consume from now| the range of rows and columns in a sheet to get data from.| boolean| | `"A1:B3"` +| splitResults| Split Results| True if value range result should be split into rows or columns to process each of them individually.| boolean| `true`| +|=== + +NOTE: Fields marked with ({empty}*) are mandatory. + +== Usage + +This section summarizes how the `google-sheets-stream-source` can be used in various contexts. + +=== Knative Source + +The `google-sheets-stream-source` Kamelet can be used as Knative source by binding it to a Knative object. + +.google-sheets-stream-source-binding.yaml +[source,yaml] +---- +apiVersion: camel.apache.org/v1alpha1 +kind: KameletBinding +metadata: + name: google-sheets-stream-source-binding +spec: + source: + ref: + kind: Kamelet + apiVersion: camel.apache.org/v1alpha1 + name: google-sheets-stream-source + properties: + accessToken: "The Access Token" + applicationName: "The Application name" + clientId: "The Client Id" + clientSecret: "The Client Secret" + index: "The Index" + refreshToken: "The Refresh Token" + spreadsheetId: "The Spreadsheet ID" + 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 `google-sheets-stream-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 google-sheets-stream-source-binding.yaml +---- +// THIS FILE IS AUTOMATICALLY GENERATED: DO NOT EDIT diff --git a/google-sheets-source.kamelet.yaml b/google-sheets-source.kamelet.yaml new file mode 100644 index 000000000..a324c1b0c --- /dev/null +++ b/google-sheets-source.kamelet.yaml @@ -0,0 +1,94 @@ +apiVersion: camel.apache.org/v1alpha1 +kind: Kamelet +metadata: + name: google-sheets-stream-source + annotations: + camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4NiAzOCA3NiA3NiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTI0NCA1NmgtNDB2NDBoNDBWNTZ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTI0NCAxMTRsMTgtMThoLTE4djE4eiIvPjxwYXRoIGZpbGw9IiNGQkJDMDQiIGQ9Ik0yNjIgNTZoLTE4djQwaDE4VjU2eiIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Ik0yNDQgOTZoLTQwdjE4aDQwVjk2eiIvPjxwYXRoIGZpbGw9IiMxODgwMzgiIGQ9Ik0xODYgOTZ2MTJjMCAzLjMxNSAyLjY4NSA2IDYgNmgxMlY5NmgtMTh6Ii8+PHBhdGggZmlsbD0iIzE5NjdEMiIgZD0iTTI2MiA1NlY0NGMwLTMuMzE1LTIuNjg1LTYtNi02aC0xMnYxOGgxOHoiLz48cGF0aCBmaWxsPSIjNDI4NUY0IiBkPSJNMjQ0IDM4aC01MmMtMy4zMTUgMCAtNiAyLjY4NS02IDZ2NTJoMThWNTZoNDBWMzh6Ii8+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTIxMi4yMDUgODcuMDNjLTEuNDk1LTEuMDEtMi41My0yLjQ4NS0zLjA5NS00LjQzNWwzLjQ3LTEuNDNjLjMxNSAxLjIuODY1IDIuMTMgMS42NSAyLjc5Ljc4LjY2IDEuNzMuOTg1IDIuODQuOTg1IDEuMTM1IDAgMi4xMS0uMzQ1IDIuOTI1LTEuMDM1czEuMjI1LTEuNTcgMS4yMjUtMi42MzVjMC0xLjA5LS40My0xLjk4LTEuMjktMi42Ny0uODYtLjY5LTEuOTQtMS4wMzUtMy4yMy0xLjAzNWgtMi4wMDVWNzQuMTNoMS44YzEuMTEgMCAyLjA0NS0uMyAyLjgwNS0uOS43Ni0uNiAxLjE0LTEuNDIgMS4xNC0yLjQ2NSAwIC0uOTMtLjM0LTEuNjctMS4wMi0yLjIyNS0uNjgtLjU1NS0xLjU0LS44MzUtMi41ODUtLjgzNS0xLjAyIDAgLTEuODMuMjctMi40My44MTVhNC43ODQgNC43ODQgMCAwIDAgLTEuMzEgMi4wMDVsLTMuNDM1LTEuNDNjLjQ1NS0xLjI5IDEuMjktMi40MyAyLjUxNS0zLjQxNSAxLjIyNS0uOTg1IDIuNzktMS40OCA0LjY5LTEuNDggMS40MDUgMCAyLjY3LjI3IDMuNzkuODE1IDEuMTIuNTQ1IDIgMS4zIDIuNjM1IDIuMjYuNjM1Ljk2NS45NSAyLjA0NS45NSAzLjI0NSAwIDEuMjI1LS4yOTUgMi4yNi0uODg1IDMuMTEtLjU5Ljg1LTEuMzE1IDEuNS0yLjE3NSAxLjk1NXYuMjA1YTYuNjA1IDYuNjA1IDAgMCAxIDIuNzkgMi4xNzVjLjcyNS45NzUgMS4wOSAyLjE0IDEuMDkgMy41IDAgMS4zNi0uMzQ1IDIuNTc1LTEuMDM1IDMuNjRzLTEuNjQ1IDEuOTA1LTIuODU1IDIuNTE1Yy0xLjIxNS42MS0yLjU4LjkyLTQuMDk1LjkyLTEuNzU1LjAwNS0zLjM3NS0uNS00Ljg3LTEuNTF6TTIzMy41MiA2OS44MWwtMy44MSAyLjc1NS0xLjkwNS0yLjg5IDYuODM1LTQuOTNoMi42MlY4OGgtMy43NFY2OS44MXoiLz48L3N2Zz4=" + camel.apache.org/provider: "Apache Software Foundation" + labels: + camel.apache.org/kamelet.type: "source" +spec: + definition: + title: "Google Sheets Stream Source" + description: |- + Receive data from Google Sheets. + required: + - index + - spreadsheetId + - clientId + - accessToken + - refreshToken + - clientSecret + - applicationName + properties: + index: + title: Index + description: An index for the google sheets endpoint + type: string + spreadsheetId: + title: Spreadsheet ID + description: The Spreadsheet ID to be used as events source + type: string + clientId: + title: Client Id + description: Client ID of the sheets application + type: string + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + clientSecret: + title: Client Secret + description: Client Secret of the sheets application + type: string + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + accessToken: + title: Access Token + description: OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage. + type: string + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + refreshToken: + title: Refresh Token + description: OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived. + type: string + x-descriptors: + - urn:alm:descriptor:com.tectonic.ui:password + applicationName: + title: Application name + description: Google Sheets application name + type: string + splitResults: + title: Split Results + description: True if value range result should be split into rows or columns to process each of them individually. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + default: true + range: + title: Consume from now + description: the range of rows and columns in a sheet to get data from. + type: boolean + x-descriptors: + - 'urn:alm:descriptor:com.tectonic.ui:checkbox' + example: "A1:B3" + types: + out: + mediaType: application/json + dependencies: + - "camel:jackson" + flow: + from: + uri: "google-sheets-stream://{{index}}" + parameters: + clientId: "{{clientId}}" + spreadsheetId: "{{spreadsheetId}}" + accessToken: "{{accessToken}}" + refreshToken: "{{refreshToken}}" + clientSecret: "{{clientSecret}}" + applicationName: "{{applicationName}}" + splitResults: "{{splitResults}}" + range: "{{range}}" + steps: + - marshal: + json: {} + - to: "kamelet:sink"