Files
router/progon.py
T

128 lines
2.6 KiB
Python
Raw Normal View History

2024-02-02 23:24:29 +03:00
#!/usr/bin/env python3
__author__ = 'RemiZOffAlex'
__email__ = 'remizoffalex@mail.ru'
2024-03-18 03:13:40 +03:00
import logging
2024-02-02 23:24:29 +03:00
from router.broker import Broker
2024-03-18 03:13:40 +03:00
from router.compiler import Compiler
2024-02-02 23:24:29 +03:00
from router.syntetic.url import rule_comparator
2024-03-18 03:13:40 +03:00
log = logging.getLogger(__name__)
2024-02-02 23:24:29 +03:00
broker = Broker()
def comparator(rule, query):
print('comparator')
2024-03-18 03:13:40 +03:00
print(rule)
2024-02-02 23:24:29 +03:00
print(query['url'])
if rule['url']['value'] == query['url']:
return {}
2024-03-18 03:13:40 +03:00
class Comparator:
def __init__(self, rule):
self.rule = rule
def __call__(self, query):
log.error('Comparator.__call__')
log.error(self.rule)
compiler = Compiler()
log.error(compiler)
expression = compiler(self.rule)
log.error(expression)
result = expression(query)
log.error('result')
log.error(result)
return result
# if self.condition == 'AND':
# return all(map(lambda x: RuleGroup.get_rule_object(x).evaluate(obj), self.rules))
# else:
# return any(map(lambda x: RuleGroup.get_rule_object(x).evaluate(obj), self.rules))
rule={
'operator': 'and',
'rules': [
{
'key': 'domain',
'operator': 'regex',
'value': '.*'
2024-02-02 23:24:29 +03:00
},
2024-03-18 03:13:40 +03:00
{
'key': 'url',
'operator': 'equal',
'value': '/'
2024-02-02 23:24:29 +03:00
}
2024-03-18 03:13:40 +03:00
]
}
@broker.route(
comparator=Comparator(rule=rule)
2024-02-02 23:24:29 +03:00
)
2024-03-18 03:13:40 +03:00
def foo(request):
2024-02-02 23:24:29 +03:00
return 'foo'
def comparator_flask(rule, query):
print('comparator')
print(rule['url'])
print(query['url'])
if rule['url'] == query['url']:
result = rule_comparator(rule['url'], query['url'])
print(result)
return result
2024-03-18 03:13:40 +03:00
# rule={
# 'key': 'url',
# 'operator': 'equal',
# 'value': '/'
# }
# @broker.route(
# comparator=comparator_flask(rule=rule)
# )
# def foo(request):
# return 'foo'
2024-02-02 23:24:29 +03:00
request = {
2024-03-18 03:13:40 +03:00
'url': '/',
'domain': 'example.org'
2024-02-02 23:24:29 +03:00
}
broker_response = broker(request)
print('broker_response', broker_response)
if broker_response is not None:
2024-03-18 03:13:40 +03:00
method, response = broker_response
print(method)
2024-02-02 23:24:29 +03:00
if method is None:
print('Маршрут не найден')
response = None
else:
2024-03-18 03:13:40 +03:00
response = method(request)
2024-02-02 23:24:29 +03:00
print(response)
2024-03-18 03:13:40 +03:00
print('#'*80)
print('CICD')
import os
request = os.environ
print(request)
broker = Broker()
rule={
'key': 'DESKTOP_SESSION',
'operator': 'equal',
'value': 'xfce'
}
@broker.route(
comparator=Comparator(rule=rule)
)
def foo(request):
return 'foo'
broker_response = broker(request)
method, response = broker_response
print(method)