[rygel] core: encode itemID base64
- From: Zeeshan Ali Khattak <zeeshanak src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [rygel] core: encode itemID base64
- Date: Mon, 28 Dec 2009 16:14:21 +0000 (UTC)
commit 7252bcdf32f118f6af6768378497aa1e9e28fe1b
Author: Jens Georg <mail jensge org>
Date: Mon Dec 7 15:31:53 2009 +0100
core: encode itemID base64
We need to encode the itemID base64 since it might contain slashes but the
context's HTTP server is created without SOUP_SERVER_RAW_PATHS enabled which
translates the URI encoded slashes to real slashes before handing the request
to us.
src/rygel/rygel-item-uri.vala | 16 ++++++++++++++--
1 files changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/src/rygel/rygel-item-uri.vala b/src/rygel/rygel-item-uri.vala
index 86466c6..70e88bf 100644
--- a/src/rygel/rygel-item-uri.vala
+++ b/src/rygel/rygel-item-uri.vala
@@ -45,7 +45,13 @@ internal class Rygel.ItemUri : Object {
for (int i = 1; i < parts.length - 1; i += 2) {
switch (parts[i]) {
case "item":
- this.item_id = Soup.URI.decode (parts[i + 1]);
+ StringBuilder sb = new StringBuilder ();
+ size_t len;
+ var data = Base64.decode (
+ Soup.URI.decode (parts[i + 1]),
+ out len);
+ sb.append_len ((string) data, (ssize_t) len);
+ this.item_id = sb.str;
break;
case "transcoded":
this.transcode_target = Soup.URI.decode (parts[i + 1]);
@@ -61,7 +67,13 @@ internal class Rygel.ItemUri : Object {
}
public string to_string() {
- string escaped = Uri.escape_string (item_id, "", true);
+ // there seems to be a problem converting strings properly to arrays
+ // you need to call to_utf8() and assign it to a variable to make it
+ // work properly
+ var data = this.item_id.to_utf8 ();
+ var escaped = Uri.escape_string (Base64.encode ((uchar[]) data),
+ "",
+ true);
string query = "/item/" + escaped;
if (transcode_target != null) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]