/** 
  * @covers WindowsAzure\ServiceBus\Models\ReceiveMessageOptions::getReceiveMode
  * @covers WindowsAzure\ServiceBus\Models\ReceiveMessageOptions::setReceiveMode
  */
 public function testGetSetReceiveMode()
 {
     // Setup
     $expected = 'testReceiveMode';
     $receiveMessageOptions = new ReceiveMessageOptions();
     // Test
     $receiveMessageOptions->setReceiveMode($expected);
     $actual = $receiveMessageOptions->getReceiveMode();
     // Assert
     $this->assertEquals($expected, $actual);
 }
 /**
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::createQueue
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::deleteQueue
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveQueueMessage
  */
 private function doOneTimeSetup()
 {
     $testAlphaExists = false;
     $queues = $this->restProxy->listQueues()->getQueueInfos();
     foreach ($queues as $queue) {
         $queueName = $queue->getTitle();
         if (Utilities::startsWith($queueName, 'Test') || Utilities::startsWith($queueName, 'test')) {
             if (strtolower($queueName) == strtolower('TestAlpha')) {
                 $testAlphaExists = true;
                 $count = $queue->getQueueDescription()->getMessageCount();
                 for ($i = 0; $i != $count; ++$i) {
                     $opts = new ReceiveMessageOptions();
                     $opts->setTimeout(20);
                     try {
                         $this->restProxy->receiveQueueMessage($queueName, $opts);
                     } catch (\Exception $ex) {
                         error_log($ex->getMessage());
                     }
                 }
             } else {
                 try {
                     $this->restProxy->deleteQueue($queueName);
                 } catch (\Exception $ex) {
                     error_log($ex->getMessage());
                 }
             }
         }
     }
     foreach ($this->restProxy->listTopics()->getTopicInfos() as $topic) {
         $topicName = $topic->getTitle();
         if (Utilities::startsWith($topicName, 'Test') || Utilities::startsWith($topicName, 'test')) {
             try {
                 $this->restProxy->deleteTopic($topicName);
             } catch (\Exception $ex) {
                 error_log($ex->getMessage());
             }
         }
     }
     if (!$testAlphaExists) {
         try {
             $this->restProxy->createQueue(new QueueInfo('TestAlpha'));
         } catch (\Exception $ex) {
             error_log($ex->getMessage());
         }
     }
 }
 /**
  * @throws \PHPQueue\Exception\JobNotFoundException
  * @return array
  */
 public function get()
 {
     $this->beforeGet();
     $this->checkQueue();
     try {
         $options = new ReceiveMessageOptions();
         $options->setPeekLock();
         $response = $this->getConnection()->receiveQueueMessage($this->queue_name, $options);
         if (empty($response)) {
             throw new JobNotFoundException('No message found.', 404);
         }
         $this->last_job = $response;
         $this->last_job_id = $response->getMessageId();
         $this->afterGet();
         return json_decode($response->getBody(), TRUE);
     } catch (ServiceException $ex) {
         throw new JobNotFoundException($ex->getMessage(), $ex->getCode());
     }
 }
 /**
  * Receives a message. 
  * 
  * Queues:
  *
  * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780735
  * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780756 
  *
  * Topic Subscriptions:
  * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780722
  * @link http://msdn.microsoft.com/en-us/library/windowsazure/hh780770
  *
  * @param string                 $path                  The path of the 
  *                                                      message. 
  * @param ReceivedMessageOptions $receiveMessageOptions The options to 
  *                                                      receive the message. 
  * 
  * @return BrokeredMessage
  */
 public function receiveMessage($path, $receiveMessageOptions = null)
 {
     if (is_null($receiveMessageOptions)) {
         $receiveMessageOptions = new ReceiveMessageOptions();
     }
     $httpCallContext = new HttpCallContext();
     $httpCallContext->setPath($path);
     $httpCallContext->addStatusCode(Resources::STATUS_CREATED);
     $httpCallContext->addStatusCode(Resources::STATUS_NO_CONTENT);
     $httpCallContext->addStatusCode(Resources::STATUS_OK);
     $timeout = $receiveMessageOptions->getTimeout();
     if (!is_null($timeout)) {
         $httpCallContext->addQueryParameter('timeout', $timeout);
     }
     if ($receiveMessageOptions->getIsReceiveAndDelete()) {
         $httpCallContext->setMethod(Resources::HTTP_DELETE);
     } elseif ($receiveMessageOptions->getIsPeekLock()) {
         $httpCallContext->setMethod(Resources::HTTP_POST);
     } else {
         throw new \InvalidArgumentException(Resources::INVALID_RECEIVE_MODE_MSG);
     }
     $response = $this->sendContext($httpCallContext);
     if ($response->getStatus() === Resources::STATUS_NO_CONTENT) {
         $brokeredMessage = null;
     } else {
         $responseHeaders = $response->getHeader();
         $brokerProperties = new BrokerProperties();
         if (array_key_exists('brokerproperties', $responseHeaders)) {
             $brokerProperties = BrokerProperties::create($responseHeaders['brokerproperties']);
         }
         if (array_key_exists('location', $responseHeaders)) {
             $brokerProperties->setLockLocation($responseHeaders['location']);
         }
         $brokeredMessage = new BrokeredMessage();
         $brokeredMessage->setBrokerProperties($brokerProperties);
         if (array_key_exists(Resources::CONTENT_TYPE, $responseHeaders)) {
             $brokeredMessage->setContentType($responseHeaders[Resources::CONTENT_TYPE]);
         }
         if (array_key_exists('Date', $responseHeaders)) {
             $brokeredMessage->setDate($responseHeaders['Date']);
         }
         $brokeredMessage->setBody($response->getBody());
         foreach (array_keys($responseHeaders) as $headerKey) {
             $value = $responseHeaders[$headerKey];
             $decodedValue = json_decode($value);
             if (is_scalar($decodedValue)) {
                 $brokeredMessage->setProperty($headerKey, $decodedValue);
             }
         }
     }
     return $brokeredMessage;
 }
 /**
  * @covers WindowsAzure\ServiceBus\ServiceBusRestProxy::receiveQueueMessage
  */
 public function testMessageMayHaveCustomProperties()
 {
     // Setup
     $queueName = 'testMessageMayHaveCustomProperties';
     $queueDescription = new QueueDescription();
     $queueInfo = new QueueInfo($queueName, $queueDescription);
     $expectedTestStringValue = 'testStringValue';
     $expectedTestIntValue = 38;
     $expectedTestDoubleValue = 3.14159;
     $expectedTestBooleanValue = true;
     $expectedTestBooleanFalseValue = false;
     $expectedTestArrayValue = array(2, 3, 5, 7);
     $this->safeDeleteQueue($queueName);
     $this->createQueue($queueInfo);
     $brokeredMessage = new BrokeredMessage();
     $brokeredMessage->setProperty('testString', $expectedTestStringValue);
     $brokeredMessage->setProperty('testInt', $expectedTestIntValue);
     $brokeredMessage->setProperty('testDouble', $expectedTestDoubleValue);
     $brokeredMessage->setProperty('testBoolean', $expectedTestBooleanValue);
     $brokeredMessage->setProperty('testBooleanFalse', $expectedTestBooleanFalseValue);
     $this->restProxy->sendQueueMessage($queueName, $brokeredMessage);
     $receiveMessageOptions = new ReceiveMessageOptions();
     $receiveMessageOptions->setTimeout(5);
     $receiveMessageOptions->setReceiveAndDelete();
     // Test
     $receivedMessage = $this->restProxy->receiveQueueMessage($queueName, $receiveMessageOptions);
     // Assert
     $this->assertNotNull($receivedMessage);
     $this->assertEquals($expectedTestStringValue, $receivedMessage->getProperty('testString'));
     $this->assertEquals($expectedTestIntValue, $receivedMessage->getProperty('testInt'));
     $this->assertEquals($expectedTestDoubleValue, $receivedMessage->getProperty('testDouble'));
     $this->assertEquals($expectedTestBooleanValue, $receivedMessage->getProperty('testBoolean'));
     $this->assertEquals($expectedTestBooleanFalseValue, $receivedMessage->getProperty('testBooleanFalse'));
 }
 /**
  * Pop the next job off of the queue.
  *
  * @param  string $queue
  *
  * @return \Illuminate\Queue\Jobs\Job|null
  */
 public function pop($queue = null)
 {
     $queue = $this->getQueue($queue);
     $options = new ReceiveMessageOptions();
     $options->setPeekLock();
     $job = $this->azure->receiveQueueMessage($queue, $options);
     if (!is_null($job)) {
         return new AzureJob($this->container, $this->azure, $job, $queue);
     }
 }