All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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