      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\ObjectStore\Resource;
     19:
     20: use OpenCloud\ObjectStore\Constants\Header as HeaderConst;
     21:
     22: /**
     23:  * A container that has been CDN-enabled. Each CDN-enabled container has a unique
     24:  * Uniform Resource Locator (URL) that can be combined with its object names and
     25:  * openly distributed in web pages, emails, or other applications.
     26:  */
     27: class CDNContainer extends AbstractContainer
     28: {
     29:     const METADATA_LABEL = 'Cdn';
     30:
     31:     /**
     32:      * @return null|string|int
     33:      */
     34:     public function getCdnSslUri()
     35:     {
     36:         return $this->metadata->getProperty('Ssl-Uri');
     37:     }
     38:
     39:     /**
     40:      * @return null|string|int
     41:      */
     42:     public function getCdnUri()
     43:     {
     44:         return $this->metadata->getProperty('Uri');
     45:     }
     46:
     47:     /**
     48:      * @return null|string|int
     49:      */
     50:     public function getTtl()
     51:     {
     52:         return $this->metadata->getProperty('Ttl');
     53:     }
     54:
     55:     /**
     56:      * @return null|string|int
     57:      */
     58:     public function getCdnStreamingUri()
     59:     {
     60:         return $this->metadata->getProperty('Streaming-Uri');
     61:     }
     62:
     63:     /**
     64:      * @return null|string|int
     65:      */
     66:     public function getIosStreamingUri()
     67:     {
     68:         return $this->metadata->getProperty('Ios-Uri');
     69:     }
     70:
     71:     public function refresh($name = null, $url = null)
     72:     {
     73:         $response = $this->createRefreshRequest()->send();
     74:
     75:         $headers = $response->getHeaders();
     76:         $this->setMetadata($headers, true);
     77:
     78:         return $headers;
     79:     }
     80:
     81:     /**
     82:      * Turn on access logs, which track all the web traffic that your data objects accrue.
     83:      *
     84:      * @return \Guzzle\Http\Message\Response
     85:      */
     86:     public function enableCdnLogging()
     87:     {
     88:         $headers = array('X-Log-Retention' => 'True');
     89:
     90:         return $this->getClient()->put($this->getUrl(), $headers)->send();
     91:     }
     92:
     93:     /**
     94:      * Disable access logs.
     95:      *
     96:      * @return \Guzzle\Http\Message\Response
     97:      */
     98:     public function disableCdnLogging()
     99:     {
    100:         $headers = array('X-Log-Retention' => 'False');
    101:
    102:         return $this->getClient()->put($this->getUrl(), $headers)->send();
    103:     }
    104:
    105:     public function isCdnEnabled()
    106:     {
    107:         return $this->metadata->getProperty(HeaderConst::ENABLED) == 'True';
    108:     }
    109: }
    110: