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 }