public function testProperties()
 {
     $Message = new PayloadMessage();
     $Message->setType(PayloadMessage::TYPE_PLAIN);
     $this->assertEquals(PayloadMessage::TYPE_PLAIN, $Message->getType());
     $Message->setType(PayloadMessage::TYPE_JSON);
     $this->assertEquals(PayloadMessage::TYPE_JSON, $Message->getType());
     $Message->setDelayWhileIdle(true);
     $this->assertTrue($Message->needDelayWhileIdle());
     $Message->setDelayWhileIdle(false);
     $this->assertFalse($Message->needDelayWhileIdle());
     $Message->setDryRun(true);
     $this->assertTrue($Message->isDryRun());
     $Message->setDryRun(false);
     $this->assertFalse($Message->isDryRun());
     $Message->setRestrictedPackageName('PACKageNAME');
     $this->assertEquals('PACKageNAME', $Message->getRestrictedPackageName());
     $this->assertTrue($Message->hasRestrictedPackageName());
     $Message->setType(PayloadMessage::TYPE_PLAIN);
     $Message->setRegistrationIds('REGistrationID');
     $this->assertEquals('REGistrationID', $Message->getRegistrationIds());
     $Message->setType(PayloadMessage::TYPE_JSON);
     $Message->setRegistrationIds(['REGistrationID1', 'REGistrationID2']);
     $this->assertEquals(['REGistrationID1', 'REGistrationID2'], $Message->getRegistrationIds());
     $Message->setTimeToLive(30.5);
     $this->assertEquals(30, $Message->getTimeToLive());
     $this->assertEquals(['registration_ids' => ['REGistrationID1', 'REGistrationID2'], 'delay_while_idle' => false, 'dry_run' => false, 'time_to_live' => 30, 'restricted_package_name' => 'PACKageNAME'], $Message->export());
 }
Beispiel #2
0
 /**
  * Send GCM message method
  * @param PayloadMessage $Message GCM message instance
  * @return Response sent response instance
  * @throws GCMFormatException when request or response format was incorrect
  * @throws GCMUnauthorizedException when was incorrect authorization key
  * @throws GCMServerError when something wrong on the GCM server
  * @throws GCMUnrecoverableError when GCM server is not available
  */
 public function send(PayloadMessage $Message)
 {
     switch ($Message->getType()) {
         case PayloadMessage::TYPE_PLAIN:
             $this->getRequest()->setContentTypeCode(Request::CONTENT_TYPE_UNDEFINED);
             $this->getRequest()->addHeader('Content-Type', self::CONTENT_TYPE_PLAIN_TEXT);
             break;
         case PayloadMessage::TYPE_JSON:
             $this->getRequest()->setContentTypeCode(Request::CONTENT_TYPE_JSON);
             $this->getRequest()->addHeader('Content-Type', self::CONTENT_TYPE_JSON);
             break;
         default:
             throw new GCMFormatException('unsupported request format code \'' . $Message->getType() . '\'');
     }
     $this->getRequest()->setPostData($Message->export());
     try {
         $result = $this->getRequest()->send();
         Response::$type = $Message->getType();
         return Response::initializeByString($result);
     } catch (HttpClientErrorCodeException $Ex) {
         switch ($Ex->getCode()) {
             case '400':
                 throw new GCMFormatException('invalid JSON request with message \'' . $Ex->getMessage() . '\'');
             case '401':
                 throw new GCMUnauthorizedException('invalid authorization key \'' . $this->getAuthorizationKey() . '\'');
             default:
                 throw $Ex;
         }
     } catch (HttpServerErrorCodeException $Ex) {
         switch ($Ex->getCode()) {
             case '500':
                 throw new GCMUnrecoverableError('unrecoverable GCM server error');
             default:
                 $headers = $this->getRequest()->getResponseHeaders();
                 throw new GCMServerError(@$headers['Retry-After']);
         }
     }
 }