From 1673268f31001fbb443a658e2eb006abea7948b3 Mon Sep 17 00:00:00 2001
From: Daira Hopwood <daira@jacaranda.org>
Date: Tue, 20 Oct 2015 17:16:32 +0100
Subject: [PATCH] URIs are strs.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
---
 src/allmydata/scripts/magic_folder_cli.py | 12 ++++++++----
 src/allmydata/uri.py                      |  2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/allmydata/scripts/magic_folder_cli.py b/src/allmydata/scripts/magic_folder_cli.py
index 8227adda..ef0d76f6 100644
--- a/src/allmydata/scripts/magic_folder_cli.py
+++ b/src/allmydata/scripts/magic_folder_cli.py
@@ -109,24 +109,28 @@ def invite(options):
     if rc != 0:
         print >>options.stderr, "magic-folder: failed to mkdir\n"
         return rc
+
+    # FIXME this assumes caps are ASCII.
     dmd_write_cap = mkdir_options.stdout.getvalue().strip()
-    dmd_readonly_cap = unicode(uri.from_string(dmd_write_cap).get_readonly().to_string(), 'utf-8')
+    dmd_readonly_cap = uri.from_string(dmd_write_cap).get_readonly().to_string()
     if dmd_readonly_cap is None:
         print >>options.stderr, "magic-folder: failed to diminish dmd write cap\n"
         return 1
 
     magic_write_cap = get_aliases(options["node-directory"])[options.alias]
-    magic_readonly_cap = unicode(uri.from_string(magic_write_cap).get_readonly().to_string(), 'utf-8')
+    magic_readonly_cap = uri.from_string(magic_write_cap).get_readonly().to_string()
+
     # tahoe ln CLIENT_READCAP COLLECTIVE_WRITECAP/NICKNAME
     ln_options = _delegate_options(options, LnOptions())
-    ln_options.from_file = dmd_readonly_cap
-    ln_options.to_file = u"%s/%s" % (magic_write_cap, options.nickname)
+    ln_options.from_file = unicode(dmd_readonly_cap, 'utf-8')
+    ln_options.to_file = u"%s/%s" % (unicode(magic_write_cap, 'utf-8'), options.nickname)
     rc = tahoe_mv.mv(ln_options, mode="link")
     if rc != 0:
         print >>options.stderr, "magic-folder: failed to create link\n"
         print >>options.stderr, ln_options.stderr.getvalue()
         return rc
 
+    # FIXME: this assumes caps are ASCII.
     print >>options.stdout, "%s%s%s" % (magic_readonly_cap, INVITE_SEPARATOR, dmd_write_cap)
     return 0
 
diff --git a/src/allmydata/uri.py b/src/allmydata/uri.py
index 372e0b8b..4d6db482 100644
--- a/src/allmydata/uri.py
+++ b/src/allmydata/uri.py
@@ -730,7 +730,7 @@ ALLEGED_IMMUTABLE_PREFIX = 'imm.'
 
 def from_string(u, deep_immutable=False, name=u"<unknown name>"):
     if not isinstance(u, str):
-        raise TypeError("unknown URI type: %s.." % str(u)[:100])
+        raise TypeError("URI must be str: %r" % (u,))
 
     # We allow and check ALLEGED_READONLY_PREFIX or ALLEGED_IMMUTABLE_PREFIX
     # on all URIs, even though we would only strictly need to do so for caps of
-- 
2.45.2