use of net.oauth.OAuth in project bigbluebutton by bigbluebutton.
the class HttpMessage method newRequest.
/**
* Construct an HTTP request from this OAuth message.
*
* @param style
* where to put the OAuth parameters, within the HTTP request
*/
public static HttpMessage newRequest(OAuthMessage from, ParameterStyle style) throws IOException {
final boolean isPost = OAuthMessage.POST.equalsIgnoreCase(from.method);
InputStream body = from.getBodyAsStream();
if (style == ParameterStyle.BODY && !(isPost && body == null)) {
style = ParameterStyle.QUERY_STRING;
}
String url = from.URL;
final List<Map.Entry<String, String>> headers = new ArrayList<Map.Entry<String, String>>(from.getHeaders());
switch(style) {
case QUERY_STRING:
url = OAuth.addParameters(url, from.getParameters());
break;
case BODY:
{
byte[] form = OAuth.formEncode(from.getParameters()).getBytes(from.getBodyEncoding());
headers.add(new OAuth.Parameter(CONTENT_TYPE, OAuth.FORM_ENCODED));
headers.add(new OAuth.Parameter(CONTENT_LENGTH, form.length + ""));
body = new ByteArrayInputStream(form);
break;
}
case AUTHORIZATION_HEADER:
headers.add(new OAuth.Parameter("Authorization", from.getAuthorizationHeader(null)));
// Find the non-OAuth parameters:
List<Map.Entry<String, String>> others = from.getParameters();
if (others != null && !others.isEmpty()) {
others = new ArrayList<Map.Entry<String, String>>(others);
for (Iterator<Map.Entry<String, String>> p = others.iterator(); p.hasNext(); ) {
if (p.next().getKey().startsWith("oauth_")) {
p.remove();
}
}
// Place the non-OAuth parameters elsewhere in the request:
if (isPost && body == null) {
byte[] form = OAuth.formEncode(others).getBytes(from.getBodyEncoding());
headers.add(new OAuth.Parameter(CONTENT_TYPE, OAuth.FORM_ENCODED));
headers.add(new OAuth.Parameter(CONTENT_LENGTH, form.length + ""));
body = new ByteArrayInputStream(form);
} else {
url = OAuth.addParameters(url, others);
}
}
break;
}
HttpMessage httpRequest = new HttpMessage(from.method, new URL(url), body);
httpRequest.headers.addAll(headers);
return httpRequest;
}
Aggregations