aboutsummaryrefslogtreecommitdiffstats
path: root/pathod
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-02-18 13:03:40 +0100
committerMaximilian Hils <git@maximilianhils.com>2016-02-18 13:03:40 +0100
commitd33d3663ecb166461d9cb5a78a29b44ee7a8fbb7 (patch)
treefe8856f65d1dafa946150c5acbaf6e942ba3c026 /pathod
parent294774d6f0dee95b02a93307ec493b111b7f171e (diff)
downloadmitmproxy-d33d3663ecb166461d9cb5a78a29b44ee7a8fbb7.tar.gz
mitmproxy-d33d3663ecb166461d9cb5a78a29b44ee7a8fbb7.tar.bz2
mitmproxy-d33d3663ecb166461d9cb5a78a29b44ee7a8fbb7.zip
combine projects
Diffstat (limited to 'pathod')
-rw-r--r--pathod/.jsbeautifyrc22
-rw-r--r--pathod/README.rst60
-rw-r--r--pathod/__init__.py (renamed from pathod/pathod/__init__.py)0
-rw-r--r--pathod/app.py (renamed from pathod/pathod/app.py)0
-rw-r--r--pathod/language/__init__.py (renamed from pathod/pathod/language/__init__.py)0
-rw-r--r--pathod/language/actions.py (renamed from pathod/pathod/language/actions.py)0
-rw-r--r--pathod/language/base.py (renamed from pathod/pathod/language/base.py)0
-rw-r--r--pathod/language/exceptions.py (renamed from pathod/pathod/language/exceptions.py)0
-rw-r--r--pathod/language/generators.py (renamed from pathod/pathod/language/generators.py)0
-rw-r--r--pathod/language/http.py (renamed from pathod/pathod/language/http.py)0
-rw-r--r--pathod/language/http2.py (renamed from pathod/pathod/language/http2.py)0
-rw-r--r--pathod/language/message.py (renamed from pathod/pathod/language/message.py)0
-rw-r--r--pathod/language/websockets.py (renamed from pathod/pathod/language/websockets.py)0
-rw-r--r--pathod/language/writer.py (renamed from pathod/pathod/language/writer.py)0
-rw-r--r--pathod/log.py (renamed from pathod/pathod/log.py)0
-rw-r--r--pathod/pathoc.py (renamed from pathod/pathod/pathoc.py)0
-rw-r--r--pathod/pathoc_cmdline.py (renamed from pathod/pathod/pathoc_cmdline.py)0
-rw-r--r--pathod/pathod.py (renamed from pathod/pathod/pathod.py)0
-rw-r--r--pathod/pathod_cmdline.py (renamed from pathod/pathod/pathod_cmdline.py)0
-rw-r--r--pathod/protocols/__init__.py (renamed from pathod/pathod/protocols/__init__.py)0
-rw-r--r--pathod/protocols/http.py (renamed from pathod/pathod/protocols/http.py)0
-rw-r--r--pathod/protocols/http2.py (renamed from pathod/pathod/protocols/http2.py)0
-rw-r--r--pathod/protocols/websockets.py (renamed from pathod/pathod/protocols/websockets.py)0
-rw-r--r--pathod/setup.py65
-rw-r--r--pathod/static/bootstrap.min.css (renamed from pathod/pathod/static/bootstrap.min.css)0
-rw-r--r--pathod/static/bootstrap.min.js (renamed from pathod/pathod/static/bootstrap.min.js)0
-rw-r--r--pathod/static/jquery-1.7.2.min.js (renamed from pathod/pathod/static/jquery-1.7.2.min.js)0
-rw-r--r--pathod/static/jquery.localscroll-min.js (renamed from pathod/pathod/static/jquery.localscroll-min.js)16
-rw-r--r--pathod/static/jquery.scrollTo-min.js (renamed from pathod/pathod/static/jquery.scrollTo-min.js)20
-rw-r--r--pathod/static/pathod.css (renamed from pathod/pathod/static/pathod.css)0
-rw-r--r--pathod/static/start_quote.png (renamed from pathod/pathod/static/start_quote.png)bin376 -> 376 bytes
-rw-r--r--pathod/static/syntax.css (renamed from pathod/pathod/static/syntax.css)0
-rw-r--r--pathod/static/torture.png (renamed from pathod/pathod/static/torture.png)bin108327 -> 108327 bytes
-rw-r--r--pathod/templates/about.html (renamed from pathod/pathod/templates/about.html)0
-rw-r--r--pathod/templates/docframe.html (renamed from pathod/pathod/templates/docframe.html)0
-rw-r--r--pathod/templates/docs_lang.html (renamed from pathod/pathod/templates/docs_lang.html)0
-rw-r--r--pathod/templates/docs_lang_requests.html (renamed from pathod/pathod/templates/docs_lang_requests.html)0
-rw-r--r--pathod/templates/docs_lang_responses.html (renamed from pathod/pathod/templates/docs_lang_responses.html)0
-rw-r--r--pathod/templates/docs_lang_websockets.html (renamed from pathod/pathod/templates/docs_lang_websockets.html)0
-rw-r--r--pathod/templates/docs_libpathod.html (renamed from pathod/pathod/templates/docs_libpathod.html)0
-rw-r--r--pathod/templates/docs_pathoc.html (renamed from pathod/pathod/templates/docs_pathoc.html)0
-rw-r--r--pathod/templates/docs_pathod.html (renamed from pathod/pathod/templates/docs_pathod.html)0
-rw-r--r--pathod/templates/docs_test.html (renamed from pathod/pathod/templates/docs_test.html)0
-rw-r--r--pathod/templates/download.html (renamed from pathod/pathod/templates/download.html)0
-rw-r--r--pathod/templates/examples_context.html (renamed from pathod/pathod/templates/examples_context.html)0
-rw-r--r--pathod/templates/examples_setup.html (renamed from pathod/pathod/templates/examples_setup.html)0
-rw-r--r--pathod/templates/examples_setupall.html (renamed from pathod/pathod/templates/examples_setupall.html)0
-rw-r--r--pathod/templates/frame.html (renamed from pathod/pathod/templates/frame.html)0
-rw-r--r--pathod/templates/index.html (renamed from pathod/pathod/templates/index.html)0
-rw-r--r--pathod/templates/layout.html (renamed from pathod/pathod/templates/layout.html)0
-rw-r--r--pathod/templates/log.html (renamed from pathod/pathod/templates/log.html)0
-rw-r--r--pathod/templates/onelog.html (renamed from pathod/pathod/templates/onelog.html)0
-rw-r--r--pathod/templates/request_preview.html (renamed from pathod/pathod/templates/request_preview.html)0
-rw-r--r--pathod/templates/request_previewform.html (renamed from pathod/pathod/templates/request_previewform.html)0
-rw-r--r--pathod/templates/response_preview.html (renamed from pathod/pathod/templates/response_preview.html)0
-rw-r--r--pathod/templates/response_previewform.html (renamed from pathod/pathod/templates/response_previewform.html)0
-rw-r--r--pathod/test.py (renamed from pathod/pathod/test.py)0
-rw-r--r--pathod/utils.py (renamed from pathod/pathod/utils.py)0
-rw-r--r--pathod/version.py (renamed from pathod/pathod/version.py)0
59 files changed, 18 insertions, 165 deletions
diff --git a/pathod/.jsbeautifyrc b/pathod/.jsbeautifyrc
deleted file mode 100644
index 725c15ad..00000000
--- a/pathod/.jsbeautifyrc
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "indent_size": 4,
- "indent_char": " ",
- "eol": "\n",
- "indent_level": 0,
- "indent_with_tabs": false,
- "preserve_newlines": true,
- "max_preserve_newlines": 10,
- "jslint_happy": false,
- "space_after_anon_function": false,
- "brace_style": "collapse",
- "keep_array_indentation": false,
- "keep_function_indentation": false,
- "space_before_conditional": true,
- "break_chained_methods": false,
- "eval_code": false,
- "unescape_strings": false,
- "wrap_line_length": 80,
- "wrap_attributes": "auto",
- "wrap_attributes_indent_size": 4,
- "end_with_newline": true
-}
diff --git a/pathod/README.rst b/pathod/README.rst
deleted file mode 100644
index fbedc5ba..00000000
--- a/pathod/README.rst
+++ /dev/null
@@ -1,60 +0,0 @@
-pathod
-^^^^^^
-
-|travis| |coveralls| |downloads| |latest_release| |python_versions|
-
-**pathod** is a collection of pathological tools for testing and torturing HTTP
-clients and servers. The project has three components:
-
-- ``pathod``, an pathological HTTP daemon.
-- ``pathoc``, a perverse HTTP client.
-- ``pathod.test``, an API for easily using pathod and pathoc in unit tests.
-
-Installing
-----------
-
-If you already have **pip** on your system, installing **pathod** and its
-dependencies is dead simple:
-
-.. code-block:: text
-
- pip install pathod
-
-Documentation
--------------
-
-The pathod documentation is self-hosted. Just fire up pathod, like so:
-
-.. code-block:: text
-
- ./pathod
-
-And then browse to:
-
-`<http://localhost:9999>`_
-
-You can always view the documentation for the latest release at the pathod
-website:
-
-`<http://pathod.net>`_
-
-
-.. |travis| image:: https://shields.mitmproxy.org/travis/mitmproxy/pathod/master.svg
- :target: https://travis-ci.org/mitmproxy/pathod
- :alt: Build Status
-
-.. |coveralls| image:: https://shields.mitmproxy.org/coveralls/mitmproxy/pathod/master.svg
- :target: https://coveralls.io/r/mitmproxy/pathod
- :alt: Coverage Status
-
-.. |downloads| image:: https://shields.mitmproxy.org/pypi/dm/pathod.svg?color=orange
- :target: https://pypi.python.org/pypi/pathod
- :alt: Downloads
-
-.. |latest_release| image:: https://shields.mitmproxy.org/pypi/v/pathod.svg
- :target: https://pypi.python.org/pypi/pathod
- :alt: Latest Version
-
-.. |python_versions| image:: https://shields.mitmproxy.org/pypi/pyversions/pathod.svg
- :target: https://pypi.python.org/pypi/pathod
- :alt: Supported Python versions \ No newline at end of file
diff --git a/pathod/pathod/__init__.py b/pathod/__init__.py
index e69de29b..e69de29b 100644
--- a/pathod/pathod/__init__.py
+++ b/pathod/__init__.py
diff --git a/pathod/pathod/app.py b/pathod/app.py
index c6b7eabc..c6b7eabc 100644
--- a/pathod/pathod/app.py
+++ b/pathod/app.py
diff --git a/pathod/pathod/language/__init__.py b/pathod/language/__init__.py
index 32199e08..32199e08 100644
--- a/pathod/pathod/language/__init__.py
+++ b/pathod/language/__init__.py
diff --git a/pathod/pathod/language/actions.py b/pathod/language/actions.py
index 34a9bafb..34a9bafb 100644
--- a/pathod/pathod/language/actions.py
+++ b/pathod/language/actions.py
diff --git a/pathod/pathod/language/base.py b/pathod/language/base.py
index a4302998..a4302998 100644
--- a/pathod/pathod/language/base.py
+++ b/pathod/language/base.py
diff --git a/pathod/pathod/language/exceptions.py b/pathod/language/exceptions.py
index 84ad3c02..84ad3c02 100644
--- a/pathod/pathod/language/exceptions.py
+++ b/pathod/language/exceptions.py
diff --git a/pathod/pathod/language/generators.py b/pathod/language/generators.py
index a17e7052..a17e7052 100644
--- a/pathod/pathod/language/generators.py
+++ b/pathod/language/generators.py
diff --git a/pathod/pathod/language/http.py b/pathod/language/http.py
index a82f12fe..a82f12fe 100644
--- a/pathod/pathod/language/http.py
+++ b/pathod/language/http.py
diff --git a/pathod/pathod/language/http2.py b/pathod/language/http2.py
index d5e3ca31..d5e3ca31 100644
--- a/pathod/pathod/language/http2.py
+++ b/pathod/language/http2.py
diff --git a/pathod/pathod/language/message.py b/pathod/language/message.py
index 33124856..33124856 100644
--- a/pathod/pathod/language/message.py
+++ b/pathod/language/message.py
diff --git a/pathod/pathod/language/websockets.py b/pathod/language/websockets.py
index ea7c870e..ea7c870e 100644
--- a/pathod/pathod/language/websockets.py
+++ b/pathod/language/websockets.py
diff --git a/pathod/pathod/language/writer.py b/pathod/language/writer.py
index 1a27e1ef..1a27e1ef 100644
--- a/pathod/pathod/language/writer.py
+++ b/pathod/language/writer.py
diff --git a/pathod/pathod/log.py b/pathod/log.py
index f203542f..f203542f 100644
--- a/pathod/pathod/log.py
+++ b/pathod/log.py
diff --git a/pathod/pathod/pathoc.py b/pathod/pathoc.py
index c0a33b62..c0a33b62 100644
--- a/pathod/pathod/pathoc.py
+++ b/pathod/pathoc.py
diff --git a/pathod/pathod/pathoc_cmdline.py b/pathod/pathoc_cmdline.py
index bf827a9a..bf827a9a 100644
--- a/pathod/pathod/pathoc_cmdline.py
+++ b/pathod/pathoc_cmdline.py
diff --git a/pathod/pathod/pathod.py b/pathod/pathod.py
index 55e75074..55e75074 100644
--- a/pathod/pathod/pathod.py
+++ b/pathod/pathod.py
diff --git a/pathod/pathod/pathod_cmdline.py b/pathod/pathod_cmdline.py
index c9272249..c9272249 100644
--- a/pathod/pathod/pathod_cmdline.py
+++ b/pathod/pathod_cmdline.py
diff --git a/pathod/pathod/protocols/__init__.py b/pathod/protocols/__init__.py
index 1a8c7dab..1a8c7dab 100644
--- a/pathod/pathod/protocols/__init__.py
+++ b/pathod/protocols/__init__.py
diff --git a/pathod/pathod/protocols/http.py b/pathod/protocols/http.py
index 1f1765cb..1f1765cb 100644
--- a/pathod/pathod/protocols/http.py
+++ b/pathod/protocols/http.py
diff --git a/pathod/pathod/protocols/http2.py b/pathod/protocols/http2.py
index a098a14e..a098a14e 100644
--- a/pathod/pathod/protocols/http2.py
+++ b/pathod/protocols/http2.py
diff --git a/pathod/pathod/protocols/websockets.py b/pathod/protocols/websockets.py
index 134d27bc..134d27bc 100644
--- a/pathod/pathod/protocols/websockets.py
+++ b/pathod/protocols/websockets.py
diff --git a/pathod/setup.py b/pathod/setup.py
deleted file mode 100644
index 23e26f42..00000000
--- a/pathod/setup.py
+++ /dev/null
@@ -1,65 +0,0 @@
-from setuptools import setup, find_packages
-from codecs import open
-import os
-import sys
-
-# Based on https://github.com/pypa/sampleproject/blob/master/setup.py
-# and https://python-packaging-user-guide.readthedocs.org/
-
-here = os.path.abspath(os.path.dirname(__file__))
-
-sys.path.append(os.path.join(here, "..", "netlib"))
-from pathod import version
-
-with open(os.path.join(here, 'README.rst'), encoding='utf-8') as f:
- long_description = f.read()
-
-setup(
- name="pathod",
- version=version.VERSION,
- description="A pathological HTTP/S daemon for testing and stressing clients.",
- long_description=long_description,
- url="http://pathod.net",
- author="Aldo Cortesi",
- author_email="aldo@corte.si",
- license="MIT",
- classifiers=[
- "License :: OSI Approved :: MIT License",
- "Development Status :: 5 - Production/Stable",
- "Operating System :: POSIX",
- "Programming Language :: Python",
- "Programming Language :: Python :: 2",
- "Programming Language :: Python :: 2.7",
- "Programming Language :: Python :: Implementation :: CPython",
- "Programming Language :: Python :: Implementation :: PyPy",
- "Topic :: Internet",
- "Topic :: Internet :: WWW/HTTP",
- "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
- "Topic :: Software Development :: Testing",
- "Topic :: Software Development :: Testing :: Traffic Generation",
- ],
- packages=find_packages(),
- include_package_data=True,
- entry_points={
- 'console_scripts': [
- "pathod = pathod.pathod_cmdline:go_pathod",
- "pathoc = pathod.pathoc_cmdline:go_pathoc"
- ]
- },
- install_requires=[
- "netlib=={}".format(version.VERSION),
- "requests>=2.9.1, <2.10",
- "Flask>=0.10.1, <0.11",
- "pyparsing>=2.1,<2.2"
- ],
- extras_require={
- 'dev': [
- "mock>=1.3.0, <1.4",
- "pytest>=2.8.0",
- "pytest-xdist>=1.14, <1.15",
- "pytest-cov>=2.2.1, <2.3",
- "pytest-timeout>=1.0.0, <1.1",
- "coveralls>=1.1, <1.2"
- ]
- }
-)
diff --git a/pathod/pathod/static/bootstrap.min.css b/pathod/static/bootstrap.min.css
index 2e79d91a..2e79d91a 100644
--- a/pathod/pathod/static/bootstrap.min.css
+++ b/pathod/static/bootstrap.min.css
diff --git a/pathod/pathod/static/bootstrap.min.js b/pathod/static/bootstrap.min.js
index 14356981..14356981 100644
--- a/pathod/pathod/static/bootstrap.min.js
+++ b/pathod/static/bootstrap.min.js
diff --git a/pathod/pathod/static/jquery-1.7.2.min.js b/pathod/static/jquery-1.7.2.min.js
index 16ad06c5..16ad06c5 100644
--- a/pathod/pathod/static/jquery-1.7.2.min.js
+++ b/pathod/static/jquery-1.7.2.min.js
diff --git a/pathod/pathod/static/jquery.localscroll-min.js b/pathod/static/jquery.localscroll-min.js
index 3f8d64cc..fa583a45 100644
--- a/pathod/pathod/static/jquery.localscroll-min.js
+++ b/pathod/static/jquery.localscroll-min.js
@@ -1,9 +1,9 @@
-/**
- * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
- * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
- * Dual licensed under MIT and GPL.
- * Date: 3/11/2009
- * @author Ariel Flesler
- * @version 1.2.7
- **/
+/**
+ * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 3/11/2009
+ * @author Ariel Flesler
+ * @version 1.2.7
+ **/
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery); \ No newline at end of file
diff --git a/pathod/pathod/static/jquery.scrollTo-min.js b/pathod/static/jquery.scrollTo-min.js
index 7d4001dc..8503c892 100644
--- a/pathod/pathod/static/jquery.scrollTo-min.js
+++ b/pathod/static/jquery.scrollTo-min.js
@@ -1,11 +1,11 @@
-/**
- * jQuery.ScrollTo - Easy element scrolling using jQuery.
- * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
- * Dual licensed under MIT and GPL.
- * Date: 3/9/2009
- * @author Ariel Flesler
- * @version 1.4.1
- *
- * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
- */
+/**
+ * jQuery.ScrollTo - Easy element scrolling using jQuery.
+ * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Dual licensed under MIT and GPL.
+ * Date: 3/9/2009
+ * @author Ariel Flesler
+ * @version 1.4.1
+ *
+ * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
+ */
;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery); \ No newline at end of file
diff --git a/pathod/pathod/static/pathod.css b/pathod/static/pathod.css
index 8b23b4d5..8b23b4d5 100644
--- a/pathod/pathod/static/pathod.css
+++ b/pathod/static/pathod.css
diff --git a/pathod/pathod/static/start_quote.png b/pathod/static/start_quote.png
index 8090f6e8..8090f6e8 100644
--- a/pathod/pathod/static/start_quote.png
+++ b/pathod/static/start_quote.png
Binary files differ
diff --git a/pathod/pathod/static/syntax.css b/pathod/static/syntax.css
index e371658a..e371658a 100644
--- a/pathod/pathod/static/syntax.css
+++ b/pathod/static/syntax.css
diff --git a/pathod/pathod/static/torture.png b/pathod/static/torture.png
index 50e245ea..50e245ea 100644
--- a/pathod/pathod/static/torture.png
+++ b/pathod/static/torture.png
Binary files differ
diff --git a/pathod/pathod/templates/about.html b/pathod/templates/about.html
index 340dc386..340dc386 100644
--- a/pathod/pathod/templates/about.html
+++ b/pathod/templates/about.html
diff --git a/pathod/pathod/templates/docframe.html b/pathod/templates/docframe.html
index 797de20a..797de20a 100644
--- a/pathod/pathod/templates/docframe.html
+++ b/pathod/templates/docframe.html
diff --git a/pathod/pathod/templates/docs_lang.html b/pathod/templates/docs_lang.html
index a1d22aef..a1d22aef 100644
--- a/pathod/pathod/templates/docs_lang.html
+++ b/pathod/templates/docs_lang.html
diff --git a/pathod/pathod/templates/docs_lang_requests.html b/pathod/templates/docs_lang_requests.html
index 81aff535..81aff535 100644
--- a/pathod/pathod/templates/docs_lang_requests.html
+++ b/pathod/templates/docs_lang_requests.html
diff --git a/pathod/pathod/templates/docs_lang_responses.html b/pathod/templates/docs_lang_responses.html
index 9a85ff1a..9a85ff1a 100644
--- a/pathod/pathod/templates/docs_lang_responses.html
+++ b/pathod/templates/docs_lang_responses.html
diff --git a/pathod/pathod/templates/docs_lang_websockets.html b/pathod/templates/docs_lang_websockets.html
index dd318e0b..dd318e0b 100644
--- a/pathod/pathod/templates/docs_lang_websockets.html
+++ b/pathod/templates/docs_lang_websockets.html
diff --git a/pathod/pathod/templates/docs_libpathod.html b/pathod/templates/docs_libpathod.html
index 8eb6846a..8eb6846a 100644
--- a/pathod/pathod/templates/docs_libpathod.html
+++ b/pathod/templates/docs_libpathod.html
diff --git a/pathod/pathod/templates/docs_pathoc.html b/pathod/templates/docs_pathoc.html
index d38c3a77..d38c3a77 100644
--- a/pathod/pathod/templates/docs_pathoc.html
+++ b/pathod/templates/docs_pathoc.html
diff --git a/pathod/pathod/templates/docs_pathod.html b/pathod/templates/docs_pathod.html
index 0d0ae933..0d0ae933 100644
--- a/pathod/pathod/templates/docs_pathod.html
+++ b/pathod/templates/docs_pathod.html
diff --git a/pathod/pathod/templates/docs_test.html b/pathod/templates/docs_test.html
index ecd84bc7..ecd84bc7 100644
--- a/pathod/pathod/templates/docs_test.html
+++ b/pathod/templates/docs_test.html
diff --git a/pathod/pathod/templates/download.html b/pathod/templates/download.html
index bd8950e8..bd8950e8 100644
--- a/pathod/pathod/templates/download.html
+++ b/pathod/templates/download.html
diff --git a/pathod/pathod/templates/examples_context.html b/pathod/templates/examples_context.html
index 20b02c39..20b02c39 100644
--- a/pathod/pathod/templates/examples_context.html
+++ b/pathod/templates/examples_context.html
diff --git a/pathod/pathod/templates/examples_setup.html b/pathod/templates/examples_setup.html
index b8419171..b8419171 100644
--- a/pathod/pathod/templates/examples_setup.html
+++ b/pathod/templates/examples_setup.html
diff --git a/pathod/pathod/templates/examples_setupall.html b/pathod/templates/examples_setupall.html
index 3308f6cb..3308f6cb 100644
--- a/pathod/pathod/templates/examples_setupall.html
+++ b/pathod/templates/examples_setupall.html
diff --git a/pathod/pathod/templates/frame.html b/pathod/templates/frame.html
index 4223458d..4223458d 100644
--- a/pathod/pathod/templates/frame.html
+++ b/pathod/templates/frame.html
diff --git a/pathod/pathod/templates/index.html b/pathod/templates/index.html
index a85a4040..a85a4040 100644
--- a/pathod/pathod/templates/index.html
+++ b/pathod/templates/index.html
diff --git a/pathod/pathod/templates/layout.html b/pathod/templates/layout.html
index af2857b1..af2857b1 100644
--- a/pathod/pathod/templates/layout.html
+++ b/pathod/templates/layout.html
diff --git a/pathod/pathod/templates/log.html b/pathod/templates/log.html
index b0484cb8..b0484cb8 100644
--- a/pathod/pathod/templates/log.html
+++ b/pathod/templates/log.html
diff --git a/pathod/pathod/templates/onelog.html b/pathod/templates/onelog.html
index c222ad60..c222ad60 100644
--- a/pathod/pathod/templates/onelog.html
+++ b/pathod/templates/onelog.html
diff --git a/pathod/pathod/templates/request_preview.html b/pathod/templates/request_preview.html
index 25d73679..25d73679 100644
--- a/pathod/pathod/templates/request_preview.html
+++ b/pathod/templates/request_preview.html
diff --git a/pathod/pathod/templates/request_previewform.html b/pathod/templates/request_previewform.html
index 91b5598a..91b5598a 100644
--- a/pathod/pathod/templates/request_previewform.html
+++ b/pathod/templates/request_previewform.html
diff --git a/pathod/pathod/templates/response_preview.html b/pathod/templates/response_preview.html
index bbce6d6c..bbce6d6c 100644
--- a/pathod/pathod/templates/response_preview.html
+++ b/pathod/templates/response_preview.html
diff --git a/pathod/pathod/templates/response_previewform.html b/pathod/templates/response_previewform.html
index d46043f3..d46043f3 100644
--- a/pathod/pathod/templates/response_previewform.html
+++ b/pathod/templates/response_previewform.html
diff --git a/pathod/pathod/test.py b/pathod/test.py
index 33a6b763..33a6b763 100644
--- a/pathod/pathod/test.py
+++ b/pathod/test.py
diff --git a/pathod/pathod/utils.py b/pathod/utils.py
index a1109a3c..a1109a3c 100644
--- a/pathod/pathod/utils.py
+++ b/pathod/utils.py
diff --git a/pathod/pathod/version.py b/pathod/version.py
index 63f60a8d..63f60a8d 100644
--- a/pathod/pathod/version.py
+++ b/pathod/version.py