This commit is contained in:
Kenneth Reitz
2011-06-12 19:21:55 -04:00
parent 3d7ad1475b
commit d3de504a4c
2 changed files with 41 additions and 6 deletions
+2 -1
View File
@@ -4,7 +4,8 @@ httpbin(1): HTTP Client Testing Service
## SYNOPSIS
`/` This page.
`/user-agent` Returns user-agent string.
`/ip` Returns Origin IP.
`/user-agent` Returns user-agent.
`/headers` Returns header dict.
`/get` Returns GET data.
`/post` Returns POST data.
+39 -5
View File
@@ -9,19 +9,36 @@ This module provides the core HttpBin experience.
import json
from decorator import decorator
from flask import Flask, request, render_template
app = Flask(__name__)
@decorator
def json_resource(f, *args, **kwargs):
_dict = f(*args, **kwargs)
dump = json.dumps(_dict)
r = app.make_response(dump)
r.headers['Content-Type'] = 'application/json'
return r
def to_json(*args, **kwargs):
data = dict(*args, **kwargs)
return json.dumps(data)
def get_headers():
"""Returns headers dictionary."""
headers = dict()
for k, v in request.headers.items():
headers[k] = v
return headers
# ------
# Routes
@@ -30,20 +47,37 @@ def to_json(*args, **kwargs):
@app.route('/')
def view_landing_page():
"""Generates Landing Page."""
return render_template('httpbin.1.html')
@app.route('/ip')
@json_resource
def view_origin():
"""Returns Origin IP."""
return dict(ip=request.remote_addr)
@app.route('/headers')
@json_resource
def view_headers():
return to_json(headers='headers')
"""Returns HTTP HEADERS."""
return dict(headers=get_headers())
@app.route('/user-agent')
@json_resource
def view_user_agent():
return 'user agent'
"""Returns User-Agent."""
return dict(useragent=request.headers.get('User-Agent', None))
@app.route('/get')
@json_resource
def view_get():
return 'get'