From 1bd63a7ead7cff5a215e67799ae0ee450499bcce Mon Sep 17 00:00:00 2001 From: Nikita5390 Date: Wed, 24 Aug 2022 22:40:18 +0300 Subject: [PATCH 1/5] [#H24].(Docker_Flask_HW) --- .../app/Homework/flask_hw2/app/Dockerfile | 6 ++++ .../app/Homework/flask_hw2/app/config.py | 10 ++++++ .../Homework/flask_hw2/app/requirements.txt | Bin 0 -> 472 bytes .../app/Homework/flask_hw2/app/run.py | 6 ++++ .../app/Homework/flask_hw2/app/service.py | 30 ++++++++++++++++ .../app/Homework/flask_hw2/app/storage.json | 1 + .../app/Homework/flask_hw2/app/storage.py | 22 ++++++++++++ .../app/Homework/flask_hw2/app/views.py | 32 ++++++++++++++++++ 8 files changed, 107 insertions(+) create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/config.py create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/requirements.txt create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/run.py create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/service.py create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/storage.py create mode 100644 Shops/building_materials_store/app/Homework/flask_hw2/app/views.py diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile b/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile new file mode 100644 index 0000000..c3a5f6c --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile @@ -0,0 +1,6 @@ +FROM python:3.10 +COPY . /app +WORKDIR /app +RUN pip install -r requirements.txt +CMD ["python3", "main.py"] +EXPOSE 5000 \ No newline at end of file diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py new file mode 100644 index 0000000..44fea58 --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py @@ -0,0 +1,10 @@ +from flask import Flask +from storage import Storage + +storage = Storage("storage.json") +app = Flask(__name__) + + +secret_key = 'qwerty' + + diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/requirements.txt b/Shops/building_materials_store/app/Homework/flask_hw2/app/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..f4962f0c461b8c6f9ac3893a1c0d4a15f913d316 GIT binary patch literal 472 zcmYk3$qK?i5Jc-N_$f*f6}))$AP9njXO}2(OEmGIAFsadi5i9`Ls!?*llN<-QhQ~( zDb-FRPETD8s7P(Kw9yH4qoZR(`Z3k3u^cpqyV995b_Cj|20k$cH;2GZ=!Y`p3{K(f z%01TV&`DLn*i!a2MN^BN7ZPP4rB7T)p5mVCPRC|V-SQ>wKEdOn13HPLw%H$@(!Y`H zPKr7A9a>F|*fnN)XriSSKg{xkBn4QdXN^R-1b^GE)RnCY_b6-S@7siQ#%%7HpxRVe b`ff+2QZnv;{{I(zvR}cm)V5prJLdiYGVMb5 literal 0 HcmV?d00001 diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py new file mode 100644 index 0000000..64f81a6 --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py @@ -0,0 +1,6 @@ +from views import app + + + +if __name__ == "__main__": + app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py new file mode 100644 index 0000000..c913da4 --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py @@ -0,0 +1,30 @@ +import hashlib +from config import storage, secret_key +import jwt + + +def hash_md5(data): + return hashlib.md5(data.encode('utf-8')).hexdigest() + + +def registrate(account): + account['password'] = hash_md5(account.get('password')) + email = account.get("email") + db = storage.get_by_email(email) + saved_email = db.get(email) + if email != saved_email: + return storage.add(account) + + +def login(account): + email = account.get("email") + data = storage.get_by_email(email) + password = hash_md5(account.get("password")) + saved_password = data.get("password") + saved_email = data.get("email") + if password == saved_password and email == saved_email: + return make_jwt(data) + + +def make_jwt(data): + return jwt.encode(data, secret_key, algorithm='HS256') diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json b/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json new file mode 100644 index 0000000..77ca4d2 --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json @@ -0,0 +1 @@ +[{"password": "900150983cd24fb0d6963f7d28e17f72", "email": "qwerty@qwerty.com"}, {"password": "3944b025c9ca7eec3154b44666ae04a0", "email": "qwerty1@qwerty.com"}, {"password": "900150983cd24fb0d6963f7d28e17f72", "email": "abc@tut.by"}, {"password": "900150983cd24fb0d6963f7d28e17f72", "email": "abc@tut.by"}] \ No newline at end of file diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.py new file mode 100644 index 0000000..74caa32 --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.py @@ -0,0 +1,22 @@ +import json + + +class Storage: + + def __init__(self, path): + self.path = path + + def get(self, *args, **kwargs): + with open(self.path, "r") as file: + data = json.load(file) + return data + + def get_by_email(self, email): + data = self.get() + return list(filter(lambda acc: acc.get("email") == email, data))[0] + + def add(self, data): + storage_data = self.get() + storage_data.append(data) + with open(self.path, "w") as file: + json.dump(storage_data, file) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py new file mode 100644 index 0000000..4be734f --- /dev/null +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py @@ -0,0 +1,32 @@ +from config import app +from flask import request, jsonify, make_response +from service import registrate, login as log + +@app.route('/login', methods=["POST"]) +def login(): + data = request.get_json() + try: + token = log(data) + result = ({"token": token, + "status": "ok"}, 200) + except Exception as e: + result = ({ + "status": "error", + "detail": "Passwords or email didn't match.", + }, 400) + return make_response(jsonify(result)) + + +@app.route('/reg', methods=["POST"]) +def reg(): + data = request.get_json() + try: + registrate(data) + result = ({ + "status": "ok"}, 200) + except Exception as e: + result = ({ + "status": "error", + "detail": "User already exists." + }, 400) + return make_response(jsonify(result)) \ No newline at end of file From b30a7972664ae30f48e23bc0f20d23ad22aceae4 Mon Sep 17 00:00:00 2001 From: Nikita5390 Date: Wed, 24 Aug 2022 22:43:38 +0300 Subject: [PATCH 2/5] [#H24].(Docker_Flask_HW) --- .../app/Homework/flask_hw2/app/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile b/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile index c3a5f6c..3d9c678 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile @@ -2,5 +2,5 @@ FROM python:3.10 COPY . /app WORKDIR /app RUN pip install -r requirements.txt -CMD ["python3", "main.py"] +CMD ["python3", "run.py"] EXPOSE 5000 \ No newline at end of file From dcc442d24f4a6f1f51220f10ea2c113644be4f94 Mon Sep 17 00:00:00 2001 From: Nikita5390 Date: Thu, 25 Aug 2022 18:48:26 +0300 Subject: [PATCH 3/5] [#H24].(ref.code) --- .../app/Homework/flask_hw2/app/service.py | 2 +- .../app/Homework/flask_hw2/app/storage.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py index c913da4..efcd521 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/service.py @@ -11,7 +11,7 @@ def registrate(account): account['password'] = hash_md5(account.get('password')) email = account.get("email") db = storage.get_by_email(email) - saved_email = db.get(email) + saved_email = db.get("email") if email != saved_email: return storage.add(account) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json b/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json index 77ca4d2..e69de29 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/storage.json @@ -1 +0,0 @@ -[{"password": "900150983cd24fb0d6963f7d28e17f72", "email": "qwerty@qwerty.com"}, {"password": "3944b025c9ca7eec3154b44666ae04a0", "email": "qwerty1@qwerty.com"}, {"password": "900150983cd24fb0d6963f7d28e17f72", "email": "abc@tut.by"}, {"password": "900150983cd24fb0d6963f7d28e17f72", "email": "abc@tut.by"}] \ No newline at end of file From 07650672f5844c1876ed226ff6a2017e2a5d7a11 Mon Sep 17 00:00:00 2001 From: Nikita5390 Date: Wed, 7 Sep 2022 22:44:13 +0300 Subject: [PATCH 4/5] [#H24].(ref.code) --- .../app/Homework/flask_hw2/app/Dockerfile | 2 +- .../app/Homework/flask_hw2/app/config.py | 3 --- .../app/Homework/flask_hw2/app/run.py | 4 +--- .../app/Homework/flask_hw2/app/views.py | 19 ++++++++++--------- 4 files changed, 12 insertions(+), 16 deletions(-) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile b/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile index 3d9c678..7d78866 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/Dockerfile @@ -3,4 +3,4 @@ COPY . /app WORKDIR /app RUN pip install -r requirements.txt CMD ["python3", "run.py"] -EXPOSE 5000 \ No newline at end of file +EXPOSE 5000 diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py index 44fea58..94a7d02 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/config.py @@ -4,7 +4,4 @@ storage = Storage("storage.json") app = Flask(__name__) - secret_key = 'qwerty' - - diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py index 64f81a6..1eb455c 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/run.py @@ -1,6 +1,4 @@ from views import app - - if __name__ == "__main__": - app.run(debug=True, host='0.0.0.0', port=5000) \ No newline at end of file + app.run(debug=True, host='0.0.0.0', port=5000) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py index 4be734f..0c34edb 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py @@ -2,18 +2,19 @@ from flask import request, jsonify, make_response from service import registrate, login as log + @app.route('/login', methods=["POST"]) def login(): data = request.get_json() try: token = log(data) result = ({"token": token, - "status": "ok"}, 200) + "status": "ok"}, 200) except Exception as e: result = ({ - "status": "error", - "detail": "Passwords or email didn't match.", - }, 400) + "status": "error", + "detail": "Passwords or email didn't match.", + }, 400) return make_response(jsonify(result)) @@ -23,10 +24,10 @@ def reg(): try: registrate(data) result = ({ - "status": "ok"}, 200) + "status": "ok"}, 200) except Exception as e: result = ({ - "status": "error", - "detail": "User already exists." - }, 400) - return make_response(jsonify(result)) \ No newline at end of file + "status": "error", + "detail": "User already exists." + }, 400) + return make_response(jsonify(result)) From 7c8bf9a856ba19804d40acb96033423c3466136d Mon Sep 17 00:00:00 2001 From: Nikita5390 Date: Wed, 7 Sep 2022 22:46:42 +0300 Subject: [PATCH 5/5] [#H24].(ref.code) --- .../app/Homework/flask_hw2/app/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py b/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py index 0c34edb..e563237 100644 --- a/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py +++ b/Shops/building_materials_store/app/Homework/flask_hw2/app/views.py @@ -28,6 +28,6 @@ def reg(): except Exception as e: result = ({ "status": "error", - "detail": "User already exists." + "detail": "User already exists. " }, 400) return make_response(jsonify(result))