Skip to content

Commit c39b2b2

Browse files
Tomas-PytelTomas-Pytel
authored andcommitted
Update router.py and README.md
1 parent b31590a commit c39b2b2

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,20 @@ Function `get_features` returns a list of all registered FF
4444
You can enable or disable functions on the fly with `enable_feature` or `enable_feature`
4545

4646
When needed you can reload all feature flags with `reload_feature_flags`,
47-
this is handy when you want to read and change features from URL fe.
47+
this is useful when you want to read and change features from URL.
48+
All unregistered or on-the-fly created FF, that are not in the configuration will be omitted.
4849

4950
For non-production testing, a router is available,
5051
so you can see the paths in swagger-ui docs.
5152
Use `include_in_schema=False` when defining the router for public deployments
5253
```
5354
from fastapi_featureflags import router as ff_router
54-
app.include_router(ff_router)
55+
app.include_router(ff_router, tags=["FeatureFlags"])
5556
```
57+
---
58+
<img width="100%" alt="FastAPI-FF" src="https://user-images.githubusercontent.com/1430522/144305907-5e231e64-c120-4bde-9aad-58b9b194a361.png">
5659

60+
---
5761
### TODO
5862
- Tests
5963
- Better rewrite of the main class

fastapi_featureflags/router.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from . import FeatureFlags
22
from fastapi import APIRouter
33

4-
54
router = APIRouter()
65

76

@@ -12,3 +11,33 @@ def show_feature_flags():
1211
:return: string
1312
"""
1413
return FeatureFlags.get_features()
14+
15+
16+
@router.get("/enable/{feature_flag}")
17+
def enable_feature_flag(feature_flag: str):
18+
"""
19+
Enable feature flag
20+
:return: json
21+
"""
22+
feature_status = FeatureFlags.enable_feature(feature_flag)
23+
return {"feature_flag": feature_flag, "enabled": feature_status}
24+
25+
26+
@router.get("/disable/{feature_flag}")
27+
def disable_feature_flag(feature_flag: str):
28+
"""
29+
Disable feature flag
30+
:return: json
31+
"""
32+
feature_status = FeatureFlags.disable_feature(feature_flag)
33+
return {"feature_flag": feature_flag, "enabled": feature_status}
34+
35+
36+
@router.get("/reload")
37+
def reload_feature_flags():
38+
"""
39+
Reload feature flags from last loaded configuration
40+
:return: json
41+
"""
42+
reload_status = FeatureFlags.reload_feature_flags()
43+
return {"feature_flags": FeatureFlags.get_features(), "reloaded": reload_status}

0 commit comments

Comments
 (0)