You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2012/01/06 22:51:27 UTC

svn commit: r1228423 - in /abdera/abdera2/common/src/main/java/org/apache/abdera2/common: http/OAuthUtil.java templates/MapContext.java

Author: jmsnell
Date: Fri Jan  6 21:51:27 2012
New Revision: 1228423

URL: http://svn.apache.org/viewvc?rev=1228423&view=rev
Log:
few tweaks to the new experiemental auth related stuff

Modified:
    abdera/abdera2/common/src/main/java/org/apache/abdera2/common/http/OAuthUtil.java
    abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MapContext.java

Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/http/OAuthUtil.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/http/OAuthUtil.java?rev=1228423&r1=1228422&r2=1228423&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/http/OAuthUtil.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/http/OAuthUtil.java Fri Jan  6 21:51:27 2012
@@ -15,6 +15,8 @@ import org.apache.abdera2.common.date.Da
 import org.apache.abdera2.common.iri.IRI;
 import org.apache.abdera2.common.misc.ExceptionHelper;
 import org.apache.abdera2.common.security.HashHelper;
+import org.apache.abdera2.common.templates.MapContext;
+import org.apache.abdera2.common.templates.Template;
 import org.apache.abdera2.common.text.CharUtils;
 import org.apache.abdera2.common.text.UrlEncoding;
 import org.apache.commons.codec.binary.Base64;
@@ -222,9 +224,7 @@ public final class OAuthUtil {
       return rsaSha1(key).get();
     }
 
-    public Authentication get() {
-      ImmutableMap<String,String> map = 
-        this.builder.build();
+    private String getSignature(ImmutableMap<String,String> map) {
       String signature = null;
       if (method != null) {
         switch(method) {
@@ -241,6 +241,12 @@ public final class OAuthUtil {
           break;
         }
       }
+      return signature;
+    }
+    
+    public Authentication get() {
+      ImmutableMap<String,String> map = 
+        this.builder.build();
       Authentication.Builder builder = 
         Authentication.make()
           .scheme("OAuth");
@@ -248,10 +254,42 @@ public final class OAuthUtil {
         if (include_additional || is_oauth_param.apply(entry))
           builder.param(entry.getKey(), escaped(entry.getValue()));
       }
+      String signature = getSignature(map);
       if (signature != null)
         builder.param("oauth_signature", signature);
       return builder.get();
     }
+    
+    public String getAsQuery() {
+      return get_query(false);
+    }
+    
+    public String getAsQueryFragment() {
+      return get_query(true);
+    }
+    
+    private String get_query(boolean fragment) {
+      ImmutableMap<String,String> map = 
+        this.builder.build();
+      Template template = buildTemplate(fragment,map);
+      String signature = getSignature(map);
+      MapContext ctx = new MapContext();
+      ctx.putAll(map);
+      if (signature != null) 
+        ctx.put("oauth_signature", signature);
+      return template.expand(ctx);
+    }
+    
+    private static final Joiner comma_joiner = Joiner.on(',');
+    
+    private Template buildTemplate(boolean fragment, ImmutableMap<String,String> map) {
+      StringBuilder buf = new StringBuilder("{");
+      buf.append(fragment?'&':'?');
+      buf.append(comma_joiner.join(map.keySet()));
+      if (map.size() > 0) buf.append(',');
+      buf.append("oauth_signature");
+      return new Template(buf.append("}").toString());
+    }
    
     private String hmac(Key key, byte[] mat) {
       try {

Modified: abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MapContext.java
URL: http://svn.apache.org/viewvc/abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MapContext.java?rev=1228423&r1=1228422&r2=1228423&view=diff
==============================================================================
--- abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MapContext.java (original)
+++ abdera/abdera2/common/src/main/java/org/apache/abdera2/common/templates/MapContext.java Fri Jan  6 21:51:27 2012
@@ -44,6 +44,18 @@ public class MapContext 
 
   private final boolean isiri;
 
+  public static MapContext with(Map<? extends String,? extends Object> map) {
+    MapContext ctx = new MapContext();
+    ctx.putAll(map);
+    return ctx;
+  }
+  
+  public static MapContext with(Map<? extends String,? extends Object> map, boolean isiri) {
+    MapContext ctx = new MapContext(isiri);
+    ctx.putAll(map);
+    return ctx;
+  }
+  
   public MapContext() {
     this.isiri = false;
   }