forked from jpf/requestbin
/
views.py
66 lines (56 loc) · 1.81 KB
/
views.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import urllib
from flask import session, redirect, url_for, escape, request, render_template, make_response
from requestbin import app, db
from requestbin.crossdomain import crossdomain
def update_recent_bins(name):
if 'recent' not in session:
session['recent'] = []
if name in session['recent']:
session['recent'].remove(name)
session['recent'].insert(0, name)
if len(session['recent']) > 10:
session['recent'] = session['recent'][:10]
session.modified = True
def expand_recent_bins():
if 'recent' not in session:
session['recent'] = []
recent = []
for name in session['recent']:
try:
recent.append(db.lookup_bin(name))
except KeyError:
session['recent'].remove(name)
session.modified = True
return recent
@app.endpoint('views.home')
def home():
return render_template('home.html', recent=expand_recent_bins())
@app.endpoint('views.bin')
@crossdomain(origin='*')
def bin(name):
try:
bin = db.lookup_bin(name)
except KeyError:
return "Not found\n", 404
if request.query_string == 'inspect':
if bin.private and session.get(bin.name) != bin.secret_key:
return "Private bin\n", 403
update_recent_bins(name)
return render_template('bin.html',
bin=bin,
host=request.host)
else:
db.create_request(bin, request)
resp = make_response("ok\n")
resp.headers['Sponsored-By'] = "https://www.runscope.com"
return resp
@app.endpoint('views.docs')
def docs(name):
doc = db.lookup_doc(name)
if doc:
return render_template('doc.html',
content=doc['content'],
title=doc['title'],
recent=expand_recent_bins())
else:
return "Not found", 404