Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# SPDX-License-Identifier: Apache-2.0
3# Copyright 2020 Contributors to OpenLEADR
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
9# http://www.apache.org/licenses/LICENSE-2.0
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
17import asyncio
19HOOKS = {'before_parse': [],
20 'before_handle': [],
21 'after_handle': [],
22 'before_respond': []}
25def register(hook_point, callback):
26 """
27 Call a hook
28 """
29 if hook_point not in HOOKS:
30 raise ValueError(f"""The hook_point must be one of '{', '.join(HOOKS.keys())}', """
31 f"""you provided '{hook_point}'""")
32 HOOKS[hook_point].append(callback)
35def call(hook_point, *args, **kwargs):
36 loop = asyncio.get_event_loop()
37 for hook in HOOKS.get(hook_point, []):
38 loop.create_task(hook(*args, **kwargs))