?iť?
Current Path : /home/scgforma/www/cloud/3rdparty/rackspace/php-opencloud/lib/OpenCloud/CDN/ |
Current File : /home/scgforma/www/cloud/3rdparty/rackspace/php-opencloud/lib/OpenCloud/CDN/Service.php |
<?php /** * Copyright 2012-2014 Rackspace US, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace OpenCloud\CDN; use OpenCloud\Common\Service\CatalogService; use OpenCloud\Common\Http\Message\Formatter; use OpenCloud\CDN\Resource\Service as ServiceResource; use OpenCloud\CDN\Resource\Flavor; /** * The CDN class represents the OpenStack Poppy service. * * Poppy is a service that abstracts various CDN providers APIs */ class Service extends CatalogService { const SUPPORTED_VERSION = 'v1.0'; const DEFAULT_TYPE = 'cdn'; const DEFAULT_NAME = 'rackCDN'; const MAX_LIMIT = 20; protected $regionless = true; /** * Returns a Service object associated with this CDN service * * @param string $id ID of service to retrieve * @return \OpenCloud\CDN\Resource\Service object */ public function service($id = null) { return $this->resource('Service', $id); } /** * Creates a new Service and returns it. * * @see https://github.com/rackspace/php-opencloud/blob/master/docs/userguide/CDN/USERGUIDE.md#create-a-service * @param array $params Service creation parameters. * @return \OpenCloud\CDN\Resource\Service Object representing created service */ public function createService(array $params = array()) { $service = $this->service(); $service->create($params); return $service; } /** * Returns a Service object associated with this CDN service * * @param string $id ID of service to retrieve * @return \OpenCloud\CDN\Resource\Service object */ public function getService($id) { return $this->service($id); } /** * Returns a list of services you created * * @param array $params * @return \OpenCloud\Common\Collection\PaginatedIterator */ public function listServices(array $params = array()) { $params['limit'] = isset($params['limit']) && $params['limit'] <= self::MAX_LIMIT ?: self::MAX_LIMIT; $url = clone $this->getUrl(); $url->addPath(ServiceResource::resourceName())->setQuery($params); return $this->resourceList('Service', $url); } /** * Returns a Flavor object associated with this CDN service * * @param string $id ID of flavor to retrieve * @return \OpenCloud\CDN\Resource\Flavor object */ public function flavor($id = null) { return $this->resource('Flavor', $id); } /** * Creates a new Flavor and returns it. * * @see https://github.com/rackspace/php-opencloud/blob/master/docs/userguide/CDN/USERGUIDE.md#create-a-flavor * @param array $params Flavor creation parameters. * @return \OpenCloud\CDN\Resource\Flavor Object representing created flavor */ public function createFlavor(array $params = array()) { $flavor = $this->flavor(); $flavor->create($params); return $flavor; } /** * Returns a Flavor object associated with this CDN service * * @param string $id ID of flavor to retrieve * @return \OpenCloud\CDN\Resource\Flavor object */ public function getFlavor($id) { return $this->flavor($id); } /** * Returns a list of flavors you created * * @param array $params * @return \OpenCloud\Common\Collection\PaginatedIterator */ public function listFlavors(array $params = array()) { $url = clone $this->getUrl(); $url->addPath(Flavor::resourceName())->setQuery($params); return $this->resourceList('Flavor', $url); } /** * Returns the home document for the CDN service * * @return \stdClass home document response */ public function getHomeDocument() { $url = clone $this->getUrl(); // This hack is necessary otherwise Guzzle will remove the trailing // slash from the URL and the request will fail because the service // expects the trailing slash :( $url->setPath($url->getPath() . '/'); $response = $this->getClient()->get($url)->send(); return Formatter::decode($response); } /** * Returns the ping (status) response for the CDN service * * @return Guzzle\Http\Message\Response */ public function getPing() { $url = clone $this->getUrl(); $url->addPath('ping'); $request = $this->getClient()->get($url); // This is necessary because the response does not include a body // and fails with a 406 Not Acceptable if the default // 'Accept: application/json' header is used in the request. $request->removeHeader('Accept'); return $request->send(); } /** * Return namespaces. * * @return array */ public function namespaces() { return array(); } }