private void addOAuthParams(OAuthRequest request, Token token) {
    request.addOAuthParameter(
        OAuthConstants.TIMESTAMP, api.getTimestampService().getTimestampInSeconds());
    request.addOAuthParameter(OAuthConstants.NONCE, api.getTimestampService().getNonce());
    request.addOAuthParameter(OAuthConstants.CONSUMER_KEY, config.getApiKey());
    request.addOAuthParameter(
        OAuthConstants.SIGN_METHOD, api.getSignatureService().getSignatureMethod());
    request.addOAuthParameter(OAuthConstants.VERSION, getVersion());
    if (config.hasScope()) {
      request.addOAuthParameter(OAuthConstants.SCOPE, config.getScope());
    }
    request.addOAuthParameter(OAuthConstants.SIGNATURE, getSignature(request, token));

    config.log(
        "appended additional OAuth parameters: " + MapUtils.toString(request.getOauthParameters()));
  }
  private void appendSignature(OAuthRequest request) {
    switch (config.getSignatureType()) {
      case Header:
        config.log("using Http Header signature");

        String oauthHeader = api.getHeaderExtractor().extract(request);
        request.addHeader(OAuthConstants.HEADER, oauthHeader);
        break;
      case QueryString:
        config.log("using Querystring signature");

        for (Map.Entry<String, String> entry : request.getOauthParameters().entrySet()) {
          request.addQuerystringParameter(entry.getKey(), entry.getValue());
        }
        break;
    }
  }