def as_dict(self): rtn_dict = { "Name": self.name, "AccountId": self.account_id, "CreateDate": "%.3f" % self.created_time.timestamp(), "DatasetName": self.dataset_name, "EncryptionMode": self.encryption_mode, "Tags": self.tags or dict(), "LogSubscription": self.log_subscription, "MaxCapacity": self.max_capacity, "MaxRetries": self.max_retries, "ResourceArn": self.resource_arn, "RoleArn": self.role_arn, "Type": self.job_type, } # Add in subclass attributes for k in self.local_attrs: rtn_dict[camelcase_to_pascal( underscores_to_camelcase(k))] = getattr(self, k) # Remove items that have a value of None rtn_dict = {k: v for k, v in rtn_dict.items() if v is not None} return rtn_dict
def receive_message(self): queue_name = self._get_queue_name() message_attributes = self._get_multi_param("message_attributes") if not message_attributes: message_attributes = extract_input_message_attributes(self.querystring) attribute_names = self._get_multi_param("AttributeName") queue = self.sqs_backend.get_queue(queue_name) try: message_count = int(self.querystring.get("MaxNumberOfMessages")[0]) except TypeError: message_count = DEFAULT_RECEIVED_MESSAGES if message_count < 1 or message_count > 10: return self._error( "InvalidParameterValue", "An error occurred (InvalidParameterValue) when calling " "the ReceiveMessage operation: Value %s for parameter " "MaxNumberOfMessages is invalid. Reason: must be between " "1 and 10, if provided." % message_count, ) try: wait_time = int(self.querystring.get("WaitTimeSeconds")[0]) except TypeError: wait_time = int(queue.receive_message_wait_time_seconds) if wait_time < 0 or wait_time > 20: return self._error( "InvalidParameterValue", "An error occurred (InvalidParameterValue) when calling " "the ReceiveMessage operation: Value %s for parameter " "WaitTimeSeconds is invalid. Reason: must be <= 0 and " ">= 20 if provided." % wait_time, ) try: visibility_timeout = self._get_validated_visibility_timeout() except TypeError: visibility_timeout = queue.visibility_timeout except ValueError: return ERROR_MAX_VISIBILITY_TIMEOUT_RESPONSE, dict(status=400) messages = self.sqs_backend.receive_messages( queue_name, message_count, wait_time, visibility_timeout, message_attributes ) attributes = { "approximate_first_receive_timestamp": False, "approximate_receive_count": False, "message_deduplication_id": False, "message_group_id": False, "sender_id": False, "sent_timestamp": False, "sequence_number": False, } for attribute in attributes: pascalcase_name = camelcase_to_pascal(underscores_to_camelcase(attribute)) if any(x in ["All", pascalcase_name] for x in attribute_names): attributes[attribute] = True template = self.response_template(RECEIVE_MESSAGE_RESPONSE) return template.render(messages=messages, attributes=attributes)
def test_camelcase_to_pascal(input, expected): camelcase_to_pascal(input).should.equal(expected)