import logging
from typing import List, Optional
from olc.bean.tag_group import TagGroup
from olc.control.context.context import OlcContext
from olc.control.handler_chain.box_handler import AbsBoxHandler
from olc.control.matcher.matcher_provider import OlcMatcherProvider
from olc.statistic.statistic_factory import OlcStatisticFactory
logger = logging.getLogger(__name__)
class GroupMatcherHandler(AbsBoxHandler):
def do_in_coming(
self, context: OlcContext, groups: List[TagGroup]
) -> Optional[List[TagGroup]]:
tag_groups = OlcMatcherProvider.get_group_matcher().match_tag_groups(
context.request
)
logger.debug("request: %s match groups:%s", context.request, tag_groups)
for tag_group in tag_groups:
statistic = OlcStatisticFactory.get_instance().get_and_create(tag_group)
context.statistics[tag_group] = statistic
logger.debug("statistic: %s", statistic)
return tag_groups
def do_out_coming(self, context: OlcContext) -> None:
return None