from cStringIO import StringIO
from datetime import datetime
-import humanize
import simplejson
from twisted.python import usage
import tahoe_mv
from allmydata.util.encodingutil import argv_to_abspath, argv_to_unicode, to_str, \
quote_local_unicode_path
-from allmydata.scripts.common_http import do_http, format_http_success, \
- format_http_error, BadResponse
+from allmydata.scripts.common_http import do_http, BadResponse
from allmydata.util import fileutil
from allmydata.util import configutil
from allmydata import uri
+from allmydata.util.abbreviate import abbreviate_space, abbreviate_time
INVITE_SEPARATOR = "+"
except Exception as e:
print >>options.stderr, ("Warning: unable to remove %s due to %s: %s"
% (quote_local_unicode_path(f), e.__class__.__name__, str(e)))
+ # if this doesn't return 0, then the CLI stuff fails
+ return 0
class StatusOptions(BasedirOptions):
nickname = None
self['node-url'] = f.read().strip()
-def _get_json_for_fragment(options, fragment):
+def _get_json_for_fragment(options, fragment, method='GET'):
nodeurl = options['node-url']
if nodeurl.endswith('/'):
nodeurl = nodeurl[:-1]
paddedname = (' ' * (longest - len(item['path']))) + item['path']
if 'failure_at' in item:
ts = datetime.fromtimestamp(item['started_at'])
- prog = 'Failed %s (%s)' % (humanize.naturaltime(now - ts), ts)
+ prog = 'Failed %s (%s)' % (abbreviate_time(now - ts), ts)
elif item['percent_done'] < 100.0:
if 'started_at' not in item:
prog = 'not yet started'
time_left = (100.0 - item['percent_done']) / rate
prog = '%2.1f%% done, around %s left' % (
item['percent_done'],
- humanize.naturaldelta(time_left),
+ abbreviate_time(time_left),
)
else:
time_left = None
keyname = verb + '_at'
if keyname in item:
when = datetime.fromtimestamp(item[keyname])
- prog = '%s %s' % (verb, humanize.naturaltime(now - when))
+ prog = '%s %s' % (verb, abbreviate_time(now - when))
break
print " %s: %s" % (paddedname, prog)
size = meta['size']
created = datetime.fromtimestamp(meta['metadata']['tahoe']['linkcrtime'])
version = meta['metadata']['version']
- nice_size = humanize.naturalsize(size)
- nice_created = humanize.naturaltime(now - created)
+ nice_size = abbreviate_space(size)
+ nice_created = abbreviate_time(now - created)
if captype != 'filenode':
print "%20s: error, should be a filecap" % name
continue
size = meta['size']
created = datetime.fromtimestamp(meta['metadata']['tahoe']['linkcrtime'])
version = meta['metadata']['version']
- nice_size = humanize.naturalsize(size)
- nice_created = humanize.naturaltime(now - created)
+ nice_size = abbreviate_space(size)
+ nice_created = abbreviate_time(now - created)
print " %s (%s): %s, version=%s, created %s" % (n, nice_size, status, version, nice_created)
- magicdata = _get_json_for_fragment(options, 'magic_folder?t=json')
+ with open(os.path.join(nodedir, u'private', u'api_auth_token'), 'rb') as f:
+ token = f.read()
+ magicdata = _get_json_for_fragment(
+ options,
+ 'magic_folder?t=json&token=' + token,
+ method='POST',
+ )
if len(magicdata):
uploads = [item for item in magicdata if item['kind'] == 'upload']
downloads = [item for item in magicdata if item['kind'] == 'download']