2024-09-09 11:14:32 +03:00
|
|
|
from datetime import datetime
|
2024-09-09 10:01:44 +03:00
|
|
|
from http.server import BaseHTTPRequestHandler, HTTPServer
|
2024-09-09 11:23:33 +03:00
|
|
|
import os
|
|
|
|
from weather import weather_handler
|
2024-09-09 10:46:04 +03:00
|
|
|
|
2024-09-09 10:01:44 +03:00
|
|
|
|
|
|
|
def run(server_class=HTTPServer, handler_class=BaseHTTPRequestHandler):
|
2024-09-09 11:23:33 +03:00
|
|
|
server_address = ("", int(os.getenv("PORT", "8000")))
|
2024-09-09 10:01:44 +03:00
|
|
|
httpd = server_class(server_address, WeatherHandler)
|
|
|
|
httpd.serve_forever()
|
|
|
|
|
2024-09-09 10:46:04 +03:00
|
|
|
|
2024-09-09 10:01:44 +03:00
|
|
|
class WeatherHandler(BaseHTTPRequestHandler):
|
|
|
|
def do_GET(self):
|
2024-09-09 11:14:32 +03:00
|
|
|
return self.data_output()
|
|
|
|
|
|
|
|
def data_output(self):
|
|
|
|
date = datetime.today().strftime("%Y-%m-%d %H")
|
|
|
|
raw_data = weather_handler(date)
|
2024-09-09 10:46:04 +03:00
|
|
|
return self.render(200, raw_data)
|
|
|
|
|
|
|
|
def render(self, response_code: int, response_body: dict | None = None):
|
|
|
|
self.send_response(response_code)
|
|
|
|
if response_body is not None:
|
|
|
|
self.send_header("Content-type", "application/json")
|
|
|
|
self.end_headers()
|
|
|
|
if response_body is not None:
|
|
|
|
self.wfile.write(response_body)
|