/** * 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.mail; import java.util.Arrays; import java.util.List; import com.google.api.services.gmail.GmailScopes; import org.apache.camel.component.google.mail.internal.GoogleMailApiName; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriParams; import org.apache.camel.spi.UriPath; /** * Component configuration for GoogleMail component. */ @UriParams public class GoogleMailConfiguration { private static final List<String> DEFAULT_SCOPES = Arrays.asList(GmailScopes.GMAIL_COMPOSE, GmailScopes.GMAIL_MODIFY, GmailScopes.MAIL_GOOGLE_COM); @UriPath @Metadata(required = "true") private GoogleMailApiName apiName; @UriPath(enums = "attachments,create,delete,get,getProfile,gmailImport,insert,list,modify,patch,send,trash,untrash,update") @Metadata(required = "true") private String methodName; @UriParam private List<String> scopes = DEFAULT_SCOPES; @UriParam private String clientId; @UriParam private String clientSecret; @UriParam private String accessToken; @UriParam private String refreshToken; @UriParam private String applicationName; public GoogleMailApiName getApiName() { return apiName; } /** * What kind of operation to perform */ public void setApiName(GoogleMailApiName apiName) { this.apiName = apiName; } public String getMethodName() { return methodName; } /** * What sub operation to use for the selected operation */ public void setMethodName(String methodName) { this.methodName = methodName; } public String getClientId() { return clientId; } /** * Client ID of the mail application */ public void setClientId(String clientId) { this.clientId = clientId; } public String getClientSecret() { return clientSecret; } /** * Client secret of the mail application */ public void setClientSecret(String clientSecret) { this.clientSecret = clientSecret; } public String getAccessToken() { return accessToken; } /** * OAuth 2 access token. This typically expires after an hour so refreshToken is recommended for long term usage. */ public void setAccessToken(String accessToken) { this.accessToken = accessToken; } public String getRefreshToken() { return refreshToken; } /** * 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. */ public void setRefreshToken(String refreshToken) { this.refreshToken = refreshToken; } public String getApplicationName() { return applicationName; } /** * Google mail application name. Example would be "camel-google-mail/1.0" */ public void setApplicationName(String applicationName) { this.applicationName = applicationName; } public List<String> getScopes() { return scopes; } /** * Specifies the level of permissions you want a mail application to have to a user account. See https://developers.google.com/gmail/api/auth/scopes for more info. */ public void setScopes(List<String> scopes) { this.scopes = scopes; } }