Code example, first pass.
This commit is contained in:
parent
3ba2901a0b
commit
06cf147005
|
@ -0,0 +1,5 @@
|
||||||
|
.#*
|
||||||
|
*~
|
||||||
|
*#
|
||||||
|
*.aux
|
||||||
|
*.pyc
|
|
@ -0,0 +1,11 @@
|
||||||
|
[[source]]
|
||||||
|
url = "https://pypi.python.org/simple"
|
||||||
|
verify_ssl = true
|
||||||
|
name = "pypi"
|
||||||
|
|
||||||
|
[packages]
|
||||||
|
|
||||||
|
[dev-packages]
|
||||||
|
|
||||||
|
[requires]
|
||||||
|
python_version = "3.8"
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"_meta": {
|
||||||
|
"hash": {
|
||||||
|
"sha256": "e2a8a78582d100dc86a0694f5ad982ca341a6b861fd871c6306733562f9e16cc"
|
||||||
|
},
|
||||||
|
"pipfile-spec": 6,
|
||||||
|
"requires": {
|
||||||
|
"python_version": "3.8"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
{
|
||||||
|
"name": "pypi",
|
||||||
|
"url": "https://pypi.python.org/simple",
|
||||||
|
"verify_ssl": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"default": {},
|
||||||
|
"develop": {}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
# TinyURL
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
```
|
||||||
|
git checkout <repository>
|
||||||
|
cd tinyurl
|
||||||
|
pipenv shell
|
||||||
|
python ./tinyurl.py
|
||||||
|
```
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Error {{code}}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Error {{code}}</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,47 @@
|
||||||
|
from flask import Flask, json, redirect, request, render_template, jsonify
|
||||||
|
import short_url
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
found = {}
|
||||||
|
database = {}
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/', methods=['POST'])
|
||||||
|
def post_tinyurl():
|
||||||
|
body = request.get_json(silent=True, force=True)
|
||||||
|
if body is None or 'url' not in body:
|
||||||
|
return (render_template("error.html", code=400), 400)
|
||||||
|
|
||||||
|
url = body['url']
|
||||||
|
if url in found:
|
||||||
|
return jsonify({
|
||||||
|
'url': url,
|
||||||
|
'short_url_code': '/' + found[url]
|
||||||
|
})
|
||||||
|
|
||||||
|
counter = len(database) + 1
|
||||||
|
newurl = short_url.encode_url(counter)
|
||||||
|
database[newurl] = url
|
||||||
|
found[url] = newurl
|
||||||
|
|
||||||
|
return jsonify({
|
||||||
|
'url': url,
|
||||||
|
'short_url_code': '/' + newurl
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
@app.route('/<url>', methods=["GET"])
|
||||||
|
def get_tinyurl(url):
|
||||||
|
if url not in database:
|
||||||
|
return render_template('error.html', code=404), 404
|
||||||
|
return redirect(database[url], 301)
|
||||||
|
|
||||||
|
|
||||||
|
@ app.errorhandler(404)
|
||||||
|
def not_found(error):
|
||||||
|
return render_template('error.html', code=404), 404
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(debug=True)
|
Loading…
Reference in New Issue