@Override public String getAuthorizationUrl(String responseType, String apiKey, String callback, String scope, String state, Map<String, String> additionalParams) { final ParameterList parameters = new ParameterList(additionalParams); parameters.add(OAuthConstants.RESPONSE_TYPE, isOob(callback) ? "pin" : "code"); parameters.add(OAuthConstants.CLIENT_ID, apiKey); if (callback != null) { parameters.add(OAuthConstants.REDIRECT_URI, callback); } if (scope != null) { parameters.add(OAuthConstants.SCOPE, scope); } if (state != null) { parameters.add(OAuthConstants.STATE, state); } return parameters.appendTo("https://api.imgur.com/oauth2/authorize"); }
private ParameterList parseQueryParams() throws UnsupportedEncodingException { ParameterList params = new ParameterList(); String queryString = URI.create(getCompleteUrl()).getQuery(); if (queryString == null) { return params; } for (String param : queryString.split("&")) { String pair[] = param.split("="); String key = URLDecoder.decode(pair[0], "UTF-8"); String value = ""; if (pair.length > 1) { value = URLDecoder.decode(pair[1], "UTF-8"); } params.add(new String(key), new String(value)); } return params; }
@Override public ParameterList getQueryStringParams() { try { return parseQueryParams(); } catch (UnsupportedEncodingException e) { return new ParameterList(); } }
@Override public void signRequest(String accessToken, OAuthRequest request) { //sig = lower(md5( sorted_request_params_composed_string + md5(access_token + application_secret_key))) try { final String tokenDigest = md5(accessToken + getApiSecret()); final ParameterList queryParams = request.getQueryStringParams(); queryParams.addAll(request.getBodyParams()); final List<Parameter> allParams = queryParams.getParams(); Collections.sort(allParams); final StringBuilder stringParams = new StringBuilder(); for (Parameter param : allParams) { stringParams.append(param.getKey()) .append('=') .append(param.getValue()); } final String sigSource = URLDecoder.decode(stringParams.toString(), "UTF-8") + tokenDigest; request.addQuerystringParameter("sig", md5(sigSource).toLowerCase()); super.signRequest(accessToken, request); } catch (UnsupportedEncodingException unex) { throw new IllegalStateException(unex); } }
private ParameterList parseEntityParams() { cz.msebera.android.httpclient.HttpEntity entity = null; List<cz.msebera.android.httpclient.NameValuePair> parameters = null; try{ entity = ((HttpEntityEnclosingRequestBase) httpUriRequest).getEntity(); parameters = new ArrayList<NameValuePair>( URLEncodedUtils.parse(entity)); } catch (Exception e) { return new ParameterList(); } ParameterList list = new ParameterList(); for (NameValuePair pair : parameters) { list.add(pair.getName(), pair.getValue()); } return list; }
@Override public ParameterList getBodyParams() { if (getVerb() == Verb.GET || getVerb() == Verb.DELETE) { return new ParameterList(); } else { return parseEntityParams(); } }