View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  package org.opencastproject.publication.youtube.auth;
23  
24  import com.google.api.client.auth.oauth2.StoredCredential;
25  import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
26  import com.google.api.client.util.store.DataStore;
27  
28  import java.io.IOException;
29  
30  /**
31   * <code>OAuth2CredentialFactory</code> implementation is a factory class that returns
32   * <code>GoogleCredential</code> objects.
33   */
34  public interface OAuth2CredentialFactory {
35  
36    /**
37     * Returns a file-backed data store.
38     *
39     * @param id
40     *          unique identifier for the data store
41     * @param dataStoreDirectory
42     *          name of the data store directory
43     * @return file-backed data store
44     * @throws IOException
45     */
46    DataStore<StoredCredential> getDataStore(String id, String dataStoreDirectory) throws IOException;
47  
48    /**
49     * Returns a <code>GoogleCredential</code> from a data store. If one
50     * does not exist, a new <code>GoogleCredential</code> will be generated and
51     * persisted in the data store.
52     *
53     * @param datastore
54     *          a file or memory backed data store
55     * @param authContext
56     *          <code>ClientCredentials</code> object containing
57     *          the parameters needed to find an existing or create a new instance
58     *          of <code>GoogleCredential</code>
59     * @return Google-specific subclass of <code>Credential</code>
60     * @throws IOException if the default data store is not available
61     */
62    GoogleCredential getGoogleCredential(DataStore<StoredCredential> datastore, ClientCredentials authContext)
63            throws IOException;
64  
65    /**
66     * Returns a <code>GoogleCredential</code> from the default data store. If one
67     * does not exist, a new <code>GoogleCredential</code> will be generated and
68     * persisted in the data store.
69     *
70     * @return Google-specific subclass of <code>Credential</code>
71     * @throws IOException if the default data store is not available
72     */
73    GoogleCredential getGoogleCredential(ClientCredentials credentials) throws IOException;
74  
75  }