예제 #1
0
def delete(url, profile):
    util = pyke.Util(profile=profile)

    resp = util.cli_request('DELETE',\
        util.build_url('{app}{url}', {'url': url}))

    click.echo(json.dumps(resp))
예제 #2
0
파일: luma.py 프로젝트: Wippers/ledmatrix
def select_profile(ctx, param, value):
  profiles = auth.list_profiles()
  profile_names = [x.get('profileName') for x in profiles]
  if not value:
    format = "{Option} {profileName} {env} {orgName} {orgId}"
    titles = {"profileName": "Profile Name", "env": "Env", "orgName": "Org Name", "orgId": "Org ID"}
    profile_data = Menu().get_user_select(profiles, format, sort='profileName', titles=titles)
  else:
    if value not in profile_names:
      raise click.BadParameter(click.style('You must provide the name of a profile that you have configured', fg='red'))

    # Use this to update old profiles
    profile_data = auth.get_profile_data(value)
    if 'profileName' not in profile_data.keys():
      profile_data['profileName'] = value
      auth.update_profile(value, profile_data)

    if profile_data.get('orgId') is None or profile_data.get('orgId') == '':
      raise click.BadParameter(click.style('You must finish configuring this profile before you can use it', fg='red'))

  env_name = profile_data.get('env')
  env_data = Menu().sanatize_data(auth.get_env_data(env_name))

  ctx.obj = {**profile_data, **env_data}

  return pyke.Util(ctx=ctx.obj)
예제 #3
0
def post(url, profile, data):
    util = pyke.Util(profile=profile)

    req_data = serialize_data(data)

    resp = util.cli_request('POST',\
        util.build_url('{app}{url}', {'url': url}), data=json.dumps(req_data))

    click.echo(json.dumps(resp))
예제 #4
0
def get(url, profile):
    util = pyke.Util(profile=profile)

    if url.startswith('/auth'):
        resp = util.cli_request('GET',
                                util.build_url('{authUri}{url}', {'url': url}))
    else:
        resp = util.cli_request(
            'GET', util.build_url('{experienceCloudUri}{url}', {'url': url}))

    click.echo(json.dumps(resp))
예제 #5
0
def post(url, profile, data):
    util = pyke.Util(profile=profile)

    req_data = serialize_data(data)

    if url.startswith('/auth'):
        resp = util.cli_request('POST',\
            util.build_url('{authUri}{url}', {'url': url}), data=json.dumps(req_data))
    else:
        resp = util.cli_request('POST',\
            util.build_url('{experienceCloudUri}{url}', {'url': url}), data=json.dumps(req_data))

    click.echo(json.dumps(resp))
예제 #6
0
def get_company_context(ctx):
    util = pyke.Util(ctx=ctx)
    token_resp = util.login()
    headers = {
        'Authorization': 'Bearer ' + token_resp.get('access_token'),
        'Content-Type': 'application/json'
    }

    resp = requests.get(util.build_url('{app}/auth/v1/context'),
                        headers=headers,
                        verify=verify_tls)

    if resp.status_code == 200:
        return resp.json()['payload']['data']
    else:
        raise click.ClickException(
            click.style('Error getting company context', fg='red'))
예제 #7
0
def list(env, format, filter, json_flag):
    handlers = {'instanceType': lambda x: 'dev' if x == 'cc' else x}

    if 'instanceType=dev' in filter:
        filter = filter.replace('instanceType=dev', 'instanceType=cc')

    if 'isTest=None' in filter:
        filter = filter.replace('isTest=None', 'instanceType=cc')

    env_format = '{envName} {app}'
    titles = {'envName': 'Env Name', 'app': 'App'}

    if not env:
        envs = pyke.auth.list_envs()
        env_data = pyke.Menu().get_user_select(envs, env_format, titles=titles)
    else:
        env_data = pyke.auth.get_env_data(env)

    util = pyke.Util(ctx=env_data)

    access_token = util.login_without_context()
    util.ctx.update({'accessToken': access_token})

    headers = {
        'Authorization': 'Bearer ' + access_token,
        'Content-Type': 'application/json'
    }

    app_name = env_data.get('app')
    if not app_name:
        raise click.ClickException(click.style("Env not configured", fg='red'))

    resp = requests.get('{}/auth/v1/me/companies?sort=name&{}'.format(
        app_name, filter),
                        headers=headers,
                        verify=verify_tls)

    if json_flag:
        click.echo(resp.text)
        return

    pyke.Menu().print_menu(resp.json()['payload']['data'],
                           format,
                           handlers=handlers)
예제 #8
0
def child_companies(profile, format, filter, json_flag):
    util = pyke.Util()

    if 'instanceType=dev' in filter:
        filter = filter.replace('instanceType=dev', 'instanceType=cc')

    if 'isTest=None' in filter:
        filter = filter.replace('isTest=None', 'instanceType=cc')

    handlers = {'instanceType': lambda x: 'dev' if x == 'cc' else x}

    resp = util.cli_request(
        'GET',
        util.build_url('{app}/auth/v1/company/child-companies?{filter}',
                       {'filter': filter}))

    if json_flag:
        click.echo(json.dumps(resp))
        return

    util.print_table(resp['payload']['data'], format, handlers=handlers)
예제 #9
0
def add(profile_name, env, format):
    if not profile_name:
        profile_name = click.prompt(click.style("Profile Name", fg="white"),
                                    type=str)

    click.echo(' ')

    titles = {
        'envName': 'Env Name',
        'app': 'App',
        'audience': 'Audience',
        'token': 'Token'
    }

    headers = '{envName} {app} {audience} {token}'

    if env:
        env_data = pyke.auth.get_env_data(env)
    else:
        envs = pyke.auth.list_envs()
        env_data = pyke.Menu().get_user_select(envs,
                                               headers,
                                               sort='envName',
                                               titles=titles)

    util = pyke.Util(ctx=env_data)

    titles = {
        'name': 'Org Name',
        'instanceType': 'Org Type',
        'isTest': 'Test Org'
    }
    headers = "{name} {instanceType} {isTest}"
    company = pyke.Menu().get_user_select(util.get_companies(),
                                          headers,
                                          sort='orgName',
                                          titles=titles)

    profile_data = {}
    profile_data["orgId"] = company.get('id')
    profile_data["orgName"] = company.get('name')
    profile_data["env"] = util.ctx.get('envName')
    profile_data["instanceType"] = company.get('instanceType')
    profile_data["profileName"] = profile_name

    pyke.auth.update_profile(profile_name, profile_data)
    util.ctx.update(profile_data)

    company_context = get_company_context(util.ctx).get('company')

    if company_context:
        profile_data = pyke.auth.get_profile_data(profile_name)
        profile_data['experienceCloudUri'] = company_context[
            'experienceCloudUri']
        pyke.auth.update_profile(profile_name, profile_data)

    else:
        raise click.ClickException(
            click.style('Error getting company context', fg='red'))

    titles = {
        'profileName': 'Profile',
        'env': 'Environment',
        'orgName': 'Org Name',
        'orgId': 'Org ID'
    }

    pyke.Menu().print_menu([profile_data], format, titles=titles)
예제 #10
0
def get(url, profile):
    util = pyke.Util(profile=profile)

    resp = util.cli_request('GET', util.build_url('{app}{url}', {'url': url}))

    click.echo(json.dumps(resp))