View Javadoc

1   /**
2    *       Copyright 2010 Newcastle University
3    *
4    *          http://research.ncl.ac.uk/smart/
5    *
6    * Licensed to the Apache Software Foundation (ASF) under one or more
7    * contributor license agreements.  See the NOTICE file distributed with
8    * this work for additional information regarding copyright ownership.
9    * The ASF licenses this file to You under the Apache License, Version 2.0
10   * (the "License"); you may not use this file except in compliance with
11   * the License.  You may obtain a copy of the License at
12   *
13   *      http://www.apache.org/licenses/LICENSE-2.0
14   *
15   * Unless required by applicable law or agreed to in writing, software
16   * distributed under the License is distributed on an "AS IS" BASIS,
17   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18   * See the License for the specific language governing permissions and
19   * limitations under the License.
20   */
21  
22  package org.apache.amber.oauth2.client;
23  
24  import java.util.HashMap;
25  import java.util.Map;
26  
27  import org.apache.amber.oauth2.client.request.OAuthClientRequest;
28  import org.apache.amber.oauth2.client.response.OAuthAccessTokenResponse;
29  import org.apache.amber.oauth2.client.response.OAuthClientResponse;
30  import org.apache.amber.oauth2.client.response.OAuthJSONAccessTokenResponse;
31  import org.apache.amber.oauth2.common.OAuth;
32  import org.apache.amber.oauth2.common.exception.OAuthProblemException;
33  import org.apache.amber.oauth2.common.exception.OAuthSystemException;
34  
35  /**
36   * OAuth Client - exposes a high-level API for Client Applications
37   *
38   *
39   *
40   *
41   */
42  public class OAuthClient {
43  
44      protected HttpClient httpClient;
45  
46      public OAuthClient(HttpClient oauthClient) {
47          this.httpClient = oauthClient;
48      }
49  
50      public <T extends OAuthAccessTokenResponse> T accessToken(
51          OAuthClientRequest request,
52          Class<T> responseClass)
53          throws OAuthSystemException, OAuthProblemException {
54  
55          return accessToken(request, OAuth.HttpMethod.POST, responseClass);
56      }
57  
58      public <T extends OAuthAccessTokenResponse> T accessToken(
59          OAuthClientRequest request, String requestMethod, Class<T> responseClass)
60          throws OAuthSystemException, OAuthProblemException {
61  
62          Map<String, String> headers = new HashMap<String, String>();
63          headers.put(OAuth.HeaderType.CONTENT_TYPE, OAuth.ContentType.URL_ENCODED);
64  
65          return httpClient.execute(request, headers, requestMethod, responseClass);
66      }
67  
68      public OAuthJSONAccessTokenResponse accessToken(
69          OAuthClientRequest request)
70          throws OAuthSystemException, OAuthProblemException {
71          return accessToken(request, OAuthJSONAccessTokenResponse.class);
72      }
73  
74      public OAuthJSONAccessTokenResponse accessToken(
75          OAuthClientRequest request, String requestMethod)
76          throws OAuthSystemException, OAuthProblemException {
77          return accessToken(request, requestMethod, OAuthJSONAccessTokenResponse.class);
78      }
79      
80      public  <T extends OAuthClientResponse> T resource(OAuthClientRequest request, String requestMethod,Class<T> responseClass) throws OAuthSystemException, OAuthProblemException{
81      	return httpClient.execute(request, null, requestMethod, responseClass);     
82      }
83  
84      public void shutdown() {
85          httpClient.shutdown();
86      }
87  }