From 34d216de94c680f78f528bcc8a4bf4ecfb6fe4ed Mon Sep 17 00:00:00 2001 From: Redume Date: Mon, 28 Oct 2024 16:32:51 +0300 Subject: [PATCH] =?UTF-8?q?feat(chart):=20=D0=92=20=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=B5=20=D0=BE=D1=82=20=D0=B0=D0=BF=D0=B8=20=D1=82?= =?UTF-8?q?=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BF=D0=BE=D0=BB=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=D1=8E=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B?= =?UTF-8?q?=D0=B2=D0=B0=D0=B5=D1=82=D1=81=D1=8F=20url,=20=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B5=20=D0=BF=D1=83=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- chart/main.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/chart/main.py b/chart/main.py index d7066bf..b2975c5 100644 --- a/chart/main.py +++ b/chart/main.py @@ -10,7 +10,7 @@ import dateutil.relativedelta import random import string -from fastapi import FastAPI, Response, status +from fastapi import FastAPI, Response, status, Request from psycopg2.extras import DictCursor from starlette.staticfiles import StaticFiles @@ -37,21 +37,39 @@ app.mount('/static/charts', StaticFiles(directory='../charts/')) app.middleware('http')(PlausibleAnalytics()) @app.get("/api/getChart/", status_code=status.HTTP_201_CREATED) -async def get_chart(response: Response, from_currency: str, conv_currency: str, start_date: str, end_date: str): +async def get_chart( + response: Response, + request: Request, + from_currency: str, + conv_currency: str, + start_date: str, + end_date: str + ): + chart = await create_chart(from_currency, conv_currency, start_date, end_date) if not chart: response.status_code = status.HTTP_404_NOT_FOUND return {'message': 'No data found.', 'status_code': status.HTTP_404_NOT_FOUND} + host = request.headers.get("host") + url_schema = request.url.scheme + return { - 'message': f'./static/charts/{chart}.png', + 'message': f'{url_schema}://{host}/static/charts/{chart}.png', 'status_code': status.HTTP_201_CREATED, } @app.get("/api/getChart/{period}", status_code=status.HTTP_201_CREATED) -async def get_chart_period(response: Response, from_currency: str, conv_currency: str, period: str): +async def get_chart_period( + response: Response, + request: Request, + from_currency: str, + conv_currency: str, + period: str + ): + if period not in ['week', 'month', 'quarter', 'year']: response.status_code = status.HTTP_400_BAD_REQUEST return {'message': 'Invalid period.', 'status_code': status.HTTP_400_BAD_REQUEST} @@ -80,8 +98,11 @@ async def get_chart_period(response: Response, from_currency: str, conv_currency response.status_code = status.HTTP_404_NOT_FOUND return {'message': 'No data found.', 'status_code': status.HTTP_404_NOT_FOUND} + host = request.headers.get("host") + url_schema = request.url.scheme + return { - 'message': f'./static/charts/{chart}.png', + 'message': f'{url_schema}://{host}/static/charts/{chart}.png', 'status_code': status.HTTP_201_CREATED, }