You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
3.9 KiB

# -*- codding: utf-8 -*-
#!/usr/bin/env python3
from io import StringIO ## for Python 3
#from requests import requests as ReqServer
from http.server import BaseHTTPRequestHandler
import logging
from .jwt import genaratorSecretsToken
import json
class Router():
def __init__(self):
routes = self.setRoutes()
super().__init__(self.setRoutes)
def add(self, url, **opts):
pass
def find(self, url, handler):
if url in self.routes:
if "?" in url[-1]:
params.url.split("?")
return handler(params)
else:
return handler()
else:
return 1
def setRoutes(self):
pass
class RouterOld(BaseHTTPRequestHandler):
# def __init__(self):
# self.P_list = []
# self.Response = ""
# self.Routes = []
# length = int(self.headers['content-length'])
# Not work code
# self.send_header['Access-Control-Allow-Origin', '*']
# self.send_header['Access-Control-Allow-Methods', 'GET']
# self.send_header['Access-Control-Allow-Headers', 'X-Requested-With,content-type']
# self.send_header['Access-Control-Allow-Credentials', true]
# self.end_headers()
# super().__init__(self.setRoutes)
def _set_response(self):
self.send_response(200)
self.send_header['Access-Control-Allow-Origin', '*']
self.send_header['Access-Control-Allow-Methods', 'GET']
self.send_header['Access-Control-Allow-Headers', 'X-Requested-With,content-type']
#self.send_header['Access-Control-Allow-Credentials', true]
self.end_headers()
def do_REQUEST(self):
print("do_REQUEST:\n")
print(str(self.path), str(self.headers))
self.r_t = str(self.path), str(self.headers)
return self.response()
def _setRoutes(self, ListRoutes = []):
self.Routes = ListRoutes
def response(self):
try:
return self.wfile.write(BytesIO(self.r_t).getvalue())
except TypeError:
#print("TypeError")
return self.wfile.write(bytes(self.r_t, 'UTF-8'))
def route(self, metod, url, params, handler):
print(url)
metod = metod.lower()
if self.path in self.Routes.url:
#if metod == 'GET' or metod == 'get':
if metod == 'get':
self.get(url = url, handler = handler)
#return true
elif metod == 'post':
self.post(url = url, handler= handler)
elif metod == 'head':
self.head()
else:
self.r_404()
else:
return self.r_404()
#return false
def get(self, url, handler):
#do_GET()
return url
def post(self, url, handler):
#do_POST()
return url
def head(self):
#do_HEAD()
pass
def __isAuth(selt, auth):
pass
def getToken(self, authResult):
print(self.client_address)
#if self.__isAuth() is True:
genaratorSecretsToken()
#else:
# self.r_403()
def parse_url(request):
print("request.rfile:\t" + str(request.rfile.read()))
#return json.loads(str(request.rfile.read()))
def r_403(self):
self.send_response(403)
self.end_headers()
print(self.client_address)
def r_404(self):
self.send_response(404)
self.end_headers()
print(self.client_address)
def r_static(self):
if os.path.exists('./views/' + self.path):
self.send_response(200)
self.end_headers()
with open('./views/' + self.path, 'tr') as f:
self.Response = f.read()
else:
self.send_response(404)
self.end_headers()
"""
def do_GET(self):
pass
def do_POST(self):
pass
"""