def create_account(): firstname = menu.text_input("Enter Your First Name") lastname = menu.text_input("Enter Your Last Name") email = menu.text_input("Enter Your Email Address") phone = menu.text_input("Enter Your 10 Digit Phone Number") menu.info_message("Setting up your account...") create_response = requests.post( f"{config.SPLIT_CLI_BACKEND_BASE_URL}/create-and-enroll-user", json={ "fields": [{ "name": "firstname", "value": firstname }, { "name": "lastname", "value": lastname }, { "name": "email", "value": email }, { "name": "phone", "value": phone }] }) if create_response.status_code != 200: menu.error_message(create_response.json()) exit() status = 403 while status == 403: verify_response = verify_and_complete(firstname, lastname, email) status = verify_response.status_code if (status == 403): menu.warn_message("Incorrect confirmation code. Please try again") if verify_response.status_code != 200: menu.error_message(verify_response.json()) exit() verify_response_json = verify_response.json() user = User(verify_response_json["apiToken"], verify_response_json["orgId"], verify_response_json["userId"], firstname, lastname, email) user.write() password = verify_response_json["password"] menu.info_message( f"\nYour admin api key has been written to: {config.config_file}.") menu.info_message( f"Your email is: {email} and your assigned password is: {password}.") menu.info_message( "Make note of your password as it will not be repeated. You can change your password by logging in to: https://app.split.io" )
def create_segment(workspace): try: segment_name = menu.text_input("Enter a name for your segment") segment_description = menu.text_input( "Enter a description for your segment") traffic_type = core_selectors.selection_traffic_type(workspace["id"]) segments_api.create_segment(workspace["id"], traffic_type["name"], segment_name, segment_description) create_segment_in_all_environments(workspace, segment_name) menu.success_message("Your segment has been created!") except Exception as exc: menu.error_message("Could not create segment\n" + str(exc))
def ramp_split(workspace, split, environment, definition): try: total_ramp = 0 treatment_map = {} default_treatment = definition['defaultTreatment'] for treatment in definition['treatments']: treatment_name = treatment['name'] if treatment_name != default_treatment: while True: ramp_percent = int( menu.text_input("Ramp percentage for " + treatment_name)) if total_ramp + ramp_percent > 100: menu.error_message( "Total ramp percentage must be less than 100: remaining=" + (100 - total_ramp)) else: treatment_map[treatment_name] = ramp_percent total_ramp += ramp_percent break treatment_map[default_treatment] = 100 - total_ramp split_data = split_templates.ramp_default_rule(definition, treatment_map) definitions_api.full_update(workspace["id"], environment["name"], split["name"], split_data) except Exception as exc: menu.error_message("Could not update split\n" + str(exc))
def create_split(workspace): try: split_name = menu.text_input("Enter a name for your split") split_description = menu.text_input( "Enter a description for your split") traffic_type = core_selectors.selection_traffic_type(workspace["id"]) (treatments, baseline) = definition_selectors.select_treatments() create_split_operator(workspace["id"], traffic_type["name"], split_name, split_description, treatments, baseline) menu.success_message("Your split has been created!") split = splits_api.get_split(workspace['id'], split_name) manage_split(workspace, split) except Exception as exc: menu.error_message("Could not create split\n" + str(exc))
def sign_in(): email = menu.text_input("Enter your email") menu.info_message( "To find your Admin API Key, follow the directions here:") menu.info_message("https://www.youtube.com/watch?v=80Bz2ZcZUrs") split_apikey = menu.password_input("Enter your Split Admin API Key") new_user = user.User(split_apikey, "", "", "", "", email) user.set_user(new_user) # Check user active_user = users_api.get_user_by_email(email) if active_user != None: new_user.firstname = active_user['name'] else: new_user.firstname = email menu.warn_message("Email does not exist in organization") new_user.write() return new_user
def verify_and_complete(firstname, lastname, email): confirmation_code = menu.text_input( "Please enter the 6 digit confirmation code sent to your phone") menu.info_message("Processing account creation...") menu.info_message("This could take up to one minute.") # TODO - validate confirmation code is a 6-digit number verify_response = requests.post( f"{config.SPLIT_CLI_BACKEND_BASE_URL}/verify-and-complete", json={ "fields": [{ "name": "firstname", "value": firstname }, { "name": "lastname", "value": lastname }, { "name": "email", "value": email }, { "name": "passCode", "value": confirmation_code }] }) return verify_response