public String normalize()

in src/main/java/com/twitter/joauth/Normalizer.java [76:133]


    public String normalize(
        String scheme,
        String host,
        int port,
        String verb,
        String path,
        List<Request.Pair> params,
        OAuthParams.OAuth1Params oAuth1Params
    ) {

      // We only need the stringbuilder for the duration of this method
      StringBuilder paramsBuilder = new StringBuilder(512);

      // first, concatenate the params and the oAuth1Params together.
      // the parameters are already URLEncoded, so we leave them alone
      ArrayList<Request.Pair> sigParams = new ArrayList<Request.Pair>();
      sigParams.addAll(params);
      sigParams.addAll(oAuth1Params.toList(false));

      Collections.sort(sigParams, new Comparator<Request.Pair>() {
        @Override
        public int compare(Request.Pair thisPair, Request.Pair thatPair) {
          // sort params first by key, then by value
          int keyCompare = thisPair.key.compareTo(thatPair.key);
          if (keyCompare == 0) {
            return thisPair.value.compareTo(thatPair.value);
          } else {
            return keyCompare;
          }
        }
      });

      if (!sigParams.isEmpty()) {
        Request.Pair head = sigParams.get(0);
        paramsBuilder.append(head.key).append('=').append(head.value);
        for (int i=1; i<sigParams.size(); i++) {
          Request.Pair pair = sigParams.get(i);
          paramsBuilder.append('&').append(pair.key).append('=').append(pair.value);
        }
      }

      StringBuilder requestUrlBuilder = new StringBuilder(512);
      requestUrlBuilder.append(scheme.toLowerCase());
      requestUrlBuilder.append("://");
      requestUrlBuilder.append(host.toLowerCase());
      if (includePortString(port, scheme)) {
        requestUrlBuilder.append(":").append(port);
      }
      requestUrlBuilder.append(path);

      StringBuilder normalizedBuilder = new StringBuilder(512);

      normalizedBuilder.append(verb.toUpperCase());
      normalizedBuilder.append('&').append(UrlCodec.encode(requestUrlBuilder.toString()));
      normalizedBuilder.append('&').append(UrlCodec.encode(paramsBuilder.toString()));

      return normalizedBuilder.toString();
    }