File tree Expand file tree Collapse file tree 2 files changed +36
-3
lines changed
Expand file tree Collapse file tree 2 files changed +36
-3
lines changed Original file line number Diff line number Diff line change @@ -44,16 +44,20 @@ Function `get_features` returns a list of all registered FF
4444You can enable or disable functions on the fly with ` enable_feature ` or ` enable_feature `
4545
4646When 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
4950For non-production testing, a router is available,
5051so you can see the paths in swagger-ui docs.
5152Use ` include_in_schema=False ` when defining the router for public deployments
5253```
5354from 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
Original file line number Diff line number Diff line change 11from . import FeatureFlags
22from fastapi import APIRouter
33
4-
54router = 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 }
You can’t perform that action at this time.
0 commit comments