add /log handler, link to it from /responses

reuses LogHandler newly moved from bridgy to webutil in snarfed/webutil@a49b3af4d1
pull/27/head
Ryan Barrett 2017-10-26 07:13:28 -07:00
rodzic 22ca3e64a6
commit 07c650b9e1
4 zmienionych plików z 26 dodań i 12 usunięć

Wyświetl plik

@ -1,6 +1,7 @@
# https://cloud.google.com/appengine/docs/standard/python/config/appref # https://cloud.google.com/appengine/docs/standard/python/config/appref
# application: bridgy-federated # application: bridgy-federated
# version: 1
runtime: python27 runtime: python27
threadsafe: yes threadsafe: yes
api_version: 1 api_version: 1
@ -62,7 +63,7 @@ handlers:
script: render.app script: render.app
secure: always secure: always
- url: /responses - url: /(log|responses)
script: logs.app script: logs.app
secure: always secure: always

23
logs.py
Wyświetl plik

@ -1,20 +1,22 @@
"""Handlers and utilities for exposing app logs to users. """Render recent responses and logs."""
""" import calendar
import cgi
import datetime import datetime
import logging
import re
import urllib
import appengine_config import appengine_config
from google.appengine.api import logservice
from google.appengine.ext import ndb
from oauth_dropins.webutil.handlers import TemplateHandler
from oauth_dropins.webutil import util from oauth_dropins.webutil import util
from oauth_dropins.webutil.handlers import TemplateHandler
from oauth_dropins.webutil import logs
import webapp2 import webapp2
from models import Response from models import Response
VERSION_1_DEPLOYED = datetime.datetime(2017, 10, 26, 16, 0)
class LogHandler(logs.LogHandler):
VERSION_IDS = ['1']
class ResponsesHandler(TemplateHandler): class ResponsesHandler(TemplateHandler):
"""Renders recent Responses, with links to logs.""" """Renders recent Responses, with links to logs."""
@ -28,6 +30,8 @@ class ResponsesHandler(TemplateHandler):
for r in responses: for r in responses:
r.source, r.target = [util.pretty_link(url) r.source, r.target = [util.pretty_link(url)
for url in r.key.id().split(' ')] for url in r.key.id().split(' ')]
if r.updated >= VERSION_1_DEPLOYED:
r.start_time = calendar.timegm(r.updated.timetuple())
return { return {
'responses': responses, 'responses': responses,
@ -35,5 +39,6 @@ class ResponsesHandler(TemplateHandler):
app = webapp2.WSGIApplication([ app = webapp2.WSGIApplication([
('/log', LogHandler),
('/responses', ResponsesHandler), ('/responses', ResponsesHandler),
], debug=appengine_config.DEBUG) ], debug=appengine_config.DEBUG)

Wyświetl plik

@ -15,14 +15,21 @@
<h3>Recent requests we've attempted to federate.</h3> <h3>Recent requests we've attempted to federate.</h3>
<table> <table>
<tr><th>Source</th> <th>Target</th> <th>Protocol</th> <th>Status</th> <th>Log</th></tr> <tr><th>Source</th> <th>Target</th> <th>Protocol</th> <th>Status</th> <th>Time (click for log)</th></tr>
{% for r in responses %} {% for r in responses %}
<tr> <tr>
<td>{{ r.source|safe }}</td> <td>{{ r.source|safe }}</td>
<td>{{ r.target|safe }}</td> <td>{{ r.target|safe }}</td>
<td>{{ r.protocol }}</td> <td>{{ r.protocol }}</td>
<td>{{ r.status }}</td> <td>{{ r.status }}</td>
<td><a href="">{{ r.updated.replace(microsecond=0) }}</a></td> <td>
{# TODO: support inbound too #}
{% if r.direction == 'out' and r.start_time %}
<a href="/log?{{ {'key': r.key.id(), 'start_time': r.start_time}|urlencode }}">
{% endif %}
{{ r.updated.replace(microsecond=0) }}
{% if r.direction == 'out' %}</a>{% endif %}
</td>
</tr> </tr>
{% endfor %} {% endfor %}
</table> </table>

Wyświetl plik

@ -41,6 +41,7 @@ class WebmentionHandler(webapp2.RequestHandler):
logging.info('Params: %s', self.request.params.items()) logging.info('Params: %s', self.request.params.items())
source = util.get_required_param(self, 'source') source = util.get_required_param(self, 'source')
target = util.get_required_param(self, 'target') target = util.get_required_param(self, 'target')
logging.info('source target: %s %s', source, target)
try: try:
msg = 'Bridgy Fed: new webmention from %s' % source msg = 'Bridgy Fed: new webmention from %s' % source