     1: <?php
     2: /**
     3:  * Copyright 2012-2014 Rackspace US, Inc.
     4:  *
     5:  * Licensed under the Apache License, Version 2.0 (the "License");
     6:  * you may not use this file except in compliance with the License.
     7:  * You may obtain a copy of the License at
     8:  *
     9:  * http://www.apache.org/licenses/LICENSE-2.0
    10:  *
    11:  * Unless required by applicable law or agreed to in writing, software
    12:  * distributed under the License is distributed on an "AS IS" BASIS,
    13:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14:  * See the License for the specific language governing permissions and
    15:  * limitations under the License.
    16:  */
    17:
    18: namespace OpenCloud\CloudMonitoring\Resource;
    19:
    20: use OpenCloud\Common\Http\Message\Formatter;
    21:
    22: /**
    23:  * Notification class.
    24:  */
    25: class Notification extends AbstractResource
    26: {
    27:     /**
    28:      * @var string
    29:      */
    30:     private $id;
    31:
    32:     /**
    33:      * @var string Friendly name for the notification.
    34:      */
    35:     private $label;
    36:
    37:     /**
    38:      * @var string|NotificationType The notification type to send.
    39:      */
    40:     private $type;
    41:
    42:     /**
    43:      * @var array A hash of notification specific details based on the notification type.
    44:      */
    45:     private $details;
    46:
    47:     protected static $json_name = false;
    48:     protected static $json_collection_name = 'values';
    49:     protected static $url_resource = 'notifications';
    50:
    51:     protected static $emptyObject = array(
    52:         'label',
    53:         'type',
    54:         'details'
    55:     );
    56:
    57:     protected static $requiredKeys = array(
    58:         'type',
    59:         'details'
    60:     );
    61:
    62:     protected $associatedResources = array(
    63:         'NotificationType' => 'NotificationType'
    64:     );
    65:
    66:     public function testUrl($debug = false)
    67:     {
    68:         return $this->getService()->getUrl('test-notification');
    69:     }
    70:
    71:     public function test($debug = false)
    72:     {
    73:         $response = $this->getService()
    74:             ->getClient()
    75:             ->post($this->testUrl($debug))
    76:             ->send();
    77:
    78:         return Formatter::decode($response);
    79:     }
    80: }
    81: