How to use the botocore.compat.json.loads function in botocore

To help you get started, we’ve selected a few botocore examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github boto / botocore / tests / unit / test_payloads.py View on Github external
def test_json_payload_list(self):
        payload = botocore.payload.JSONPayload()
        p = botocore.parameters.ListParameter(None, name='foo',
                                              members={'type': 'string'})
        value = ['This', 'is', 'a', 'test']
        payload.add_param(p, value)
        json_body = json.loads(payload.getvalue())
        params = {"foo": ["This", "is", "a", "test"]}
        self.assertEqual(json_body, params)
github aws / aws-cli / tests / unit / customizations / datapipeline / test_translator.py View on Github external
def load_def(self, json_string):
        return json.loads(json_string, object_pairs_hook=OrderedDict)
github awslabs / aws-ec2rescue-linux / lib / botocore / credentials.py View on Github external
def _retrieve_credentials_using(self, credential_process):
        # We're not using shell=True, so we need to pass the
        # command and all arguments as a list.
        process_list = compat_shell_split(credential_process)
        p = self._popen(process_list,
                        stdout=subprocess.PIPE,
                        stderr=subprocess.PIPE)
        stdout, stderr = p.communicate()
        if p.returncode != 0:
            raise CredentialRetrievalError(
                provider=self.METHOD, error_msg=stderr.decode('utf-8'))
        parsed = botocore.compat.json.loads(stdout.decode('utf-8'))
        version = parsed.get('Version', '')
        if version != 1:
            raise CredentialRetrievalError(
                provider=self.METHOD,
                error_msg=("Unsupported version '%s' for credential process "
                           "provider, supported versions: 1" % version))
        try:
            return {
                'access_key': parsed['AccessKeyId'],
                'secret_key': parsed['SecretAccessKey'],
                'token': parsed.get('SessionToken'),
                'expiry_time': parsed.get('Expiration'),
            }
        except KeyError as e:
            raise CredentialRetrievalError(
                provider=self.METHOD,
github aws / aws-cli / awscli / argprocess.py View on Github external
if value.lstrip()[0] == '{':
            try:
                return json.loads(value, object_pairs_hook=OrderedDict)
            except ValueError as e:
                raise ParamError(
                    cli_name, "Invalid JSON: %s\nJSON received: %s"
                    % (e, value))
        raise ParamError(cli_name, "Invalid JSON:\n%s" % value)
    elif type_name == 'list':
        if isinstance(value, six.string_types):
            if value.lstrip()[0] == '[':
                return json.loads(value, object_pairs_hook=OrderedDict)
        elif isinstance(value, list) and len(value) == 1:
            single_value = value[0].strip()
            if single_value and single_value[0] == '[':
                return json.loads(value[0], object_pairs_hook=OrderedDict)
        try:
            # There's a couple of cases remaining here.
            # 1. It's possible that this is just a list of strings, i.e
            # --security-group-ids sg-1 sg-2 sg-3 => ['sg-1', 'sg-2', 'sg-3']
            # 2. It's possible this is a list of json objects:
            # --filters '{"Name": ..}' '{"Name": ...}'
            member_shape_model = argument_model.member
            return [_unpack_cli_arg(member_shape_model, v, cli_name)
                    for v in value]
        except (ValueError, TypeError) as e:
            # The list params don't have a name/cli_name attached to them
            # so they will have bad error messages.  We're going to
            # attach the parent parameter to this error message to provide
            # a more helpful error message.
            raise ParamError(cli_name, value[0])
github boto / botocore / botocore / loaders.py View on Github external
:param file_path: The full path to the file to load without
            the '.json' extension.

        :return: The loaded data if it exists, otherwise None.

        """
        full_path = file_path + '.json'
        if not os.path.isfile(full_path):
            return

        # By default the file will be opened with locale encoding on Python 3.
        # We specify "utf8" here to ensure the correct behavior.
        with open(full_path, 'rb') as fp:
            payload = fp.read().decode('utf-8')
            logger.debug("Loading JSON file: %s", full_path)
            return json.loads(payload, object_pairs_hook=OrderedDict)
github trulia / cidr-house-rules / vendor / botocore / auth.py View on Github external
def _get_body_as_dict(self, request):
        # For query services, request.data is form-encoded and is already a
        # dict, but for other services such as rest-json it could be a json
        # string or bytes. In those cases we attempt to load the data as a
        # dict.
        data = request.data
        if isinstance(data, six.binary_type):
            data = json.loads(data.decode('utf-8'))
        elif isinstance(data, six.string_types):
            data = json.loads(data)
        return data
github gkrizek / bash-lambda-layer / bin / awscli / customizations / cloudformation / yamlhelper.py View on Github external
def yaml_parse(yamlstr):
    """Parse a yaml string"""
    try:
        # PyYAML doesn't support json as well as it should, so if the input
        # is actually just json it is better to parse it with the standard
        # json parser.
        return json.loads(yamlstr, object_pairs_hook=OrderedDict)
    except ValueError:
        yaml.SafeLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, _dict_constructor)
        yaml.SafeLoader.add_multi_constructor(
            "!", intrinsics_multi_constructor)
        return yaml.safe_load(yamlstr)
github gkrizek / bash-lambda-layer / bin / botocore / handlers.py View on Github external
def json_decode_template_body(parsed, **kwargs):
    if 'TemplateBody' in parsed:
        try:
            value = json.loads(
                parsed['TemplateBody'], object_pairs_hook=OrderedDict)
            parsed['TemplateBody'] = value
        except (ValueError, TypeError):
            logger.debug('error loading JSON', exc_info=True)
github gkrizek / bash-lambda-layer / bin / botocore / utils.py View on Github external
def _get_response(self, full_url, headers, timeout):
        try:
            AWSRequest = botocore.awsrequest.AWSRequest
            request = AWSRequest(method='GET', url=full_url, headers=headers)
            response = self._session.send(request.prepare())
            response_text = response.content.decode('utf-8')
            if response.status_code != 200:
                raise MetadataRetrievalError(
                    error_msg=(
                        "Received non 200 response (%s) from ECS metadata: %s"
                    ) % (response.status_code, response_text))
            try:
                return json.loads(response_text)
            except ValueError:
                error_msg = (
                    "Unable to parse JSON returned from ECS metadata services"
                )
                logger.debug('%s:%s', error_msg, response_text)
                raise MetadataRetrievalError(error_msg=error_msg)
        except RETRYABLE_HTTP_ERRORS as e:
            error_msg = ("Received error when attempting to retrieve "
                         "ECS metadata: %s" % e)
            raise MetadataRetrievalError(error_msg=error_msg)
github boto / botocore / botocore / auth.py View on Github external
def _get_body_as_dict(self, request):
        # For query services, request.data is form-encoded and is already a
        # dict, but for other services such as rest-json it could be a json
        # string or bytes. In those cases we attempt to load the data as a
        # dict.
        data = request.data
        if isinstance(data, six.binary_type):
            data = json.loads(data.decode('utf-8'))
        elif isinstance(data, six.string_types):
            data = json.loads(data)
        return data