Skip to content

Commit

Permalink
Merge branch 'HH-27375' into 2.13
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreySumin committed Sep 21, 2012
2 parents 3958877 + 1011d3f commit 7cb4526
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 33 deletions.
43 changes: 25 additions & 18 deletions frontik/debug.xsl
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@
</xsl:variable>

<div class="textentry">
<pre class="textentry__head {$highlight} {$loglevel}">
<div class="textentry__head {$highlight} {$loglevel}">
<span title="{@msg}">
<xsl:value-of select="concat($loglevel,' ',@msg)"/>
</span>
</pre>
</div>
<xsl:apply-templates select="@exc_text"/>
</div>
</xsl:template>
Expand Down Expand Up @@ -111,6 +111,19 @@
</div>
</xsl:template>

<xsl:template match="entry[protobuf]">
<div class="textentry m-textentry__expandable">
<div onclick="toggle(this.parentNode)" class="textentry__head textentry__switcher">
<span title="{@msg}" class="textentry__head__expandtext">
<xsl:value-of select="@msg"/>
</span>
</div>
<pre class="details">
<xsl:apply-templates select="protobuf/node()" mode="color-xml"/>
</pre>
</div>
</xsl:template>

<xsl:template match="request">
<div>
<a class="servicelink" href="{url}" target="_blank">
Expand Down Expand Up @@ -218,16 +231,9 @@
</xsl:template>

<xsl:template match="param">
<table>
<tr>
<td class="param__name">
<xsl:value-of select="@name"/><xsl:text>&#160;=&#160;</xsl:text>
</td>
<td class="param__value">
<xsl:apply-templates select="str:tokenize(string(.), '&#0013;&#0010;')" mode="line"/>
</td>
</tr>
</table>
<div>
<xsl:value-of select="@name"/><xsl:text>&#160;=&#160;</xsl:text><xsl:value-of select="."/>
</div>
</xsl:template>


Expand All @@ -238,11 +244,16 @@
}
pre{
margin:0;
white-space: pre-wrap;
}
.body{
word-break: break-all;
}
.textentry{
padding-left:20px;
padding-right:20px;
margin-bottom:4px;
word-break: break-all;
}
.m-textentry__expandable{
padding-top:3px;
Expand All @@ -264,6 +275,8 @@
.textentry__switcher{
height:1.3em;
overflow:hidden;
white-space: nowrap;
text-overflow: ellipsis;
cursor:pointer;
}
.headers{
Expand All @@ -276,12 +289,6 @@
display:block;
}

.param__name{
vertical-align:top;
}
.param__value{
vertical-align:top;
}
.servicelink{
color:#666;
font-size:.8em;
Expand Down
41 changes: 27 additions & 14 deletions frontik/handler_xml_debug.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,30 @@
import lxml.etree as etree
import tornado.options
from lxml.builder import E
from frontik.util import get_query_parameters

log = logging.getLogger('XML_debug')

def response_to_xml(response):
headers = etree.Element("headers")
time_info = etree.Element("time_info")
content_type = response.headers.get('Content-Type','')

if 'text/html' in response.headers.get('Content-Type',''):
if 'text/html' in content_type:
try:
body = response.body.decode("utf-8").replace("\n", "\\n").replace("'", "\\'")
except Exception as e:
body = 'Cant show response body, ' + str(e)
else:
try:
body = etree.fromstring(response.body)
if 'json' in content_type:
body = json.dumps(json.loads(response.body), sort_keys = True, indent = 4)
elif 'protobuf' in content_type:
body = repr(response.body)
elif 'text/plain' in content_type:
body = response.body
else:
body = etree.fromstring(response.body)
except Exception as e:
body = 'Cant show response body, ' + str(e)

Expand All @@ -45,7 +54,7 @@ def response_to_xml(response):

return (
E.response(
E.body(body, content_type=response.headers.get('Content-Type','')),
E.body(body, content_type = content_type),
E.code(str(response.code)),
E.effective_url(response.effective_url),
E.error(str(response.error)),
Expand All @@ -72,26 +81,27 @@ def request_to_xml(request):
cookies.append(E.cookie(_cookies[cookie].value, name = cookie))

params = etree.Element("params")
query = urlparse.parse_qs(urlparse.urlparse(request.url).query, True)
query = get_query_parameters(request.url)
for name, values in query.iteritems():
for value in values:
params.append(E.param(unicode(value, "utf-8"), name = name))

body = etree.Element("body", content_type = request.headers.get('Content-Type',''))
content_type = request.headers.get('Content-Type','')
body = etree.Element("body", content_type = content_type)

if request.body:
if 'json' in request.headers.get('Content-Type',''):
try:
body.text = json.dumps(json.loads(request.body), sort_keys=True, indent=4)
except Exception as e:
body.text = "Cant show request body, " + str(e)
else:
try:
try:
if 'json' in content_type:
body.text = json.dumps(json.loads(request.body), sort_keys = True, indent = 4)
elif 'protobuf' in content_type:
body.text = repr(request.body)
else:
body_query = urlparse.parse_qs(str(request.body), True)
for name, values in body_query.iteritems():
for value in values:
body.append(E.param(value.decode("utf-8"), name = name))
except Exception as e:
body.text = "Cant show request body, " + str(e)
except Exception as e:
body.text = 'Cant show request body, ' + str(e)

return (
E.request(
Expand Down Expand Up @@ -157,6 +167,9 @@ def handle(self, record):
# etree will move node from this place to new one
xml.append(copy.deepcopy(record._xml))

if getattr(record, "_protobuf", None) is not None:
entry.append(E.protobuf(record._protobuf))

self.log_data.append(entry)


Expand Down
8 changes: 7 additions & 1 deletion frontik/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import mimetools
import mimetypes
import logging.handlers
import re
import socket

import urlparse
from urllib import urlencode

from logging.handlers import SysLogHandler
Expand Down Expand Up @@ -53,6 +55,10 @@ def make_url(base, **query_args):
else:
return base

def get_query_parameters(url):
url = 'http://' + url if not re.match(r'[a-z]+://.+\??.*', url, re.IGNORECASE) else url
return urlparse.parse_qs(urlparse.urlparse(url).query, True)

def get_all_files(root, extension=None):
out = list()
for subdir, dirs, files in os.walk(root):
Expand Down Expand Up @@ -144,7 +150,7 @@ def make_post_request(url, data='', headers=None, files=None,
body = make_body(data)

if content_type is None:
content_type = 'application/x-www-form-urlencoded'
content_type = headers['Content-Type'] if 'Content-Type' in headers else 'application/x-www-form-urlencoded'

headers = {} if headers is None else headers
headers.update({'Content-Type' : content_type,
Expand Down

0 comments on commit 7cb4526

Please sign in to comment.