Skip to content

Commit

Permalink
address PR comment:
Browse files Browse the repository at this point in the history
-add login url
-add logs
-fix log
  • Loading branch information
violetaperezandrade committed Apr 7, 2024
1 parent 4b7bf02 commit 7b37c34
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 10 deletions.
1 change: 1 addition & 0 deletions .env.dist
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
LOGGING_LEVEL=
USERS_HOST=
MEASUREMENTS_HOST=
PLANTS_HOST=
19 changes: 19 additions & 0 deletions app.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
import os
import logging
from flask import Flask
from flask_restful import Api
from werkzeug.routing import BaseConverter
from src.resource import Gateway


def initialize_log(logging_level):
"""
Python custom logging initialization
Current timestamp is added to be able to identify in docker
compose logs the date when the log has arrived
"""
logging.basicConfig(
format='%(asctime)s %(levelname)-8s %(message)s',
level=logging_level,
datefmt='%Y-%m-%d %H:%M:%S',
)


logging_level = os.getenv("LOGGING_LEVEL", "INFO")
initialize_log(logging_level)
app = Flask(__name__)


Expand Down
11 changes: 9 additions & 2 deletions src/apps/measurements.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import logging

import requests
from flask import make_response
Expand All @@ -16,12 +17,13 @@ def __init__(self):

def getResponseJson(self, response):
if response.status_code == 503 or not response.text:
return {"message": "users service currently unavailable,please"
"try again later", "status": 503}
return {"message": "measurements service is currently unavailable,"
" please try again later", "status": 503}
return response.json()

def get(self, url, body, headers, query_params):
url = f"{self.host}{url}{get_query_params(query_params)}"
logging.info(f"MEASUREMENTS | GET | {url}")
response = requests.get(url, json=body, headers=headers)
return make_response(self.getResponseJson(response),
response.status_code)
Expand All @@ -31,6 +33,8 @@ def post(self, url, body, headers, query_params):
f"{get_query_params(query_params)}",
json=body,
headers=headers)
logging.info(f"MEASUREMENTS | POST | {url}")
logging.debug(f"BODY: {body}")
return make_response(self.getResponseJson(response),
response.status_code)

Expand All @@ -39,12 +43,15 @@ def patch(self, url, body, headers, query_params):
f"{get_query_params(query_params)}",
json=body,
headers=headers)
logging.info(f"MEASUREMENTS | PATCH | {url}")
logging.debug(f"BODY: {body}")
return make_response(self.getResponseJson(response),
response.status_code)

def delete(self, url, body, headers, query_params):
response = requests.delete(f"{self.host}{url}"
f"{get_query_params(query_params)}",
headers=headers)
logging.info(f"MEASUREMENTS | DELETE | {url}")
return make_response(self.getResponseJson(response),
response.status_code)
11 changes: 9 additions & 2 deletions src/apps/plants.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import os
import logging

import requests
from flask import make_response
Expand All @@ -16,13 +17,14 @@ def __init__(self):

def getResponseJson(self, response):
if response.status_code == 503 or not response.text:
return {"message": "users service currently unavailable,please"
"try again later", "status": 503}
return {"message": "plants service is currently unavailable,"
"please try again later", "status": 503}
return response.json()

def get(self, url, body, headers, query_params):
url = f"{self.host}{url}{get_query_params(query_params)}"
response = requests.get(url, json=body, headers=headers)
logging.info(f"PLANTS | GET | {url}")
return make_response(self.getResponseJson(response),
response.status_code)

Expand All @@ -31,6 +33,8 @@ def post(self, url, body, headers, query_params):
f"{get_query_params(query_params)}",
json=body,
headers=headers)
logging.info(f"PLANTS | POST | {url}")
logging.debug(f"BODY: {body}")
return make_response(self.getResponseJson(response),
response.status_code)

Expand All @@ -39,12 +43,15 @@ def patch(self, url, body, headers, query_params):
f"{get_query_params(query_params)}",
json=body,
headers=headers)
logging.info(f"PLANTS | PATCH | {url}")
logging.debug(f"BODY: {body}")
return make_response(self.getResponseJson(response),
response.status_code)

def delete(self, url, body, headers, query_params):
response = requests.delete(f"{self.host}{url}"
f"{get_query_params(query_params)}",
headers=headers)
logging.info(f"PLANTS | DELETE | {url}")
return make_response(self.getResponseJson(response),
response.status_code)
12 changes: 8 additions & 4 deletions src/apps/users.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import os
import logging

import requests
from flask import make_response
import sys


def get_query_params(queryParam) -> str:
Expand All @@ -17,15 +17,14 @@ def __init__(self):

def getResponseJson(self, response):
if response.status_code == 503 or not response.text:
return {"message": "users service currently unavailable,please"
return {"message": "users service is currently unavailable, please"
"try again later", "status": 503}
return response.json()

def get(self, url, body, headers, query_params):
url = f"{self.host}{url}{get_query_params(query_params)}"
print(f"url: {url}")
sys.stdout.flush()
response = requests.get(url, json=body, headers=headers)
logging.info(f"USERS | GET | {url}")
return make_response(self.getResponseJson(response),
response.status_code)

Expand All @@ -34,6 +33,8 @@ def post(self, url, body, headers, query_params):
f"{get_query_params(query_params)}",
json=body,
headers=headers)
logging.info(f"USERS | POST | {url}")
logging.debug(f"BODY: {body}")
return make_response(self.getResponseJson(response),
response.status_code)

Expand All @@ -42,12 +43,15 @@ def patch(self, url, body, headers, query_params):
f"{get_query_params(query_params)}",
json=body,
headers=headers)
logging.info(f"USERS | PATCH | {url}")
logging.debug(f"BODY: {body}")
return make_response(self.getResponseJson(response),
response.status_code)

def delete(self, url, body, headers, query_params):
response = requests.delete(f"{self.host}{url}"
f"{get_query_params(query_params)}",
headers=headers)
logging.info(f"USERS | DELETE | {url}")
return make_response(self.getResponseJson(response),
response.status_code)
11 changes: 9 additions & 2 deletions src/resource.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from flask import request, make_response
import logging
from flask import request, make_response # type: ignore
from flask_restful import Resource

from src.apps.users import Users
Expand All @@ -24,7 +25,8 @@ def getExtraData():
"device-plant": Measurements(),
"plants": Plants(),
"plant-type": Plants(),
"logs": Plants()
"logs": Plants(),
"login": Users()
}


Expand All @@ -37,29 +39,34 @@ class Gateway(Resource):
def get(self, url):
resource = getCorrectEndpoint(url)
if not resource:
logging.error(f"Resource not found for url {url}")
return make_response({"message": "not found"}, 404)
return resource.get(url, *getExtraData())

def post(self, url):
resource = getCorrectEndpoint(url)
if not resource:
logging.error(f"Resource not found for url {url}")
return make_response({"message": "not found"}, 404)
return resource.post(url, *getExtraData())

def patch(self, url):
resource = getCorrectEndpoint(url)
if not resource:
logging.error(f"Resource not found for url {url}")
return make_response({"message": "not found"}, 404)
return resource.patch(url, *getExtraData())

def delete(self, url):
resource = getCorrectEndpoint(url)
if not resource:
logging.error(f"Resource not found for url {url}")
return make_response({"message": "not found"}, 404)
return resource.delete(url, *getExtraData())

def put(self, url):
resource = getCorrectEndpoint(url)
if not resource:
logging.error(f"Resource not found for url {url}")
return make_response({"message": "not found"}, 404)
return resource.put(url, *getExtraData())

0 comments on commit 7b37c34

Please sign in to comment.