mirror of
https://github.com/kennethreitz/httpbin.git
synced 2026-06-05 14:50:17 +00:00
/ip
This commit is contained in:
+2
-1
@@ -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
@@ -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'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user