def _get_value_for_special_type(self, shape, special_type_map): if is_json_value_header(shape): return special_type_map['jsonvalue_header'] for special_type, marked_shape in self._context[ 'special_shape_types'].items(): if special_type in special_type_map: if shape == marked_shape: return special_type_map[special_type] return None
def _convert_header_value(self, shape, value): if shape.type_name == 'timestamp': datetime_obj = parse_to_aware_datetime(value) timestamp = calendar.timegm(datetime_obj.utctimetuple()) timestamp_format = shape.serialization.get( 'timestampFormat', self.HEADER_TIMESTAMP_FORMAT) return self._convert_timestamp_to_str(timestamp, timestamp_format) elif is_json_value_header(shape): # Serialize with no spaces after separators to save space in # the header. return self._get_base64(json.dumps(value, separators=(',', ':'))) else: return value
def _check_special_validation_cases(self, shape): if is_json_value_header(shape): return self._validate_jsonvalue_string
def _check_special_validation_cases(self, shape): if is_json_value_header(shape): return self._validate_jsonvalue_string if shape.type_name == 'structure' and shape.is_document_type: return self._validate_document
def _handle_string(self, shape, value): parsed = value if is_json_value_header(shape): decoded = base64.b64decode(value).decode(self.DEFAULT_ENCODING) parsed = json.loads(decoded) return parsed