core
core copied to clipboard
[WIP] Allow to implement custom endpoints
Description
Based on #2 dev meeting's discussion about allowing cat rest api to be extended by custom routes through hook.
Type of change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [x] This change requires a documentation update
Checklist:
- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
The structure is what we discussed on last dev meeting. You can extend the cat rest api through an hook like that: ` from cat.mad_hatter.decorators import hook from fastapi.routing import APIRouter
@hook def load_custom_endpoints(custom_endpoint_router: APIRouter, cat) -> None:
@custom_endpoint_router.get("/hello/world")
async def hello_world():
return "Hello World!"
return custom_endpoint_router
`
The main problem now is that the router is not reloaded every time the plugins are toggled because from the CheshireCat instance it is not possible to access the fastapi instance.
It could be passed here:
but it is a circular dependency(?)