[shotwell/wip/flickr-description: 2/5] oauth: Fix base signature string encoding



commit 36c58f4848f8c0dabeefd2a0ae809b2afcd8a8ac
Author: Jens Georg <mail jensge org>
Date:   Thu Mar 12 00:06:45 2020 +0100

    oauth: Fix base signature string encoding

 plugins/common/OAuth1Support.vala |  2 +-
 plugins/common/RESTSupport.vala   | 10 ++++++----
 2 files changed, 7 insertions(+), 5 deletions(-)
---
diff --git a/plugins/common/OAuth1Support.vala b/plugins/common/OAuth1Support.vala
index 2a79a6c7..009bc8a7 100644
--- a/plugins/common/OAuth1Support.vala
+++ b/plugins/common/OAuth1Support.vala
@@ -209,7 +209,7 @@ namespace Publishing.RESTSupport.OAuth1 {
         }
 
         public string get_authorization_header_string() {
-            return "OAuth " + Argument.serialize_list(auth_header_fields, true, ", ");
+            return "OAuth " + Argument.serialize_list(auth_header_fields, false, true, ", ");
         }
 
         public void authorize() {
diff --git a/plugins/common/RESTSupport.vala b/plugins/common/RESTSupport.vala
index 19175256..6aa2b7ab 100644
--- a/plugins/common/RESTSupport.vala
+++ b/plugins/common/RESTSupport.vala
@@ -126,11 +126,11 @@ public class Argument {
         this.value = value;
     }
 
-    public static string serialize_list(Argument[] args, bool escape = false, string? separator = "&") {
+    public static string serialize_list(Argument[] args, bool encode = true, bool escape = false, string? 
separator = "&") {
         var builder = new StringBuilder("");
 
         foreach (var arg in args) {
-            builder.append(arg.to_string(escape));
+            builder.append(arg.to_string(escape, encode));
             builder.append(separator);
         }
 
@@ -153,8 +153,10 @@ public class Argument {
         return sorted_args.to_array();
     }
 
-    public string to_string (bool escape = false) {
-        return "%s=%s%s%s".printf (this.key, escape ? "\"" : "", this.value, escape ? "\"" : "");
+    public string to_string (bool escape = false, bool encode = false) {
+        return "%s=%s%s%s".printf (this.key, escape ? "\"" : "",
+            encode ? Soup.URI.encode(this.value, OAuth1.ENCODE_RFC_3986_EXTRA) : this.value,
+            escape ? "\"" : "");
     }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]