"""Main file.""" from uuid import uuid4 from requests.structures import CaseInsensitiveDict from owsrequest.context import RequestContext from pythonfeatures import pythonfeatures from pythonfeatures.constants.split import FEATURE_ENABLED from constants import OWS_FEATURES_EXAMPLE from owsrequest.constants.headers import ORCHARD_USER_ID, GRASS_ACCOUNT_TYPE, \ GRASS_ACCOUNT_TYPE_VENDOR, GRASS_ACCOUNT_ID import config def is_feature_flag_enabled_for_vendor(flag_name, vendor_id, subaccount_id): """Check if feature flag is enabled for requested vendor.""" msg = pythonfeatures.get_single_feature_by_attributes( flag_name, {'vendor_id': vendor_id, 'subaccount_id': subaccount_id}) return msg.message == FEATURE_ENABLED def main(): """Main method.""" VENDOR_ID = config.VENDOR_ID OA_USER = config.OA_USER # Test get_single_feature_by_attributes() test_by_attr = is_feature_flag_enabled_for_vendor( OWS_FEATURES_EXAMPLE, VENDOR_ID, 0) if test_by_attr: print(f"'{OWS_FEATURES_EXAMPLE}' flag is enabled.") # Format query object query = { ORCHARD_USER_ID: OA_USER, 'Correlation-Id': 'split-dev-test-lvona-0987654', GRASS_ACCOUNT_TYPE: GRASS_ACCOUNT_TYPE_VENDOR, GRASS_ACCOUNT_ID: VENDOR_ID, 'vendor_id': VENDOR_ID } query_dict = CaseInsensitiveDict(query) request_context = RequestContext(query_dict) # Test all features check via get_all_features() features_response = pythonfeatures.get_all_features( request_context) is_enabled_my_feature_flag = features_response.message.get( OWS_FEATURES_EXAMPLE) == 'enabled' if is_enabled_my_feature_flag: print(f"'{OWS_FEATURES_EXAMPLE}' flag is enabled.") # Test single feature check via get_single_feature feature_response = pythonfeatures.get_single_feature( OWS_FEATURES_EXAMPLE, request_context) is_enabled_my_feature_flag = feature_response.message == FEATURE_ENABLED if is_enabled_my_feature_flag: print(f"'{OWS_FEATURES_EXAMPLE}' flag is enabled.") if __name__ == '__main__': main()