PageRenderTime 14ms CodeModel.GetById 9ms app.highlight 4ms RepoModel.GetById 0ms app.codeStats 0ms

/library/Zend/Service/Nirvanix/Response.php

https://bitbucket.org/hamidrezas/melobit
PHP | 123 lines | 38 code | 11 blank | 74 comment | 5 complexity | a76166df47a1cd483e786f12afc20e18 MD5 | raw file
Possible License(s): AGPL-1.0
  1<?php
  2/**
  3 * Zend Framework
  4 *
  5 * LICENSE
  6 *
  7 * This source file is subject to the new BSD license that is bundled
  8 * with this package in the file LICENSE.txt.
  9 * It is also available through the world-wide-web at this URL:
 10 * http://framework.zend.com/license/new-bsd
 11 * If you did not receive a copy of the license and are unable to
 12 * obtain it through the world-wide-web, please send an email
 13 * to license@zend.com so we can send you a copy immediately.
 14 *
 15 * @category   Zend
 16 * @package    Zend_Service
 17 * @subpackage Nirvanix
 18 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 19 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 20 * @version    $Id: Response.php 24594 2012-01-05 21:27:01Z matthew $
 21 */
 22
 23/**
 24 * This class decorates a SimpleXMLElement parsed from a Nirvanix web service
 25 * response.  It is primarily exists to provide a convenience feature that
 26 * throws an exception when <ResponseCode> contains an error.
 27 *
 28 * @category   Zend
 29 * @package    Zend_Service
 30 * @subpackage Nirvanix
 31 * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
 32 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 33 */
 34class Zend_Service_Nirvanix_Response
 35{
 36    /**
 37     * SimpleXMLElement parsed from Nirvanix web service response.
 38     *
 39     * @var SimpleXMLElement
 40     */
 41    protected $_sxml;
 42
 43    /**
 44     * Class constructor.  Parse the XML response from a Nirvanix method
 45     * call into a decorated SimpleXMLElement element.
 46     *
 47     * @param string $xml  XML response string from Nirvanix
 48     * @throws Zend_Service_Nirvanix_Exception
 49     */
 50    public function __construct($xml)
 51    {
 52        $this->_sxml = @simplexml_load_string($xml);
 53
 54        if (! $this->_sxml instanceof SimpleXMLElement) {
 55            $this->_throwException("XML could not be parsed from response: $xml");
 56        }
 57
 58        $name = $this->_sxml->getName();
 59        if ($name != 'Response') {
 60            $this->_throwException("Expected XML element Response, got $name");
 61        }
 62
 63        $code = (int)$this->_sxml->ResponseCode;
 64        if ($code != 0) {
 65            $msg = (string)$this->_sxml->ErrorMessage;
 66            $this->_throwException($msg, $code);
 67        }
 68    }
 69
 70    /**
 71     * Return the SimpleXMLElement representing this response
 72     * for direct access.
 73     *
 74     * @return SimpleXMLElement
 75     */
 76    public function getSxml()
 77    {
 78        return $this->_sxml;
 79    }
 80
 81    /**
 82     * Delegate undefined properties to the decorated SimpleXMLElement.
 83     *
 84     * @param  string  $offset  Undefined property name
 85     * @return mixed
 86     */
 87    public function __get($offset)
 88    {
 89        return $this->_sxml->$offset;
 90    }
 91
 92    /**
 93     * Delegate undefined methods to the decorated SimpleXMLElement.
 94     *
 95     * @param  string  $offset  Underfined method name
 96     * @param  array   $args    Method arguments
 97     * @return mixed
 98     */
 99    public function __call($method, $args)
100    {
101        return call_user_func_array(array($this->_sxml, $method), $args);
102    }
103
104    /**
105     * Throw an exception.  This method exists to only contain the
106     * lazy-require() of the exception class.
107     *
108     * @param  string   $message  Error message
109     * @param  integer  $code     Error code
110     * @throws Zend_Service_Nirvanix_Exception
111     * @return void
112     */
113    protected function _throwException($message, $code = null)
114    {
115        /**
116         * @see Zend_Service_Nirvanix_Exception
117         */
118        require_once 'Zend/Service/Nirvanix/Exception.php';
119
120        throw new Zend_Service_Nirvanix_Exception($message, $code);
121    }
122
123}