GraniteApi.java
3.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* org.scribe.builder.api.DefaultApi20
* org.scribe.extractors.AccessTokenExtractor
* org.scribe.extractors.JsonTokenExtractor
* org.scribe.model.OAuthConfig
* org.scribe.model.OAuthRequest
* org.scribe.model.Response
* org.scribe.model.Token
* org.scribe.model.Verb
* org.scribe.model.Verifier
* org.scribe.oauth.OAuth20ServiceImpl
* org.scribe.oauth.OAuthService
* org.scribe.utils.OAuthEncoder
*/
package com.adobe.granite.auth.oauth.impl;
import org.scribe.builder.api.DefaultApi20;
import org.scribe.extractors.AccessTokenExtractor;
import org.scribe.extractors.JsonTokenExtractor;
import org.scribe.model.OAuthConfig;
import org.scribe.model.OAuthRequest;
import org.scribe.model.Response;
import org.scribe.model.Token;
import org.scribe.model.Verb;
import org.scribe.model.Verifier;
import org.scribe.oauth.OAuth20ServiceImpl;
import org.scribe.oauth.OAuthService;
import org.scribe.utils.OAuthEncoder;
public class GraniteApi
extends DefaultApi20 {
private String authorizationUrl;
private String tokenUrl;
private static final String AUTHORIZE_URL = "?client_id=%s&redirect_uri=%s&response_type=code";
private static final String SCOPED_AUTHORIZE_URL = "?client_id=%s&redirect_uri=%s&response_type=code&scope=%s";
public void setAccessTokenEndpoint(String tokenUrl) {
this.tokenUrl = tokenUrl;
}
public String getAccessTokenEndpoint() {
return this.tokenUrl;
}
public void setAuthorizationUrl(String authorizationUrl) {
this.authorizationUrl = authorizationUrl;
}
public String getAuthorizationUrl(OAuthConfig config) {
if (config.hasScope()) {
return this.authorizationUrl + String.format("?client_id=%s&redirect_uri=%s&response_type=code&scope=%s", config.getApiKey(), OAuthEncoder.encode((String)config.getCallback()), OAuthEncoder.encode((String)config.getScope()));
}
return this.authorizationUrl + String.format("?client_id=%s&redirect_uri=%s&response_type=code", config.getApiKey(), OAuthEncoder.encode((String)config.getCallback()));
}
public OAuthService createService(final OAuthConfig config) {
return new OAuth20ServiceImpl(this, config){
public Token getAccessToken(Token requestToken, Verifier verifier) {
OAuthRequest request = new OAuthRequest(GraniteApi.this.getAccessTokenVerb(), GraniteApi.this.getAccessTokenEndpoint());
request.addHeader("Content-Type", "application/x-www-form-urlencoded");
request.addBodyParameter("grant_type", "authorization_code");
request.addBodyParameter("client_id", config.getApiKey());
request.addBodyParameter("client_secret", config.getApiSecret());
request.addBodyParameter("code", verifier.getValue());
request.addBodyParameter("redirect_uri", config.getCallback());
if (config.hasScope()) {
request.addBodyParameter("scope", config.getScope());
}
Response response = request.send();
return GraniteApi.this.getAccessTokenExtractor().extract(response.getBody());
}
public void signRequest(Token accessToken, OAuthRequest request) {
request.addHeader("Authorization", "Bearer " + accessToken.getToken());
}
};
}
public Verb getAccessTokenVerb() {
return Verb.POST;
}
public AccessTokenExtractor getAccessTokenExtractor() {
return new JsonTokenExtractor();
}
}