aboutsummaryrefslogtreecommitdiffstats
path: root/mitmproxy
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@nullcube.com>2016-10-20 09:45:18 +1300
committerAldo Cortesi <aldo@nullcube.com>2016-10-20 09:45:18 +1300
commit1407830280383e50a8af848a0c564c4912df5a52 (patch)
tree99298b45cb4b34b36f3308e695944bc3a2e1df60 /mitmproxy
parent069119364d6490e52ba26f2d8001c6b2bf50ab7b (diff)
downloadmitmproxy-1407830280383e50a8af848a0c564c4912df5a52.tar.gz
mitmproxy-1407830280383e50a8af848a0c564c4912df5a52.tar.bz2
mitmproxy-1407830280383e50a8af848a0c564c4912df5a52.zip
netlib.human -> mitmproxy.utils.human
Diffstat (limited to 'mitmproxy')
-rw-r--r--mitmproxy/addons/dumper.py2
-rw-r--r--mitmproxy/tools/cmdline.py2
-rw-r--r--mitmproxy/tools/console/common.py2
-rw-r--r--mitmproxy/tools/console/flowdetailview.py2
-rw-r--r--mitmproxy/tools/console/statusbar.py2
-rw-r--r--mitmproxy/utils/human.py64
6 files changed, 69 insertions, 5 deletions
diff --git a/mitmproxy/addons/dumper.py b/mitmproxy/addons/dumper.py
index 04dfb42c..013fa337 100644
--- a/mitmproxy/addons/dumper.py
+++ b/mitmproxy/addons/dumper.py
@@ -8,7 +8,7 @@ from mitmproxy import contentviews
from mitmproxy import ctx
from mitmproxy import exceptions
from mitmproxy import flowfilter
-from netlib import human
+from mitmproxy.utils import human
from netlib import strutils
diff --git a/mitmproxy/tools/cmdline.py b/mitmproxy/tools/cmdline.py
index 41770631..b83694ef 100644
--- a/mitmproxy/tools/cmdline.py
+++ b/mitmproxy/tools/cmdline.py
@@ -5,7 +5,7 @@ from mitmproxy import exceptions
from mitmproxy import flowfilter
from mitmproxy import options
from mitmproxy import platform
-from netlib import human
+from mitmproxy.utils import human
from netlib import tcp
from mitmproxy import version
diff --git a/mitmproxy/tools/console/common.py b/mitmproxy/tools/console/common.py
index dc4cfe18..53411d17 100644
--- a/mitmproxy/tools/console/common.py
+++ b/mitmproxy/tools/console/common.py
@@ -10,7 +10,7 @@ import netlib
from mitmproxy.utils import lrucache
from mitmproxy.tools.console import signals
from mitmproxy import export
-from netlib import human
+from mitmproxy.utils import human
try:
import pyperclip
diff --git a/mitmproxy/tools/console/flowdetailview.py b/mitmproxy/tools/console/flowdetailview.py
index f13f9a1d..7591c3d1 100644
--- a/mitmproxy/tools/console/flowdetailview.py
+++ b/mitmproxy/tools/console/flowdetailview.py
@@ -1,7 +1,7 @@
import urwid
from mitmproxy.tools.console import common, searchable
-from netlib import human
+from mitmproxy.utils import human
def maybe_timestamp(base, attr):
diff --git a/mitmproxy/tools/console/statusbar.py b/mitmproxy/tools/console/statusbar.py
index 99f73727..ac41b213 100644
--- a/mitmproxy/tools/console/statusbar.py
+++ b/mitmproxy/tools/console/statusbar.py
@@ -6,7 +6,7 @@ import netlib.http.url
from mitmproxy.tools.console import common
from mitmproxy.tools.console import pathedit
from mitmproxy.tools.console import signals
-from netlib import human
+from mitmproxy.utils import human
class ActionBar(urwid.WidgetWrap):
diff --git a/mitmproxy/utils/human.py b/mitmproxy/utils/human.py
new file mode 100644
index 00000000..72e96d30
--- /dev/null
+++ b/mitmproxy/utils/human.py
@@ -0,0 +1,64 @@
+import datetime
+import time
+
+
+SIZE_TABLE = [
+ ("b", 1024 ** 0),
+ ("k", 1024 ** 1),
+ ("m", 1024 ** 2),
+ ("g", 1024 ** 3),
+ ("t", 1024 ** 4),
+]
+
+SIZE_UNITS = dict(SIZE_TABLE)
+
+
+def pretty_size(size):
+ for bottom, top in zip(SIZE_TABLE, SIZE_TABLE[1:]):
+ if bottom[1] <= size < top[1]:
+ suf = bottom[0]
+ lim = bottom[1]
+ x = round(size / lim, 2)
+ if x == int(x):
+ x = int(x)
+ return str(x) + suf
+ return "%s%s" % (size, SIZE_TABLE[0][0])
+
+
+def parse_size(s):
+ try:
+ return int(s)
+ except ValueError:
+ pass
+ for i in SIZE_UNITS.keys():
+ if s.endswith(i):
+ try:
+ return int(s[:-1]) * SIZE_UNITS[i]
+ except ValueError:
+ break
+ raise ValueError("Invalid size specification.")
+
+
+def pretty_duration(secs):
+ formatters = [
+ (100, "{:.0f}s"),
+ (10, "{:2.1f}s"),
+ (1, "{:1.2f}s"),
+ ]
+
+ for limit, formatter in formatters:
+ if secs >= limit:
+ return formatter.format(secs)
+ # less than 1 sec
+ return "{:.0f}ms".format(secs * 1000)
+
+
+def format_timestamp(s):
+ s = time.localtime(s)
+ d = datetime.datetime.fromtimestamp(time.mktime(s))
+ return d.strftime("%Y-%m-%d %H:%M:%S")
+
+
+def format_timestamp_with_milli(s):
+ d = datetime.datetime.fromtimestamp(s)
+ return d.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]