Skip to content

Commit 1d9553f

Browse files
committed
send missed headers in async version (as in sync)
1 parent 0007d57 commit 1d9553f

File tree

2 files changed

+30
-28
lines changed

2 files changed

+30
-28
lines changed

changelog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* add response_type parameter to the ServiceBuilder/OAuthConfig to use not only "code" for authorization code
77
* remove Verifier object, we just need Strings, 'code' for OAuth2 and 'oauthVerifier' for OAuth1
88
* default HTTP verb for OAuth 2.0 Access Token EndPoint is POST (http://tools.ietf.org/html/rfc6749#section-3.2)
9+
* send missed headers in async version (as in sync)
910

1011
[2.3.0]
1112
* Stack Exchange authentication via OAuth 2.0 (stackoverflow.com, askubuntu.com, etc.).

scribejava-core/src/main/java/com/github/scribejava/core/model/OAuthRequestAsync.java

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,21 @@ public OAuthRequestAsync(Verb verb, String url, OAuthService service) {
3838
super(verb, url, service);
3939
}
4040

41+
private Map<String, Collection<String>> mapHeaders() {
42+
final Map<String, Collection<String>> mapped = new HashMap<>();
43+
44+
for (Map.Entry<String, String> header : getHeaders().entrySet()) {
45+
final String headerName = header.getKey();
46+
Collection<String> headerValues = mapped.get(headerName);
47+
if (headerValues == null) {
48+
headerValues = new ArrayList<>();
49+
mapped.put(headerName, headerValues);
50+
}
51+
headerValues.add(header.getValue());
52+
}
53+
return mapped;
54+
}
55+
4156
public <T> Future<T> sendAsync(OAuthAsyncRequestCallback<T> callback, ResponseConverter<T> converter) {
4257
return sendAsync(callback, converter, null);
4358
}
@@ -54,48 +69,26 @@ public <T> Future<T> sendAsync(OAuthAsyncRequestCallback<T> callback, ResponseCo
5469
}
5570
final String completeUrl = getCompleteUrl();
5671
final AsyncHttpClient.BoundRequestBuilder boundRequestBuilder;
72+
final AsyncHttpClient asyncHttpClient = service.getAsyncHttpClient();
5773
switch (getVerb()) {
5874
case GET:
59-
boundRequestBuilder = service.getAsyncHttpClient()
60-
.prepareGet(completeUrl)
61-
.setHeaders(mapHeaders());
62-
75+
boundRequestBuilder = asyncHttpClient.prepareGet(completeUrl);
6376
break;
6477
case POST:
65-
boundRequestBuilder = service.getAsyncHttpClient().preparePost(completeUrl)
66-
.setBody(getBodyContents())
67-
.setHeaders(mapHeaders());
68-
78+
boundRequestBuilder = asyncHttpClient.preparePost(completeUrl).setBody(getBodyContents());
6979
break;
7080
default:
7181
throw new IllegalArgumentException("message build error: unknown verb type");
7282
}
83+
84+
boundRequestBuilder.setHeaders(mapHeaders());
85+
7386
if (proxyServer != null) {
7487
boundRequestBuilder.setProxyServer(proxyServer);
7588
}
7689
return boundRequestBuilder.execute(new OAuthAsyncCompletionHandler<>(callback, converter));
7790
}
7891

79-
public Future<Response> sendAsync(OAuthAsyncRequestCallback<Response> callback) {
80-
return sendAsync(callback, RESPONSE_CONVERTER, null);
81-
}
82-
83-
public Future<Response> sendAsync(OAuthAsyncRequestCallback<Response> callback, ProxyServer proxyServer) {
84-
return sendAsync(callback, RESPONSE_CONVERTER, proxyServer);
85-
}
86-
87-
private Map<String, Collection<String>> mapHeaders() {
88-
final Map<String, String> headers = getHeaders();
89-
final Map<String, Collection<String>> mapped = new HashMap<>();
90-
91-
for(Map.Entry<String, String> entry: headers.entrySet()) {
92-
final ArrayList<String> list = new ArrayList<>();
93-
list.add(entry.getValue());
94-
mapped.put(entry.getKey(), list);
95-
}
96-
return mapped;
97-
}
98-
9992
private static class OAuthAsyncCompletionHandler<T> extends AsyncCompletionHandler<T> {
10093

10194
private final OAuthAsyncRequestCallback<T> callback;
@@ -123,6 +116,14 @@ public void onThrowable(Throwable t) {
123116
}
124117
};
125118

119+
public Future<Response> sendAsync(OAuthAsyncRequestCallback<Response> callback) {
120+
return sendAsync(callback, RESPONSE_CONVERTER, null);
121+
}
122+
123+
public Future<Response> sendAsync(OAuthAsyncRequestCallback<Response> callback, ProxyServer proxyServer) {
124+
return sendAsync(callback, RESPONSE_CONVERTER, proxyServer);
125+
}
126+
126127
public interface ResponseConverter<T> {
127128

128129
T convert(com.ning.http.client.Response response) throws IOException;

0 commit comments

Comments
 (0)