[[google-drive-component]]
== Google Drive Component

*Available as of Camel version 2.14*

The Google Drive component provides access to the
http://drive.google.com[Google Drive file storage service] via the
https://developers.google.com/drive/v2/reference[Google Drive Web APIs].

Google Drive uses
the https://developers.google.com/accounts/docs/OAuth2[OAuth 2.0
protocol] for authenticating a Google account and authorizing access to
user data. Before you can use this component, you will need to
https://developers.google.com/drive/web/auth/web-server[create an
account and generate OAuth credentials]. Credentials comprise of a
clientId, clientSecret, and a refreshToken. A handy resource for
generating a long-lived refreshToken is the
https://developers.google.com/oauthplayground[OAuth playground].

Maven users will need to add the following dependency to their pom.xml
for this component:

-------------------------------------------------------
    <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-google-drive</artifactId>
            <!-- use the same version as your Camel core version -->
            <version>x.x.x</version>
    </dependency>
        
-------------------------------------------------------

### URI Format

'''''

The GoogleDrive Component uses the following URI format:

---------------------------------------------------------
        google-drive://endpoint-prefix/endpoint?[options]
    
---------------------------------------------------------

Endpoint prefix can be one of:

* drive-about
* drive-apps
* drive-changes
* drive-channels
* drive-children
* drive-comments
* drive-files
* drive-parents
* drive-permissions
* drive-properties
* drive-realtime
* drive-replies
* drive-revisions

### GoogleDriveComponent





// component options: START
The Google Drive component supports 4 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *configuration* (common) | To use the shared configuration |  | GoogleDrive Configuration
| *clientFactory* (advanced) | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory |  | GoogleDriveClient Factory
| *resolveProperty Placeholders* (advanced) | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | boolean
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
|===
// component options: END








// endpoint options: START
The Google Drive endpoint is configured using URI syntax:

----
google-drive:apiName/methodName
----

with the following path and query parameters:

==== Path Parameters (2 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *apiName* | *Required* What kind of operation to perform |  | GoogleDriveApiName
| *methodName* | *Required* What sub operation to use for the selected operation |  | String
|===


==== Query Parameters (14 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *accessToken* (common) | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
| *applicationName* (common) | Google drive application name. Example would be camel-google-drive/1.0 |  | String
| *clientFactory* (common) | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory |  | GoogleDriveClient Factory
| *clientId* (common) | Client ID of the drive application |  | String
| *clientSecret* (common) | Client secret of the drive application |  | String
| *inBody* (common) | Sets the name of a parameter to be passed in the exchange In Body |  | String
| *refreshToken* (common) | OAuth 2 refresh token. 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
| *scopes* (common) | Specifies the level of permissions you want a drive application to have to a user account. See https://developers.google.com/drive/web/scopes for more info. |  | List
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. |  | ExchangePattern
| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END
// spring-boot-auto-configure options: START
=== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel</groupId>
  <artifactId>camel-google-drive-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 12 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.google-drive.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.google-drive.client-factory* | To use the GoogleCalendarClientFactory as factory for creating the client. Will by default use BatchGoogleDriveClientFactory. The option is a org.apache.camel.component.google.drive.GoogleDriveClientFactory type. |  | String
| *camel.component.google-drive.configuration.access-token* | OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. |  | String
| *camel.component.google-drive.configuration.api-name* | What kind of operation to perform |  | GoogleDriveApiName
| *camel.component.google-drive.configuration.application-name* | Google drive application name. Example would be "camel-google-drive/1.0" |  | String
| *camel.component.google-drive.configuration.client-id* | Client ID of the drive application |  | String
| *camel.component.google-drive.configuration.client-secret* | Client secret of the drive application |  | String
| *camel.component.google-drive.configuration.method-name* | What sub operation to use for the selected operation |  | String
| *camel.component.google-drive.configuration.refresh-token* | OAuth 2 refresh token. 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
| *camel.component.google-drive.configuration.scopes* | Specifies the level of permissions you want a drive application to have to a user account. See https://developers.google.com/drive/web/scopes for more info. |  | List
| *camel.component.google-drive.enabled* | Enable google-drive component | true | Boolean
| *camel.component.google-drive.resolve-property-placeholders* | Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. | true | Boolean
|===
// spring-boot-auto-configure options: END




### Producer Endpoints

Producer endpoints can use endpoint prefixes followed by endpoint names
and associated options described next. A shorthand alias can be used for
some endpoints. The endpoint URI MUST contain a prefix.

Endpoint options that are not mandatory are denoted by []. When there
are no mandatory options for an endpoint, one of the set of [] options
MUST be provided. Producer endpoints can also use a special option
*`inBody`* that in turn should contain the name of the endpoint option
whose value will be contained in the Camel Exchange In message.

Any of the endpoint options can be provided in either the endpoint URI,
or dynamically in a message header. The message header name must be of
the format `CamelGoogleDrive.<option>`. Note that the `inBody` option
overrides message header, i.e. the endpoint option `inBody=option` would
override a `CamelGoogleDrive.option` header.

For more information on the endpoints and options see API documentation
at: https://developers.google.com/drive/v2/reference/[https://developers.google.com/drive/v2/reference/]

### Consumer Endpoints

Any of the producer endpoints can be used as a consumer endpoint.
Consumer endpoints can use
http://camel.apache.org/polling-consumer.html#PollingConsumer-ScheduledPollConsumerOptions[Scheduled
Poll Consumer Options] with a `consumer.` prefix to schedule endpoint
invocation. Consumer endpoints that return an array or collection will
generate one exchange per element, and their routes will be executed
once for each exchange.

### Message Headers

Any URI option can be provided in a message header for producer
endpoints with a `CamelGoogleDrive.` prefix.

### Message Body

All result message bodies utilize objects provided by the underlying
APIs used by the GoogleDriveComponent. Producer endpoints can specify
the option name for incoming message body in the `inBody` endpoint URI
parameter. For endpoints that return an array or collection, a consumer
endpoint will map every element to distinct messages.     
