Skip to content

Commit 9a99a44

Browse files
add request 'tuners' for access and request token calls
1 parent b8ca491 commit 9a99a44

File tree

3 files changed

+59
-18
lines changed

3 files changed

+59
-18
lines changed

src/main/java/org/scribe/model/Request.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,13 @@
1313
*
1414
* @author Pablo Fernandez
1515
*/
16-
class Request
16+
public class Request
1717
{
1818
private static final String CONTENT_LENGTH = "Content-Length";
1919
private static final String CONTENT_TYPE = "Content-Type";
20+
private static RequestTuner NOOP = new RequestTuner() {
21+
@Override public void tune(Request _){}
22+
};
2023
public static final String DEFAULT_CONTENT_TYPE = "application/x-www-form-urlencoded";
2124

2225
private String url;
@@ -54,19 +57,24 @@ public Request(Verb verb, String url)
5457
* @throws RuntimeException
5558
* if the connection cannot be created.
5659
*/
57-
public Response send()
60+
public Response send(RequestTuner tuner)
5861
{
5962
try
6063
{
6164
createConnection();
62-
return doSend();
65+
return doSend(tuner);
6366
}
6467
catch (Exception e)
6568
{
6669
throw new OAuthConnectionException(e);
6770
}
6871
}
6972

73+
public Response send()
74+
{
75+
return send(NOOP);
76+
}
77+
7078
private void createConnection() throws IOException
7179
{
7280
String completeUrl = getCompleteUrl();
@@ -87,7 +95,7 @@ public String getCompleteUrl()
8795
return querystringParams.appendTo(url);
8896
}
8997

90-
Response doSend() throws IOException
98+
Response doSend(RequestTuner tuner) throws IOException
9199
{
92100
connection.setRequestMethod(this.verb.name());
93101
if (connectTimeout != null)
@@ -103,6 +111,7 @@ Response doSend() throws IOException
103111
{
104112
addBody(connection, getByteBodyContents());
105113
}
114+
tuner.tune(this);
106115
return new Response(connection);
107116
}
108117

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.scribe.model;
2+
3+
public abstract class RequestTuner
4+
{
5+
public abstract void tune(Request request);
6+
}

src/main/java/org/scribe/oauth/OAuth10aServiceImpl.java

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ public OAuth10aServiceImpl(DefaultApi10a api, OAuthConfig config)
3535
* {@inheritDoc}
3636
*/
3737
public Token getRequestToken(int timeout, TimeUnit unit)
38+
{
39+
return getRequestToken(new TimeoutTuner(timeout, unit));
40+
}
41+
42+
public Token getRequestToken()
43+
{
44+
return getRequestToken(2, TimeUnit.SECONDS);
45+
}
46+
47+
public Token getRequestToken(RequestTuner tuner)
3848
{
3949
config.log("obtaining request token from " + api.getRequestTokenEndpoint());
4050
OAuthRequest request = new OAuthRequest(api.getRequestTokenVerb(), api.getRequestTokenEndpoint());
@@ -45,20 +55,14 @@ public Token getRequestToken(int timeout, TimeUnit unit)
4555
appendSignature(request);
4656

4757
config.log("sending request...");
48-
request.setReadTimeout(timeout, unit);
49-
Response response = request.send();
58+
Response response = request.send(tuner);
5059
String body = response.getBody();
5160

5261
config.log("response status code: " + response.getCode());
5362
config.log("response body: " + body);
5463
return api.getRequestTokenExtractor().extract(body);
5564
}
5665

57-
public Token getRequestToken()
58-
{
59-
return getRequestToken(2, TimeUnit.SECONDS);
60-
}
61-
6266
private void addOAuthParams(OAuthRequest request, Token token)
6367
{
6468
request.addOAuthParameter(OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds());
@@ -76,6 +80,16 @@ private void addOAuthParams(OAuthRequest request, Token token)
7680
* {@inheritDoc}
7781
*/
7882
public Token getAccessToken(Token requestToken, Verifier verifier, int timeout, TimeUnit unit)
83+
{
84+
return getAccessToken(requestToken, verifier, new TimeoutTuner(timeout, unit));
85+
}
86+
87+
public Token getAccessToken(Token requestToken, Verifier verifier)
88+
{
89+
return getAccessToken(requestToken, verifier, 2, TimeUnit.SECONDS);
90+
}
91+
92+
public Token getAccessToken(Token requestToken, Verifier verifier, RequestTuner tuner)
7993
{
8094
config.log("obtaining access token from " + api.getAccessTokenEndpoint());
8195
OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
@@ -85,16 +99,10 @@ public Token getAccessToken(Token requestToken, Verifier verifier, int timeout,
8599
config.log("setting token to: " + requestToken + " and verifier to: " + verifier);
86100
addOAuthParams(request, requestToken);
87101
appendSignature(request);
88-
request.setReadTimeout(timeout, unit);
89-
Response response = request.send();
102+
Response response = request.send(tuner);
90103
return api.getAccessTokenExtractor().extract(response.getBody());
91104
}
92105

93-
public Token getAccessToken(Token requestToken, Verifier verifier)
94-
{
95-
return getAccessToken(requestToken, verifier, 2, TimeUnit.SECONDS);
96-
}
97-
98106
/**
99107
* {@inheritDoc}
100108
*/
@@ -159,4 +167,22 @@ private void appendSignature(OAuthRequest request)
159167
break;
160168
}
161169
}
170+
171+
private static class TimeoutTuner extends RequestTuner
172+
{
173+
private final int duration;
174+
private final TimeUnit unit;
175+
176+
public TimeoutTuner(int duration, TimeUnit unit)
177+
{
178+
this.duration = duration;
179+
this.unit = unit;
180+
}
181+
182+
@Override
183+
public void tune(Request request)
184+
{
185+
request.setReadTimeout(duration, unit);
186+
}
187+
}
162188
}

0 commit comments

Comments
 (0)