Files
conf_bot/webhook.py

64 lines
1.8 KiB
Python
Raw Normal View History

2018-02-04 07:13:09 +03:00
#!/usr/bin/env python
# -*- coding: utf-8 -*-
2018-08-03 15:15:35 +03:00
from http.server import HTTPServer, SimpleHTTPRequestHandler, CGIHTTPRequestHandler
2018-02-04 07:13:09 +03:00
from socketserver import BaseServer
import ssl
import json
import settings
2018-08-03 15:15:35 +03:00
# fuckin dirty hack. idk the best way to inherit return func into
2018-02-04 07:13:09 +03:00
# RequestHandler class
2018-08-03 15:15:35 +03:00
2018-02-04 07:13:09 +03:00
class RequestHandler(SimpleHTTPRequestHandler):
def __init__(self,
2018-08-03 15:15:35 +03:00
request,
client_address,
server):
2018-02-04 07:13:09 +03:00
self.worker = settings.worker
super(RequestHandler, self).__init__(
request=request,
client_address=client_address,
server=server)
def do_POST(self):
"""Serve a POST request."""
self.send_response(200)
self.send_header('Content-Type', 'text/html')
self.end_headers()
2018-08-03 15:15:35 +03:00
2018-02-04 07:13:09 +03:00
length = self.headers.get('content-length')
post_body = self.rfile.read(int(length))
msg = json.loads(post_body.decode("utf-8"))
self.worker.handleUpdate(msg)
2018-08-03 15:15:35 +03:00
2018-02-04 07:13:09 +03:00
def do_GET(self):
pass
class WebHook:
def __init__(self,
2018-08-03 15:15:35 +03:00
certfile,
keyfile,
2019-10-29 15:12:53 +00:00
address=settings.parser.get('bot', 'bind_address'),
2018-08-03 15:15:35 +03:00
port=8443,
RequestHandler=RequestHandler):
2018-02-04 07:13:09 +03:00
self.httpd = HTTPServer((address, port), RequestHandler)
2018-08-03 15:15:35 +03:00
self.httpd.socket = ssl.wrap_socket(self.httpd.socket,
certfile=certfile,
keyfile=keyfile,
server_side=True)
2018-02-04 07:13:09 +03:00
def serve(self):
try:
self.httpd.serve_forever()
except KeyboardInterrupt:
pass
2019-05-17 14:21:38 +03:00
except Exception as e:
print("ERROR: %s" % e)
2018-02-04 07:13:09 +03:00
finally:
# Clean-up server (close socket, etc.)
self.httpd.server_close()