
org.elasticmq.rest.sqs.SendMessageBatchDirectives.scala Maven / Gradle / Ivy
The newest version!
package org.elasticmq.rest.sqs
import Constants._
import org.elasticmq.rest.sqs.directives.ElasticMQDirectives
trait SendMessageBatchDirectives { this: ElasticMQDirectives with SendMessageDirectives with BatchRequestsModule =>
val SendMessageBatchPrefix = "SendMessageBatchRequestEntry"
def sendMessageBatch(p: AnyParams) = {
p.action("SendMessageBatch") {
queueActorFromRequest(p) { queueActor =>
verifyMessagesNotTooLong(p)
val resultsFuture = batchRequest(SendMessageBatchPrefix, p) { (messageData, id) =>
doSendMessage(queueActor, messageData).map { case (message, digest, messageAttributeDigest) =>
{id}
{messageAttributeDigest} // TODO: Only send if message attributes included
{digest}
{message.id.id}
}
}
resultsFuture.map { results =>
respondWith {
{results}
{EmptyRequestId}
}
}
}
}
}
def verifyMessagesNotTooLong(parameters: Map[String, String]) {
val messageLengths = for {
parameterMap <-batchParametersMap(SendMessageBatchPrefix, parameters)
} yield {
parameterMap(MessageBodyParameter).length
}
verifyMessageNotTooLong(messageLengths.sum)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy