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