Overview
  • Namespace
  • Class

Namespaces

  • OpenCloud
    • Autoscale
      • Resource
    • CloudMonitoring
      • Collection
      • Exception
      • Resource
    • Common
      • Collection
      • Constants
      • Exceptions
      • Http
        • Message
      • Log
      • Resource
      • Service
    • Compute
      • Constants
      • Exception
      • Resource
    • Database
      • Resource
    • DNS
      • Collection
      • Resource
    • Identity
      • Constants
      • Resource
    • Image
      • Enum
      • Resource
        • JsonPatch
        • Schema
    • LoadBalancer
      • Collection
      • Enum
      • Resource
    • Networking
      • Resource
    • ObjectStore
      • Constants
      • Exception
      • Resource
      • Upload
    • Orchestration
      • Resource
    • Queues
      • Collection
      • Exception
      • Resource
    • Volume
      • Resource

Classes

  • OpenCloud\Volume\Resource\Snapshot
  • OpenCloud\Volume\Resource\Volume
  • OpenCloud\Volume\Resource\VolumeType
  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\Common\Service;
 19 
 20 /**
 21  * This object represents an individual service catalog item - in other words an API Service. Each service has
 22  * particular information which form the basis of how it distinguishes itself, and how it executes API operations.
 23  */
 24 class CatalogItem
 25 {
 26     /**
 27      * @var string
 28      */
 29     private $name;
 30 
 31     /**
 32      * @var string
 33      */
 34     private $type;
 35 
 36     /**
 37      * @var array
 38      */
 39     private $endpoints = array();
 40 
 41     /**
 42      * Construct a CatalogItem from a mixed input.
 43      *
 44      * @param  $object
 45      * @return CatalogItem
 46      */
 47     public static function factory($object)
 48     {
 49         $item = new self();
 50         $item->setName($object->name)
 51             ->setType($object->type)
 52             ->setEndpoints($object->endpoints);
 53 
 54         return $item;
 55     }
 56 
 57     /**
 58      * @param $name
 59      * @return $this
 60      */
 61     public function setName($name)
 62     {
 63         $this->name = $name;
 64 
 65         return $this;
 66     }
 67 
 68     /**
 69      * @return string
 70      */
 71     public function getName()
 72     {
 73         return $this->name;
 74     }
 75 
 76     /**
 77      * A basic string check.
 78      *
 79      * @param  $string
 80      * @return bool
 81      */
 82     public function hasName($string)
 83     {
 84         return !strnatcasecmp($this->name, $string);
 85     }
 86 
 87     /**
 88      * @param $type
 89      * @return $this
 90      */
 91     public function setType($type)
 92     {
 93         $this->type = $type;
 94 
 95         return $this;
 96     }
 97 
 98     /**
 99      * @return string
100      */
101     public function getType()
102     {
103         return $this->type;
104     }
105 
106     /**
107      * @param $string
108      * @return bool
109      */
110     public function hasType($string)
111     {
112         return !strnatcasecmp($this->type, $string);
113     }
114 
115     /**
116      * @param  array $endpoints
117      * @return $this
118      */
119     public function setEndpoints(array $endpoints)
120     {
121         $this->endpoints = $endpoints;
122 
123         return $this;
124     }
125 
126     /**
127      * @return array
128      */
129     public function getEndpoints()
130     {
131         return $this->endpoints;
132     }
133 
134     /**
135      * Using a standard data object, extract its endpoint.
136      *
137      * @param $region
138      * @return mixed
139      * @throws \OpenCloud\Common\Exceptions\EndpointError
140      */
141     public function getEndpointFromRegion($region)
142     {
143         foreach ($this->endpoints as $endpoint) {
144             // Return the endpoint if it is regionless OR if the endpoint's
145             // region matches the $region supplied by the caller.
146             if (!isset($endpoint->region) || $endpoint->region == $region) {
147                 return $endpoint;
148             }
149         }
150 
151         throw new \OpenCloud\Common\Exceptions\EndpointError(sprintf(
152             'This service [%s] does not have access to the [%s] endpoint.',
153             $this->name,
154             $region
155         ));
156     }
157 }
158 
API documentation generated by ApiGen