Minor changes to drive component
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/58a9ffb4 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/58a9ffb4 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/58a9ffb4 Branch: refs/heads/master Commit: 58a9ffb4a2950c91760406aad302b53985301165 Parents: 5b2990c Author: Jonathan Anstey <jans...@gmail.com> Authored: Mon Sep 8 11:26:15 2014 -0230 Committer: Jonathan Anstey <jans...@gmail.com> Committed: Mon Sep 8 11:26:15 2014 -0230 ---------------------------------------------------------------------- components/camel-google-drive/pom.xml | 27 ++++++- .../drive/BatchGoogleDriveClientFactory.java | 7 +- .../google/drive/GoogleDriveComponent.java | 41 +++++++++- .../google/drive/GoogleDriveConsumer.java | 4 + .../google/drive/GoogleDriveEndpoint.java | 25 +------ .../google/drive/GoogleDriveFilesConverter.java | 40 ++++++++++ .../InteractiveGoogleDriveClientFactory.java | 7 +- .../drive/FileConverterIntegrationTest.java | 73 ++++++++++++++++++ .../google/drive/FileConverterTest.java | 79 -------------------- .../src/test/resources/test-options.properties | 7 +- 10 files changed, 198 insertions(+), 112 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/pom.xml ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/pom.xml b/components/camel-google-drive/pom.xml index a0779e3..f8f817a 100644 --- a/components/camel-google-drive/pom.xml +++ b/components/camel-google-drive/pom.xml @@ -187,7 +187,7 @@ <apiName>drive-files</apiName> <proxyClass>com.google.api.services.drive.Drive$Files</proxyClass> <fromJavadoc/> - </api> + </api> <api> <apiName>drive-parents</apiName> <proxyClass>com.google.api.services.drive.Drive$Parents</proxyClass> @@ -299,4 +299,29 @@ </plugins> </reporting> + <profiles> + <profile> + <id>google-drive-test</id> + <build> + <plugins> + <plugin> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <childDelegation>false</childDelegation> + <useFile>true</useFile> + <forkMode>once</forkMode> + <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds> + <excludes> + <exclude>**/*XXXTest.java</exclude> + </excludes> + <includes> + <include>**/*Test.java</include> + </includes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + </profiles> + </project> http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/BatchGoogleDriveClientFactory.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/BatchGoogleDriveClientFactory.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/BatchGoogleDriveClientFactory.java index bb9c883..9d62ebe 100644 --- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/BatchGoogleDriveClientFactory.java +++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/BatchGoogleDriveClientFactory.java @@ -18,6 +18,9 @@ package org.apache.camel.component.google.drive; import java.util.Collection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.http.javanet.NetHttpTransport; @@ -25,6 +28,7 @@ import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.drive.Drive; public class BatchGoogleDriveClientFactory implements GoogleDriveClientFactory { + private static final Logger LOG = LoggerFactory.getLogger(BatchGoogleDriveClientFactory.class); private NetHttpTransport transport; private JacksonFactory jsonFactory; @@ -40,8 +44,7 @@ public class BatchGoogleDriveClientFactory implements GoogleDriveClientFactory { credential = authorize(clientId, clientSecret, scopes, refreshToken); return new Drive.Builder(transport, jsonFactory, credential).setApplicationName(applicationName).build(); } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + LOG.error("Could not create Google Drive client.", e); } return null; } http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java index c4fe472..56cc76b 100644 --- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java +++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveComponent.java @@ -16,20 +16,31 @@ */ package org.apache.camel.component.google.drive; +import java.util.Arrays; +import java.util.List; + import org.apache.camel.CamelContext; import org.apache.camel.Endpoint; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.util.component.AbstractApiComponent; -import org.apache.camel.component.google.drive.internal.DriveFilesApiMethod; import org.apache.camel.component.google.drive.internal.GoogleDriveApiCollection; import org.apache.camel.component.google.drive.internal.GoogleDriveApiName; +import com.google.api.services.drive.Drive; +import com.google.api.services.drive.DriveScopes; + /** * Represents the component that manages {@link GoogleDriveEndpoint}. */ @UriEndpoint(scheme = "google-drive", consumerClass = GoogleDriveConsumer.class, consumerPrefix = "consumer") public class GoogleDriveComponent extends AbstractApiComponent<GoogleDriveApiName, GoogleDriveConfiguration, GoogleDriveApiCollection> { - + private Drive client; + private GoogleDriveClientFactory clientFactory; + private List<String> scopes = DEFAULT_SCOPES; + + private static final List<String> DEFAULT_SCOPES = Arrays.asList(DriveScopes.DRIVE_FILE, DriveScopes.DRIVE_APPS_READONLY, DriveScopes.DRIVE_METADATA_READONLY, + DriveScopes.DRIVE); + public GoogleDriveComponent() { super(GoogleDriveEndpoint.class, GoogleDriveApiName.class, GoogleDriveApiCollection.getCollection()); } @@ -43,9 +54,35 @@ public class GoogleDriveComponent extends AbstractApiComponent<GoogleDriveApiNam return GoogleDriveApiName.fromValue(apiNameStr); } + public Drive getClient() { + if (client == null) { + client = getClientFactory().makeClient(configuration.getClientId(), configuration.getClientSecret(), scopes, configuration.getApplicationName(), configuration.getRefreshToken()); + } + return client; + } + + public GoogleDriveClientFactory getClientFactory() { + if (clientFactory == null) { + clientFactory = new BatchGoogleDriveClientFactory(); + } + return clientFactory; + } + + public void setClientFactory(GoogleDriveClientFactory clientFactory) { + this.clientFactory = clientFactory; + } + @Override protected Endpoint createEndpoint(String uri, String methodName, GoogleDriveApiName apiName, GoogleDriveConfiguration endpointConfiguration) { return new GoogleDriveEndpoint(uri, this, apiName, methodName, endpointConfiguration); } + + private List<String> getScopes() { + return scopes; + } + + private void setScopes(List<String> scopes) { + this.scopes = scopes; + } } http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java index 43ef2d4..077a913 100644 --- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java +++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveConsumer.java @@ -24,6 +24,8 @@ import org.apache.camel.RuntimeCamelException; import org.apache.camel.util.component.AbstractApiConsumer; import org.apache.camel.util.component.ApiMethod; import org.apache.camel.component.google.drive.internal.GoogleDriveApiName; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; @@ -32,6 +34,8 @@ import com.google.api.client.googleapis.services.AbstractGoogleClientRequest; */ public class GoogleDriveConsumer extends AbstractApiConsumer<GoogleDriveApiName, GoogleDriveConfiguration> { + private static final Logger LOG = LoggerFactory.getLogger(BatchGoogleDriveClientFactory.class); + public GoogleDriveConsumer(GoogleDriveEndpoint endpoint, Processor processor) { super(endpoint, processor); } http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveEndpoint.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveEndpoint.java index 66aa080..f07b90f 100644 --- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveEndpoint.java +++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveEndpoint.java @@ -16,8 +16,6 @@ */ package org.apache.camel.component.google.drive; -import java.util.Arrays; -import java.util.List; import java.util.Map; import org.apache.camel.Consumer; @@ -33,7 +31,6 @@ import org.apache.camel.component.google.drive.internal.GoogleDriveConstants; import org.apache.camel.component.google.drive.internal.GoogleDrivePropertiesHelper; import com.google.api.services.drive.Drive; -import com.google.api.services.drive.DriveScopes; /** * Represents a GoogleDrive endpoint. @@ -41,12 +38,6 @@ import com.google.api.services.drive.DriveScopes; @UriEndpoint(scheme = "google-drive", consumerClass = GoogleDriveConsumer.class, consumerPrefix = "consumer") public class GoogleDriveEndpoint extends AbstractApiEndpoint<GoogleDriveApiName, GoogleDriveConfiguration> { private Object apiProxy; - private Drive client; - - private GoogleDriveClientFactory clientFactory; - - private static final List<String> DEFAULT_SCOPES = Arrays.asList(DriveScopes.DRIVE_FILE, DriveScopes.DRIVE_APPS_READONLY, DriveScopes.DRIVE_METADATA_READONLY, - DriveScopes.DRIVE); public GoogleDriveEndpoint(String uri, GoogleDriveComponent component, GoogleDriveApiName apiName, String methodName, GoogleDriveConfiguration endpointConfiguration) { @@ -118,11 +109,8 @@ public class GoogleDriveEndpoint extends AbstractApiEndpoint<GoogleDriveApiName, } } - private Drive getClient() { - if (client == null) { - client = getClientFactory().makeClient(configuration.getClientId(), configuration.getClientSecret(), DEFAULT_SCOPES, configuration.getApplicationName(), configuration.getRefreshToken()); - } - return client; + public Drive getClient() { + return ((GoogleDriveComponent)getComponent()).getClient(); } @Override @@ -130,14 +118,5 @@ public class GoogleDriveEndpoint extends AbstractApiEndpoint<GoogleDriveApiName, return apiProxy; } - public GoogleDriveClientFactory getClientFactory() { - if (clientFactory == null) { - clientFactory = new InteractiveGoogleDriveClientFactory(); - } - return clientFactory; - } - public void setClientFactory(GoogleDriveClientFactory clientFactory) { - this.clientFactory = clientFactory; - } } http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverter.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverter.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverter.java index 1058a10..8500377 100644 --- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverter.java +++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/GoogleDriveFilesConverter.java @@ -17,16 +17,25 @@ package org.apache.camel.component.google.drive; import java.io.File; +import java.io.IOException; import java.io.InputStream; import org.apache.camel.Converter; import org.apache.camel.Exchange; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.component.file.GenericFile; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import com.google.api.client.http.FileContent; +import com.google.api.client.http.GenericUrl; +import com.google.api.client.http.HttpResponse; import com.google.api.client.http.InputStreamContent; +import com.google.api.services.drive.Drive; public final class GoogleDriveFilesConverter { + private static final Logger LOG = LoggerFactory.getLogger(GoogleDriveFilesConverter.class); + private GoogleDriveFilesConverter() { } @@ -60,4 +69,35 @@ public final class GoogleDriveFilesConverter { } return null; } + + // convenience method that takes google file metadata and converts that to an inputstream + @Converter + public static InputStream download(com.google.api.services.drive.model.File fileMetadata, Exchange exchange) throws Exception { + if (fileMetadata.getDownloadUrl() != null && fileMetadata.getDownloadUrl().length() > 0) { + try { + // TODO maybe separate this out as custom drive API ex. google-drive://download... + HttpResponse resp = getClient(exchange).getRequestFactory().buildGetRequest(new GenericUrl(fileMetadata.getDownloadUrl())).execute(); + return resp.getContent(); + } catch (IOException e) { + LOG.debug("Could not download file.", e); + return null; + } + } else { + // The file doesn't have any content stored on Drive. + return null; + } + } + + @Converter + public static String downloadContentAsString(com.google.api.services.drive.model.File fileMetadata, Exchange exchange) throws Exception { + InputStream is = download(fileMetadata, exchange); + if (is != null) { + return exchange.getContext().getTypeConverter().convertTo(String.class, exchange, is); + } + return null; + } + + private static Drive getClient(Exchange exchange) { + return exchange.getContext().getComponent("google-drive", GoogleDriveComponent.class).getClient(); + } } http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/InteractiveGoogleDriveClientFactory.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/InteractiveGoogleDriveClientFactory.java b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/InteractiveGoogleDriveClientFactory.java index a3965ac..f54f55f 100644 --- a/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/InteractiveGoogleDriveClientFactory.java +++ b/components/camel-google-drive/src/main/java/org/apache/camel/component/google/drive/InteractiveGoogleDriveClientFactory.java @@ -18,6 +18,9 @@ package org.apache.camel.component.google.drive; import java.util.Collection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; @@ -28,6 +31,7 @@ import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.drive.Drive; public class InteractiveGoogleDriveClientFactory implements GoogleDriveClientFactory { + private static final Logger LOG = LoggerFactory.getLogger(InteractiveGoogleDriveClientFactory.class); private NetHttpTransport transport; private JacksonFactory jsonFactory; private FileDataStoreFactory dataStoreFactory; @@ -45,8 +49,7 @@ public class InteractiveGoogleDriveClientFactory implements GoogleDriveClientFac credential = authorize(clientId, clientSecret, scopes); return new Drive.Builder(transport, jsonFactory, credential).setApplicationName(applicationName).build(); } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); + LOG.error("Could not create Google Drive client.", e); } return null; } http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterIntegrationTest.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterIntegrationTest.java b/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterIntegrationTest.java new file mode 100644 index 0000000..0e7d406 --- /dev/null +++ b/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterIntegrationTest.java @@ -0,0 +1,73 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.component.google.drive; + + +import java.io.InputStream; + +import org.apache.camel.builder.RouteBuilder; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.apache.camel.component.google.drive.internal.GoogleDriveApiCollection; +import org.apache.camel.component.google.drive.internal.DriveFilesApiMethod; +import org.apache.camel.component.mock.MockEndpoint; + +import com.google.api.services.drive.model.File; +import com.google.api.services.drive.model.FileList; + +/** + * Test class for com.google.api.services.drive.Drive$Files APIs. + */ +public class FileConverterIntegrationTest extends AbstractGoogleDriveTestSupport { + + private static final Logger LOG = LoggerFactory.getLogger(FileConverterIntegrationTest.class); + private static final String PATH_PREFIX = GoogleDriveApiCollection.getCollection().getApiName(DriveFilesApiMethod.class).getName(); + + @Override + public void setUp() throws Exception { + deleteDirectory("target/convertertest"); + super.setUp(); + } + + @Test + public void testFileConverter() throws Exception { + template.sendBodyAndHeader("file://target/convertertest", "Hello!", "CamelFileName", "greeting.txt"); + + MockEndpoint mock = getMockEndpoint("mock:result"); + mock.expectedMessageCount(1); + + assertMockEndpointsSatisfied(); + + File file = mock.getReceivedExchanges().get(0).getIn().getBody(com.google.api.services.drive.model.File.class); + + assertEquals("Hello!", context.getTypeConverter().convertTo(String.class, mock.getReceivedExchanges().get(0), file)); + + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + public void configure() { + from("file://target/convertertest?noop=true") + .convertBodyTo(File.class) + .to("google-drive://drive-files/insert?inBody=content") + .to("mock:result"); + } + }; + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterTest.java ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterTest.java b/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterTest.java deleted file mode 100644 index 9a0a83e..0000000 --- a/components/camel-google-drive/src/test/java/org/apache/camel/component/google/drive/FileConverterTest.java +++ /dev/null @@ -1,79 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.camel.component.google.drive; - - -import org.apache.camel.builder.RouteBuilder; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.apache.camel.component.google.drive.internal.GoogleDriveApiCollection; -import org.apache.camel.component.google.drive.internal.DriveFilesApiMethod; -import org.apache.camel.component.mock.MockEndpoint; - -import com.google.api.services.drive.model.File; -import com.google.api.services.drive.model.FileList; - -/** - * Test class for com.google.api.services.drive.Drive$Files APIs. - */ -public class FileConverterTest extends AbstractGoogleDriveTestSupport { - - private static final Logger LOG = LoggerFactory.getLogger(FileConverterTest.class); - private static final String PATH_PREFIX = GoogleDriveApiCollection.getCollection().getApiName(DriveFilesApiMethod.class).getName(); - - @Override - public void setUp() throws Exception { - deleteDirectory("target/convertertest"); - super.setUp(); - } - - @Test - public void testConverter() throws Exception { - template.sendBodyAndHeader("file://target/convertertest", "Hello!", "CamelFileName", "greeting.txt"); - - MockEndpoint mock = getMockEndpoint("mock:result"); - mock.expectedMessageCount(1); - - assertMockEndpointsSatisfied(); - - FileList fileList = mock.getReceivedExchanges().get(0).getIn().getBody(com.google.api.services.drive.model.FileList.class); - assertTrue(fileInList("greeting.txt", fileList)); - } - - private boolean fileInList(String fileName, FileList fileList) { - for (File f : fileList.getItems()) { - if (f.getTitle().equals(fileName)) { - return true; - } - } - return false; - } - - @Override - protected RouteBuilder createRouteBuilder() throws Exception { - return new RouteBuilder() { - public void configure() { - from("file://target/convertertest?noop=true") - // should convert from GenericFile to Google File here - .to("google-drive://drive-files/insert?inBody=content") - .to("google-drive://drive-files/list") - .to("mock:result"); - } - }; - } -} http://git-wip-us.apache.org/repos/asf/camel/blob/58a9ffb4/components/camel-google-drive/src/test/resources/test-options.properties ---------------------------------------------------------------------- diff --git a/components/camel-google-drive/src/test/resources/test-options.properties b/components/camel-google-drive/src/test/resources/test-options.properties index 710ec6a..445f90f 100644 --- a/components/camel-google-drive/src/test/resources/test-options.properties +++ b/components/camel-google-drive/src/test/resources/test-options.properties @@ -19,6 +19,7 @@ ## Login properties for Google Drive Component ##################################### ## Application client id and secret -clientId=907911893802-1tvr7lrt5f8k4sco2rigdo5kf4lfht4d.apps.googleusercontent.com -clientSecret=g53qS_MTceqexaoZC9YtTOI4 -applicationName=camel-google-drive/1.0 \ No newline at end of file +clientId= +clientSecret= +applicationName=camel-google-drive/1.0 +refreshToken=