Author: simonetripodi
Date: Tue Feb 16 19:55:39 2010
New Revision: 910664
URL: http://svn.apache.org/viewvc?rev=910664&view=rev
Log:
added percent encoding algorithm implementation
Modified:
labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java
Modified:
labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java
URL:
http://svn.apache.org/viewvc/labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java?rev=910664&r1=910663&r2=910664&view=diff
==============================================================================
---
labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java
(original)
+++
labs/amber/signature-api/src/main/java/org/apache/labs/amber/signature/signers/AbstractMethodAlgorithm.java
Tue Feb 16 19:55:39 2010
@@ -17,7 +17,10 @@
package org.apache.labs.amber.signature.signers;
import java.net.URL;
+import java.nio.charset.Charset;
+import java.util.BitSet;
+import org.apache.commons.codec.net.URLCodec;
import org.apache.labs.amber.signature.descriptors.Service;
import org.apache.labs.amber.signature.message.RequestMessage;
import org.apache.labs.amber.signature.parameters.Parameter;
@@ -66,6 +69,37 @@
private static final String EMPTY = "";
/**
+ * The default {...@code UTF-8} character encoding.
+ */
+ private static final Charset UTF_8 = Charset.forName("UTF-8");
+
+ /**
+ * The {...@code RFC3986} unreserved chars.
+ */
+ private static final BitSet UNRESERVED_CHARS = new BitSet(256);
+
+ /**
+ * Static unreserved chars bit set initialization.
+ */
+ static {
+ for (byte b = 'A'; b <= 'Z'; b++) {
+ UNRESERVED_CHARS.set(b);
+ }
+ for (byte b = 'a'; b <= 'z'; b++) {
+ UNRESERVED_CHARS.set(b);
+ }
+ for (byte b = '0'; b <= '9'; b++) {
+ UNRESERVED_CHARS.set(b);
+ }
+
+ // special URL encoding chars
+ UNRESERVED_CHARS.set('-');
+ UNRESERVED_CHARS.set('.');
+ UNRESERVED_CHARS.set('_');
+ UNRESERVED_CHARS.set('~');
+ }
+
+ /**
* {...@inheritdoc}
*/
public final String calculate(S signingKey, String secretCredential,
Service service, RequestMessage message, Parameter...parameterList) throws
SignatureException {
@@ -173,9 +207,25 @@
.append(path)
.toString();
-
+ // TODO add missing algorithm part implementation
+ String requestParameters = null;
- return null;
+ return new StringBuilder(method)
+ .append('&')
+ .append(percentEncode(requestUrl))
+ .append('&')
+ .append(percentEncode(requestParameters))
+ .toString();
+ }
+
+ /**
+ * Applies the percent encoding algorithm to the input text.
+ *
+ * @param text the text has to be encoded.
+ * @return the encoded string.
+ */
+ private static String percentEncode(String text) {
+ return new String(URLCodec.encodeUrl(UNRESERVED_CHARS,
text.getBytes(UTF_8)), UTF_8);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]