diff options
| author | Dave Tosh <dave@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-03-23 17:30:14 +0000 | 
|---|---|---|
| committer | Dave Tosh <dave@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-03-23 17:30:14 +0000 | 
| commit | a161b38e65fa698133402f4fb23548242f494018 (patch) | |
| tree | e75300111195f40f14c2389abddac65db9068da8 /models | |
| download | elgg-a161b38e65fa698133402f4fb23548242f494018.tar.gz elgg-a161b38e65fa698133402f4fb23548242f494018.tar.bz2 | |
This videolist plugin shows real promise so we shall work on it for v1.8 then release it back to the community.
Diffstat (limited to 'models')
| -rw-r--r-- | models/lib/class.vimeo.php | 3583 | 
1 files changed, 3583 insertions, 0 deletions
| diff --git a/models/lib/class.vimeo.php b/models/lib/class.vimeo.php new file mode 100644 index 000000000..03508d148 --- /dev/null +++ b/models/lib/class.vimeo.php @@ -0,0 +1,3583 @@ +<?php +/** +* SimpleVimeo +*  +* API Framework for vimeo.com +* @package      SimpleVimeo +* @author       Adrian Rudnik <adrian@periocode.de> +* @link         http://code.google.com/p/php5-simplevimeo/ +*/ + +/** +* Enable debug to output raw request and response information +*/ + +define('VIMEO_DEBUG_REQUEST', true); +define('VIMEO_DEBUG_RESPONSE', true); + +/** +* Vimeo base class +* +* Provides vital functions to API (access, permission and object handling) +* +* @package     SimpleVimeo +* @subpackage  Base +*/ + +class VimeoBase { + +    const PROJECT_NAME      = 'php5-simplevimeo'; +     +    /** +    * Currently logged in user object +    * @var  VimeoUserEntity +    */ +    private static $oUser = false; +     +    /** +    * Currently logged in user permission +    * @var  string +    */ +    private static $ePermission = false; +     +    /** +    * Currently logged in user token +    * @var  string +    */ +    private static $sToken = false; +     +    /** +    * Vimeo Application API key +    * @var  string +    */ +    private static $sApiKey = '7a223534b3c1d0979a954f93cb746173  '; +     +    /** +    * Vimeo Application API secret key +    * @var  string +    */ +    private static $sApiSecret = 'b11e83370'; + +    const VIMEO_REST_URL    = 'http://vimeo.com/api/rest/'; +    const VIMEO_AUTH_URL    = 'http://vimeo.com/services/auth/'; +    const VIMEO_UPLOAD_URL  = 'http://vimeo.com/services/upload/'; +    const VIMEO_LOGIN_URL   = 'http://vimeo.com/log_in'; + +    /** +    * You can choose between the following engines: +    * executeRemoteCall_FSOCK = PHP5 file_get_content and stream_contexts (bad error handling) +    * executeRemoteCall_CURL = CURL is used for file transfer (better error handling) +    */ +    const REQUEST_ENGINE_CURL           = 'executeRemoteCall_CURL'; +    const VIDEOPOST_ENGINE_FSOCK        = 'executeVideopostCall_CURL'; +     +    const PERMISSION_NONE               = false; +    const PERMISSION_READ               = 'read'; +    const PERMISSION_WRITE              = 'write'; +    const PERMISSION_DELETE             = 'delete'; +     +    const COOKIE_FILE                   = '/tmp/simplevimeo.cookies'; +     +    const DEBUG_ENABLE					= false; +    const DEBUG_LOGFILE					= '/tmp/simplevimeo.debug'; +     +    /** +    * Debug output function +    */ +    public static function debug($sTitle, $sContent) { +    	if(self::DEBUG_ENABLE) { +			$sMessage = 'DEBUG ' . date('Y-m-d H:i:s', time()) . "\n"; +			$sMessage .= 'CONTENT: ' . $sContent . "\n"; +			$sMesasge .= $sContent . "\n\n"; +			 +			$fhLog = fopen(self::DEBUG_LOGFILE, 'a+'); +			 +			if(!$fhLog) { +				throw new VimeoBaseException('Debug Logfile "' . self::DEBUG_LOGFILE . '" could not be found or written'); +			} else { +				fputs($fhLog, $sMessage); +				fclose($fhLog); +			} +    	} +    } +     +    /** +    * Update Authentication +    *  +    * Initializes user and permission information if a token is present. +    * You can alter this method or skip it if you store user information +    * and permission in an external database. Then i would recommend a +    * VimeoAuthRequest::checkLoogin for confirmation. +    *  +    * @access   private +    * @return   void +    */ +    private function updateAuthentication() { +        if(self::$sToken && (!self::$ePermission || !self::$oUser)) { +            $oResponse = VimeoAuthRequest::checkToken(self::$sToken); +             +            // Parse user +            self::$oUser = $oResponse->getUser(); +             +            // Parse permission +            self::$ePermission = $oResponse->getPermission(); +        } +    } +     +    /** +    * Check permission +    *  +    * Checks the current user permission with the given one. This will be +    * heavily used by the executeRemoteCall method to ensure the user +    * will not run into trouble. +    *  +    * @access   public +    * @param    string      Needed Permission +    * @return   boolean     TRUE if access can be granted, FALSE if permission denied +    */ +    public function checkPermission($ePermissionNeeded) { +        // Update authentication data before permission check +        self::updateAuthentication(); +         +        // Permission DELETE check +        if($ePermissionNeeded == self::PERMISSION_DELETE && self::$ePermission == self::PERMISSION_DELETE) { +            return true; +        } +         +        // Permission WRITE check +        if($ePermissionNeeded == self::PERMISSION_WRITE && (self::$ePermission == self::PERMISSION_DELETE || self::$ePermission == self::PERMISSION_WRITE)) { +            return true; +        } +         +        // Permission READ check +        if($ePermissionNeeded == self::PERMISSION_READ && (self::$ePermission == self::PERMISSION_DELETE || self::$ePermission == self::PERMISSION_WRITE || self::$ePermission == self::PERMISSION_READ)) { +            return true; +        } +         +        return false; +    } +     +    /** +    * Proxy for API queries +    *  +    * Will check permission for the requested API method as well as type +    * of the object result response or exception. Will call the given +    * API query handler method (default: executeRemoteCall_CURL) for +    * the raw connection stuff +    *  +    * @access   public +    * @param    string          API method name +    * @param    array           Additional arguments that need to be passed to the API +    * @return   VimeoResponse   Response object of API corresponding query (for vimeo.test.login you will get VimeoTestLoginResponse object) +    */ +    public function executeRemoteCall($sMethod, $aArgs = array()) { +        // Get exception handler +        $sExceptionClass = VimeoMethod::getExceptionObjectForMethod($sMethod); +         +        // Check for errors in parameters +        $sTargetClass = VimeoMethod::getTargetObjectForMethod($sMethod); +         +        // Get the permission needed to run this method +        $ePermissionNeeded = VimeoMethod::getPermissionRequirementForMethod($sMethod); +         +        // If permission requirement is not met refuse to even call the API, safes bandwith for both ends +        if($ePermissionNeeded != VimeoBase::PERMISSION_NONE && !self::checkPermission($ePermissionNeeded)) { +            throw new $sExceptionClass('Permission error: "' . VimeoMethod::getPermissionRequirementForMethod($sMethod) . '" needed, "' . self::$ePermission . '" given'); +        } +         +        // Append method to request arguments +        $aArgs['method'] = $sMethod; +         +        // Check that the API query handler method exists and can be called +        if(!method_exists(__CLASS__, self::REQUEST_ENGINE_CURL)) { +            throw new VimeoBaseException('Internal error: Request engine handler method not found', 2); +        } +         +        // Build up the needed API arguments + +        // Set API key +        $aArgs['api_key']       = self::$sApiKey; +         +        // Set request format +        $aArgs['format']        = 'php'; + +        // Set token +        if(self::$sToken) $aArgs['auth_token'] = self::$sToken; +         +        // Generate signature +        $aArgs['api_sig']       = self::buildSignature($aArgs); + +        // Do the request +        $aResponse = call_user_func(array(__CLASS__, self::REQUEST_ENGINE_CURL), $aArgs); + +        // Debug request +        if(defined('VIMEO_DEBUG_REQUEST') && VIMEO_DEBUG_REQUEST) { +            self::debug('API request', print_r($aArgs, true)); +        } +         +        // Debug response +        if(defined('VIMEO_DEBUG_RESPONSE') && VIMEO_DEBUG_RESPONSE) { +            self::debug('API response', print_r($aResponse, true)); +        } +         +        // Transform the result into a result class +        $oResult = new $sTargetClass($aResponse); +         +        // Check if request was successfull +        if(!$oResult->getStatus()) { +            // If not, create an given exception class for the given method and pass through error code and message +            throw new $sExceptionClass($oResult->getError()->getMessage(), $oResult->getError()->getCode()); +        } +         +        // Return the base class object instance for the corresponding API query +        return $oResult; +    } +     +    /** +    * Execute raw API query with CURL +    *  +    * Implements CURL API queries in php format response +    *  +    * @author   Ted Roden +    * @access   private +    * @param    array       Additional arguments for the API query +    * @return   stdClass    Simple PHP object enclosing the API result +    */ +    private function executeRemoteCall_CURL($aArgs) { +        $ch = curl_init(self::VIMEO_REST_URL); +        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +        curl_setopt($ch, CURLOPT_POST, 1); +        curl_setopt($ch, CURLOPT_POSTFIELDS, $aArgs); +        curl_setopt($ch, CURLOPT_USERAGENT, self::PROJECT_NAME); + +        $data = curl_exec($ch); +        if(curl_errno($ch)) +            throw new VimeoRequestException('executeRemoteCall_CURL error: ' . curl_error($ch), curl_errno($ch)); +        else { +            curl_close($ch); +             +            if(!$data || strlen(trim($data)) < 2) { +                throw new VimeoRequestException('API request error: No result returned.', 1); +            } +            return unserialize($data); +        } +    } +     +    /** +    * Execute raw API query with FSOCK +    *  +    * Implements FSOCK API queries in php format response +    *  +    * @access   private +    * @param    array       Additional arguemnts for the API query +    * @return   stdClass    Simple PHP object enclosing the API result +    */ +    private function executeRemoteCall_FSOCK($aArgs) { +        $sResponse = file_get_contents(self::VIMEO_REST_URL, NULL, stream_context_create(array('http' => array('method' => 'POST', 'header'=> 'Content-type: application/x-www-form-urlencoded', 'content' => http_build_query($aArgs))))); +        if(!$sResponse || strlen(trim($sResponse)) < 2) { +            throw new VimeoRequestException('API request error: No result returned.', 1); +        } else { +            return unserialize($sResponse); +        } +    } + +    /** +    * Proxy for video uploads +    *  +    * Will call the given video upload handler method (default: executeVideopostCall_FSOCK) +    * for the raw connection and send stuff +    *  +    * @access   public +    * @param    string          Local filename to be transfered +    * @param    string          Ticket +    * @return   string          VimeoVideosCheckUploadStatusResponse +    */ +    public function executeVideopostCall($sFilename, $sTicket = false) { +        // Check that the upload query handler method exists and can be called +        if(!method_exists(__CLASS__, self::VIDEOPOST_ENGINE_FSOCK)) { +            throw new VimeoUploadException('Upload error: Videopost engine handler method not found', 1); +        } +         +        // If permission requirement is not met refuse to even call the API, safes bandwith for both ends +        if(!self::checkPermission(VimeoBase::PERMISSION_WRITE)) { +            throw new VimeoUploadException('Upload error: Missing "write" permission for current user', 2); +        } + +        // Check that the file exists +        if(!file_exists($sFilename)) { +            throw new VimeoUploadException('Upload error: Local file does not exists', 3); +        } +         +        // Check that the file is readable +        if(!is_readable($sFilename)) { +            throw new VimeoUploadException('Upload error: Local file is not readable', 4); +        } +         +        // Check that the file size is not larger then the allowed size you can upload +        $oResponse = VimeoPeopleRequest::getUploadStatus(); +        if(filesize($sFilename) > $oResponse->getRemainingBytes()) { +            throw new VimeoUploadException('Upload error: Videosize exceeds remaining bytes', 5); +        } +         +        // Try to get a upload ticket +        if(!$sTicket) { +            $oResponse = VimeoVideosRequest::getUploadTicket(); +            $sTicket = $oResponse->getTicket(); +        } +         +        // Build up the needed API arguments + +        // Set API key +        $aArgs['api_key']       = self::$sApiKey; +         +        // Set request format +        $aArgs['format']        = 'php'; + +        // Set token +        if(self::$sToken) $aArgs['auth_token'] = self::$sToken; +         +        // Set ticket +        $aArgs['ticket_id']     = $sTicket; +         +        // Generate signature +        $aArgs['api_sig']       = self::buildSignature($aArgs); +         +        // Set file +        $aArgs['file']          = "@$sFilename"; +         +        // Do the upload +        $sResponse = call_user_func(array(__CLASS__, self::VIDEOPOST_ENGINE_FSOCK), $aArgs); + +        // Call vimeo.videos.checkUploadStatus to prevent abandoned status +        return VimeoVideosRequest::checkUploadStatus($sTicket); +    } +     +    private function executeVideopostCall_CURL($aArgs) { +        // Disable time limit +        set_time_limit(0); +         +        $ch = curl_init(self::VIMEO_UPLOAD_URL); +        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); +        curl_setopt($ch, CURLOPT_POST, 1); +        curl_setopt($ch, CURLOPT_POSTFIELDS, $aArgs); +        curl_setopt($ch, CURLOPT_USERAGENT, self::PROJECT_NAME); + +        $data = curl_exec($ch); +        if(curl_errno($ch)) +            throw new VimeoRequestException('executeRemoteCall_CURL error: ' . curl_error($ch), curl_errno($ch)); +        else { +            curl_close($ch); +            return unserialize($data); +        } +    } +     +    /** +    * Build API query signature +    *  +    * Composes the signature needed to verify its really us doing the query +    *  +    * @author   Ted Roden +    * @access   private +    * @param    array       Additional arguments for the API query +    * @return   string      MD5 signature +    */ +    private static function buildSignature($aArgs) { +        $s = ''; +         +        // sort by name +        ksort($aArgs); + +        foreach($aArgs as $k => $v)  +            $s .= $k . $v; + +        return(md5(self::$sApiSecret . $s));     +    } +     +    /** +    * Build authentication URL +    *  +    * Easy way to build a correct authentication url. You can use this +    * to link the user directly to the correct vimeo authentication page. +    *  +    * @access   public +    * @param    string      Permission level you need the user to give you (i.e. VimeoBase::PERMISSION_READ) +    * @return   string      URL you can use to directly link the user to the vimeo authentication page +    */ +    public static function buildAuthenticationUrl($ePermission) { +         +        $aArgs = array( +            'api_key' => self::$sApiKey, +            'perms' => $ePermission +        ); +         +        return self::VIMEO_AUTH_URL . '?api_key=' . self::$sApiKey . '&perms=' . $ePermission . '&api_sig=' . self::buildSignature($aArgs); +    } +     +    /** +    * Get current logged in user token +    *  +    * @access   public +    * @return   string      Token or FALSE if not logged in +    */ +    public static function getToken() { +        return self::$sToken; +    } +     +    /** +    * Set current logged in user token +    *  +    * @access   public +    * @param    string      Authentication token +    * @return   void +    */ +    public static function setToken($sToken) { +        self::$sToken = $sToken; +    } +     +    /** +    * Clear current logged in user token +    *  +    * Removes the current logged in user from the cache. Next API query +    * will be made as clean, not logged in, request. +    *  +    * @access   public +    * @return   void +    */ +    public static function clearToken() { +        self::$sToken = false; +    } +     +    /** +    * Execute a permit request +    *  +    * ONLY USED IN SITE-MODE, see howto.autologin.php +    * Permits the current CURL cached user with your vimeo API application +    *  +    * @access   public +    * @param    string      Permission +    * @return   string      Vimeo Token +    */ +    public function permit($ePermission) { +        // Disable time limit +        set_time_limit(0); +         +        // Construct login data +        $aArgs = array( +            'api_key' => VimeoBase::$sApiKey, +            'perms' => $ePermission, +            'accept' => 'yes' +        ); +        $ch = curl_init(VimeoBase::buildAuthenticationUrl($ePermission)); +        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); +        curl_setopt($ch, CURLOPT_POST, 1); +        curl_setopt($ch, CURLOPT_POSTFIELDS, $aArgs); +        curl_setopt($ch, CURLOPT_USERAGENT, self::PROJECT_NAME); +        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); +        curl_setopt($ch, CURLOPT_COOKIEFILE, VimeoBase::COOKIE_FILE); +        curl_setopt($ch, CURLOPT_COOKIEJAR, VimeoBase::COOKIE_FILE); +         +        $sPageContent = curl_exec($ch); +        if(curl_errno($ch)) { +            throw new VimeoRequestException('Error: Tried to login failed ' . curl_error($ch), curl_errno($ch)); +            return false; +        } else { +            $sResponseUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); +             +        } +        return $sPageContent; +    } +     +    /** +    * Ensures that the user is logged in +    *  +    * ONLY USED IN SITE-MODE, see howto.autologin.php +    * Ensures the site-account is logged in +    *  +    * @access   public +    * @param    string          Username +    * @param    string          Password +    * @return   boolean         TRUE if user could be logged in, FALSE if an error occured (try manually to see error) +    */ +    public function login($sUsername, $sPassword) { +        // Disable time limit +        set_time_limit(0); +         +        // Construct login data +        $aArgs = array( +            'sign_in[email]' => $sUsername, +            'sign_in[password]' => $sPassword, +            'redirect' => '' +        ); +         +        $ch = curl_init(VimeoBase::VIMEO_LOGIN_URL); +        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); +        curl_setopt($ch, CURLOPT_POST, 1); +        curl_setopt($ch, CURLOPT_POSTFIELDS, $aArgs); +        curl_setopt($ch, CURLOPT_USERAGENT, self::PROJECT_NAME); +        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); +        curl_setopt($ch, CURLOPT_COOKIEFILE, VimeoBase::COOKIE_FILE); +        curl_setopt($ch, CURLOPT_COOKIEJAR, VimeoBase::COOKIE_FILE); +         +        $sPageContent = curl_exec($ch); +         +        if(curl_errno($ch)) { +            throw new VimeoRequestException('Error: Tried to login failed ' . curl_error($ch), curl_errno($ch)); +            return false; +        } else { +            $sResponseUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); +            curl_close($ch); +        }                            +         +        if(stristr($sResponseUrl, 'log_in') !== false) { +            // Login failed +            return false; +        } else { +            return true; +        } +    } +} + +/** +* Vimeo base exception class +* +* Every exception caused by VimeoBase class will be of this type +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoBaseException extends VimeoException {} + +/** +* Vimeo request exception class +* +* Exception thrown when requesting the API failed +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoRequestException extends VimeoException {} + +/** +* Vimeo upload exception class +* +* Exception thrown when uploading a video failed +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoUploadException extends VimeoException {} + +/** +* Vimeo API method handler class +* +* This class will ensure that only functions can be called if the method is implemented +* and the permission is right (p). It also states what the source (s), result (t) and +* exception (e) object will be. +*  +* @package     SimpleVimeo +* @subpackage  Base +*/ + +class VimeoMethod { +     +    private static $aMethods = array( +        // Vimeo Test methods +        'vimeo.test.login'                  => array(       's' => 'VimeoTestRequest', +                                                            't' => 'VimeoTestLoginResponse', +                                                            'e' => 'VimeoTestLoginException', +                                                            'p' => VimeoBase::PERMISSION_READ), +         +        'vimeo.test.echo'                   => array(       's' => 'VimeoTestRequest', +                                                            't' => 'VimeoTestEchoResponse', +                                                            'e' => 'VimeoTestEchoException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.test.null'                   => array(       's' => 'VimeoTestRequest', +                                                            't' => 'VimeoTestNullResponse', +                                                            'e' => 'VimeoTestNullException', +                                                            'p' => VimeoBase::PERMISSION_READ), +                                                             +        // Vimeo Auth methods +        'vimeo.auth.getToken'               => array(       's' => 'VimeoAuthRequest', +                                                            't' => 'VimeoAuthGetTokenResponse', +                                                            'e' => 'VimeoAuthGetTokenException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.auth.getFrob'                => array(       's' => 'VimeoAuthRequest', +                                                            't' => 'VimeoAuthGetFrobResponse', +                                                            'e' => 'VimeoAuthGetFrobException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.auth.checkToken'             => array(       's' => 'VimeoAuthRequest', +                                                            't' => 'VimeoAuthCheckTokenResponse', +                                                            'e' => 'VimeoAuthCheckTokenException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +         +        // Vimeo Videos methods +        'vimeo.videos.getList'              => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetListResponse', +                                                            'e' => 'VimeoVideosGetListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.videos.getUploadedList'      => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetUploadedListResponse', +                                                            'e' => 'VimeoVideosGetUploadedListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.videos.getAppearsInList'     => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetAppearsInListResponse', +                                                            'e' => 'VimeoVideosGetAppearsInListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.videos.getSubscriptionsList' => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetSubscriptionsListResponse', +                                                            'e' => 'VimeoVideosGetSubscriptionsListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.videos.getListByTag'         => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetListByTagResponse', +                                                            'e' => 'VimeoVideosGetListByTagException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.videos.getLikeList'          => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetLikeListResponse', +                                                            'e' => 'VimeoVideosGetLikeListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.videos.getContactsList'      => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetContactsListResponse', +                                                            'e' => 'VimeoVideosGetContactsListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.videos.getContactsLikeList'  => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetContactsLikeListResponse', +                                                            'e' => 'VimeoVideosGetContactsLikeListException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.videos.search'               => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosSearchResponse', +                                                            'e' => 'VimeoVideosSearchException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.videos.getInfo'              => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetInfoResponse', +                                                            'e' => 'VimeoVideosGetInfoException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.videos.getUploadTicket'      => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosGetUploadTicketResponse', +                                                            'e' => 'VimeoVideosGetUploadTicketException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), + +        'vimeo.videos.checkUploadStatus'    => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosCheckUploadStatusResponse', +                                                            'e' => 'VimeoVideosCheckUploadStatusException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), +                                                             +        'vimeo.videos.delete'               => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosDeleteResponse', +                                                            'e' => 'VimeoVideosDeleteException', +                                                            'p' => VimeoBase::PERMISSION_DELETE), + +        'vimeo.videos.setTitle'             => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosSetTitleResponse', +                                                            'e' => 'VimeoVideosSetTitleException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), + +        'vimeo.videos.setCaption'           => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosSetCaptionResponse', +                                                            'e' => 'VimeoVideosSetCaptionException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), +                                                             +        'vimeo.videos.setFavorite'          => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosSetFavoriteResponse', +                                                            'e' => 'VimeoVideosSetFavoriteException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), +                                                             +        'vimeo.videos.addTags'              => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosAddTagsResponse', +                                                            'e' => 'VimeoVideosAddTagsException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), +                                                             +        'vimeo.videos.removeTag'            => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosRemoveTagResponse', +                                                            'e' => 'VimeoVideosRemoveTagException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), + +        'vimeo.videos.clearTags'            => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosClearTagsResponse', +                                                            'e' => 'VimeoVideosClearTagsException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), + +        'vimeo.videos.setPrivacy'           => array(       's' => 'VimeoVideosRequest', +                                                            't' => 'VimeoVideosSetPrivacyResponse', +                                                            'e' => 'VimeoVideosSetPrivacyException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), + +        // Vimeo People methods +        'vimeo.people.findByUserName'       => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleFindByUsernameResponse', +                                                            'e' => 'VimeoPeopleFindByUsernameException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.people.findByEmail'          => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleFindByEmailResponse', +                                                            'e' => 'VimeoPeopleFindByEmailException', +                                                            'p' => VimeoBase::PERMISSION_NONE), + +        'vimeo.people.getInfo'              => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleGetInfoResponse', +                                                            'e' => 'VimeoPeopleGetInfoException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +                                                             +        'vimeo.people.getPortraitUrl'       => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleGetPortraitUrlResponse', +                                                            'e' => 'VimeoPeopleGetPortraitUrlException', +                                                            'p' => VimeoBase::PERMISSION_NONE), +         +        'vimeo.people.addContact'           => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleAddContactResponse', +                                                            'e' => 'VimeoPeopleAddContactException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), +                                                             +        'vimeo.people.removeContact'        => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleRemoveContactResponse', +                                                            'e' => 'VimeoPeopleRemoveContactException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), +                                                             +        'vimeo.people.getUploadStatus'      => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleGetUploadStatusResponse', +                                                            'e' => 'VimeoPeopleGetUploadStatusException', +                                                            'p' => VimeoBase::PERMISSION_READ), + +        'vimeo.people.addSubscription'      => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleAddSubscriptionResponse', +                                                            'e' => 'VimeoPeopleAddSubscriptionException', +                                                            'p' => VimeoBase::PERMISSION_WRITE), + +        'vimeo.people.removeSubscription'   => array(       's' => 'VimeoPeopleRequest', +                                                            't' => 'VimeoPeopleRemoveSubscriptionResponse', +                                                            'e' => 'VimeoPeopleRemoveSubscriptionException', +                                                            'p' => VimeoBase::PERMISSION_WRITE) +    ); +         +    public static function getSourceObjectForMethod($sMethod) { +        // Check if the method can be handled +        self::checkMethod($sMethod); +         +        return self::$aMethods[$sMethod]['s']; +    } +     +    public static function getTargetObjectForMethod($sMethod) { +        // Check if the method can be handled +        self::checkMethod($sMethod); +         +        return self::$aMethods[$sMethod]['t']; +    } +     +    public static function getExceptionObjectForMethod($sMethod) { +        // Check if the method can be handled +        self::checkMethod($sMethod); +         +        return self::$aMethods[$sMethod]['e']; +    } + +    public static function getPermissionRequirementForMethod($sMethod) { +        // Check if the method can be handled +        self::checkMethod($sMethod); +         +        return self::$aMethods[$sMethod]['p']; +    } +     +    public static function checkMethod($sMethod) { +        // Check if the method can be handled +        if(!isset(self::$aMethods[$sMethod])) { +            throw new VimeoMethodException('Unhandled vimeo method "' . $sMethod . '" given', 2); +        } +    } +} + +/** +* Vimeo method exception class +* +* Every exception caused by VimeoMethod class will be of this type +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoMethodException extends Exception {} + +/* +* Abstract class constructs that the whole api stuff will be based on +*/ + +/** +* Vimeo exception class +* +* Every exception the whole SimpleVimeo throws will be extended of this base +* class. You can extend this one to alter all exceptions. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +* @abstract +*/ + +abstract class VimeoException extends Exception {} + +/** +* Vimeo array of object handler class +*  +* This class is for array of object handling. i.e.: An array of video objects. +* It ensures that you can work with foreach and count without getting into a hassle. +*  +* @package      SimpleVimeo +* @subpackage   Base +* @abstract +*/ + +abstract class VimeoObjectList implements Iterator, Countable { +    /** +    * Array for instanced objects +    * @var  array +    */ +    private $aInstances = array(); +     +    /** +    * Integer how many results +    * @var  integer +    */ +    private $iCount = 0; +     +    /** +    * Class name +    * @var  string +    */ +    private $sClassName; +     +    private $aIDs = array(); +     +    /** +    * Constructor +    *  +    * @access   public +    * @return   void +    */ +    public function __construct() { +        // Parse class name +        $this->sClassName = str_replace('List', '', get_class($this)); +    } +     +    /** +    * Add object to array +    *  +    * @access   public +    * @param    object      Object to be added to array +    * @param    integer     Array index to be used for the given object +    * @return   void +    */ +    public function add($oObject, $iID = false) { +        if($iID !== false) { +            $this->aInstances[$iID] = $oObject; +        } else { +            $this->aInstances[] = $oObject; +        } +         +        $this->aIDs[] = $iID; +         +        $this->iCount++; +    } + +    /** +    * Returns all array indexes for further parsing +    *  +    * @access   public +    * @return   array       Array with object array indexes +    */ +    public function getAllUniqueIDs() { +        return $this->getIDs(); +    } +     +    /** +    * @ignore +    */ +    public function rewind() { +        reset($this->aInstances); +    } +     +    /** +    * @ignore +    */ +    public function current() { +        return current($this->aInstances); +    } +     +    /** +    * @ignore +    */ +    public function key() { +        return key($this->aInstances); +    } +     +    /** +    * @ignore +    */ +    public function next() { +        return next($this->aInstances); +    } +     +    /** +    * @ignore +    */ +    public function valid() { +        return $this->current() !== FALSE; +    } +     +    /** +    * @ignore +    */ +    public function count() { +        return $this->iCount; +    } +} + +/** +* Vimeo request class +* +* Every API query collection class will be based on this. +*  +* @package     SimpleVimeo +* @subpackage  ApiRequest +* @abstract +*/ + +abstract class VimeoRequest {} + +/** +* Vimeo response class +* +* Every API response class will be based on this. It also handles +* everytime response variables like if the query was successfull and +* the generation time. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +* @abstract +*/ + +abstract class VimeoResponse { +    private $bStatus = false; +    private $fPerformance = false; +    private $iErrorCode = false; +    private $oError = false; +     +    /** +    * Constructor +    *  +    * Parses the API response +    * You dont need to pass a response if you need to give a hint your coding tool for code completion +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        if($aResponse) { +            // Parse status +            $this->setStatus($aResponse->stat); +             +            // Parse performance +            $this->fPerformance = (float) $aResponse->generated_in; +             +            // Parse error information +            if(!$this->bStatus) { +                $this->oError = new VimeoErrorEntity($aResponse->err->code, $aResponse->err->msg); +            } +        } +    } +     +    private function setStatus($sStatus) { +        if($sStatus === 'ok') { +            $this->bStatus = true; +        } +    } +     +    public function getStatus() { +        return $this->bStatus; +    } +     +    public function getPerformance() { +        return $this->fPerformance; +    } +     +    public function getError() { +        return $this->oError; +    } +} + +/* +* Entity classes for default instances of users etc. they are always the same +* and their array of object handlers +*/ + +/** +* Vimeo API error entity class +* +* Implements API delivered error entities into an PHP 5 object with given result parameters. +*  +* @package     SimpleVimeo +* @subpackage  Entities +*/ + +class VimeoErrorEntity { +    private $iErrorCode = false; +    private $sErrorMessage = false; +     +    public function __construct($iErrorCode, $sErrorMessage) { +        $this->iErrorCode = $iErrorCode; +        $this->sErrorMessage = $sErrorMessage; +    } +     +    public function getCode() { +        return $this->iErrorCode; +    } +     +    public function getMessage() { +        return $this->sErrorMessage; +    } +} + +/** +* Vimeo API user entity class +* +* Implements API delivered user entities into an PHP 5 object with given result parameters. +*  +* @package     SimpleVimeo +* @subpackage  Entities +*/ + +class VimeoUserEntity { +    private $iUserNsId = false; +    private $iUserId = false; +    private $sUsername = false; +    private $sFullname = false; +     +    // Optional information when vimeo.person.getInfo is called +    private $sLocation = false; +    private $sUrl = false; +    private $iNumberOfContacts = false; +    private $iNumberOfUploads = false; +    private $iNumberOfLikes = false; +    private $iNumberOfVideos = false; +    private $iNumberOfVideosAppearsIn = false; +    private $sProfileUrl = false; +    private $sVideosUrl = false; +     +    public function __construct($aResponseSnippet) { +        if(isset($aResponseSnippet->id)) { +            $this->iUserId = $aResponseSnippet->id; +        } +         +        if(isset($aResponseSnippet->nsid)) { +            $this->iUserNsId = $aResponseSnippet->nsid; +        } +         +        if(isset($aResponseSnippet->username)) { +            $this->sUsername = $aResponseSnippet->username; +        } +         +        if(isset($aResponseSnippet->fullname)) { +            $this->sFullname = $aResponseSnippet->fullname; +        } +         +        if(isset($aResponseSnippet->display_name)) { +            $this->sFullname = $aResponseSnippet->display_name; +        } +         +        // Optional stuff +        if(isset($aResponseSnippet->location)) { +            $this->sLocation = $aResponseSnippet->location; +        } +         +        if(isset($aResponseSnippet->url)) { +            $this->sUrl = $aResponseSnippet->url; +        } +         +        if(isset($aResponseSnippet->number_of_contacts)) { +            $this->iNumberOfContacts = $aResponseSnippet->number_of_contacts; +        } +         +        if(isset($aResponseSnippet->number_of_uploads)) { +            $this->iNumberOfUploads = $aResponseSnippet->number_of_uploads; +        } +         +        if(isset($aResponseSnippet->number_of_likes)) { +            $this->iNumberOfLikes = $aResponseSnippet->number_of_likes; +        } +         +        if(isset($aResponseSnippet->number_of_videos)) { +            $this->iNumberOfVideos = $aResponseSnippet->number_of_videos; +        } +         +        if(isset($aResponseSnippet->number_of_videos_appears_in)) { +            $this->iNumberOfVideosAppearsIn = $aResponseSnippet->number_of_videos_appears_in; +        } +         +        if(isset($aResponseSnippet->profileurl)) { +            $this->sProfileUrl = $aResponseSnippet->profileurl; +        } + +        if(isset($aResponseSnippet->videosurl)) { +            $this->sVideosUrl = $aResponseSnippet->videosurl; +        } +    } +     +    public function getNsID() { +        return $this->iUserNsId; +    } + +    public function getID() { +        return $this->iUserId; +    } +     +    public function getUsername() { +        return $this->sUsername; +    } +     +    public function getFullname() { +        return $this->sFullname; +    } +     +    public function getLocation() { +        return $this->sLocation; +    } +     +    public function getUrl() { +        return $this->sUrl; +    } +     +    public function getNumberOfContacts() { +        return $this->iNumberOfContacts; +    } +     +    public function getNumberOfUploads() { +        return $this->iNumberOfUploads; +    } +     +    public function getNumberOfLikes() { +        return $this->iNumberOfLikes; +    } +     +    public function getNumberOfVideos() { +        return $this->iNumberOfVideos; +    } +     +    public function getNumberOfVideosAppearsIn() { +        return $this->iNumberOfVideosAppearsIn; +    } +     +    public function getProfileUrl() { +        return $this->sProfileUrl; +    } +     +    public function getVideosUrl() { +        return $this->sVideosUrl; +    } +} + +/** +* Vimeo API video entity class +* +* Implements API delivered video into an PHP 5 object with given result parameters. +*  +* @package     SimpleVimeo +* @subpackage  Entities +*/ + +class VimeoVideoEntity { +    private $iID = false; +    private $ePrivacy = false; +    private $bIsUploading = false; +    private $bIsTranscoding = false; +    private $bIsHD = false; +     +    private $sTitle = false; +    private $sCaption = false; +    private $iUploadTime = false; +    private $iNumberOfLikes = false; +    private $iNumberOfPlays = false; +    private $iNumberOfComments = false; + +    private $sUrl = false; +         +    private $iWidth = false; +    private $iHeight = false; +    private $oOwner = false; +     +    private $oTagList = false; +     +    private $oThumbnailList = false; +     +    public function __construct($aResponseSnippet = false) { +        if($aResponseSnippet) { +            // Set basic information +            $this->iID = $aResponseSnippet->id; +            $this->ePrivacy = $aResponseSnippet->privacy; +            $this->bIsUploading = $aResponseSnippet->is_uploading; +            $this->bIsTranscoding = $aResponseSnippet->is_transcoding; +            $this->bIsHD = $aResponseSnippet->is_hd; +             +            $this->sTitle = $aResponseSnippet->title; +            $this->sCaption = $aResponseSnippet->caption; +            $this->iUploadTime = strtotime($aResponseSnippet->upload_date); +            $this->iNumberOfLikes = (int) $aResponseSnippet->number_of_likes; +            $this->iNumberOfPlays = (int) $aResponseSnippet->number_of_plays; +            $this->iNumberOfComments = (int) $aResponseSnippet->number_of_comments; +             +            $this->sUrl = $aResponseSnippet->urls->url->_content; +             +            $this->iWidth = (int) $aResponseSnippet->width; +            $this->iHeight = (int) $aResponseSnippet->height; +             +            $this->oOwner = new VimeoUserEntity($aResponseSnippet->owner); +             +            // Parse Tags +            $this->oTagList = new VimeoTagList(); +            if(isset($aResponseSnippet->tags->tag)) { +                foreach($aResponseSnippet->tags->tag as $aTagInformation) { +                    $oTag = new VimeoTagEntity($aTagInformation); +                    $this->oTagList->add($oTag, $oTag->getID()); +                } +            } +             +            // Parse Thumbnails +            $this->oThumbnailList = new VimeoThumbnailList(); +            if(isset($aResponseSnippet->thumbnails->thumbnail)) { +                foreach($aResponseSnippet->thumbnails->thumbnail as $aThumbnailInformation) { +                    $oThumbnail = new VimeoThumbnailEntity($aThumbnailInformation); +                    $this->oThumbnailList->add($oThumbnail, ($oThumbnail->getWidth() * $oThumbnail->getHeight())); +                } +            } +        } +    } +     +    public function getID() { +        return $this->iID; +    } +     +    public function getPrivacy() { +        return $this->ePrivacy; +    } +     +    public function isUploading() { +        return $this->bIsUploading; +    } +     +    public function isTranscoding() { +        return $this->bIsTranscoding; +    } +     +    public function isHD() { +        return $this->bIsHD; +    } +     +    public function getTitle() { +        return $this->sTitle; +    } +     +    public function getCaption() { +        return $this->sCaption; +    } +     +    public function getUploadTimestamp() { +        return $this->iUploadTime; +    } +     +    public function getNumberOfLikes() { +        return (int) $this->iNumberOfLikes; +    } +     +    public function getNumberOfPlays() { +        return (int) $this->iNumberOfPlays; +    } +     +    public function getNumberOfComments() { +        return (int) $this->iNumberOfComments; +    } +     +    public function getWidth() { +        return (int) $this->iWidth; +    } +     +    public function getHeight() { +        return (int) $this->iHeight; +    } +     +    public function getOwner() { +        return $this->oOwner; +    } +     +    public function getTags() { +        return $this->oTagList; +    } +     +    public function getUrl() { +        return $this->sUrl; +    } +     +    public function getThumbnails() { +        return $this->oThumbnailList; +    } +} + +/** +* Vimeo API video list class +* +* Implements API delivered video list entities into an PHP 5 array of objects. +*  +* @package     SimpleVimeo +* @subpackage  Lists +*/ + +class VimeoVideoList extends VimeoObjectList {} + +/** +* Vimeo API tag entity class +* +* Implements API delivered tag entities into an PHP 5 object with given result parameters. +*  +* @package     SimpleVimeo +* @subpackage  Entities +*/ + +class VimeoTagEntity { +    private $iID = false; +    private $sContent = false; +     +    public function __construct($aResponseSnippet = false) { +        if($aResponseSnippet) { +            $this->iID = $aResponseSnippet->id; +            $this->sContent = $aResponseSnippet->_content; +        } +    } +     +    public function getID() { +        return $this->iID; +    } +     +    public function getTag() { +        return $this->sContent; +    } +} + +/** +* Vimeo API tag list class +* +* Implements API delivered tag list entities into an PHP 5 array of objects. +*  +* @package     SimpleVimeo +* @subpackage  Lists +*/ + +class VimeoTagList extends VimeoObjectList {} + +/** +* Vimeo API thumbnail entity class +* +* Implements API delivered thumbnail entities into an PHP 5 object with given result parameters. +*  +* @package     SimpleVimeo +* @subpackage  Entities +*/ + +class VimeoThumbnailEntity { +    private $iWidth = false; +    private $iHeight = false; +    private $sContent = false; +     +    public function __construct($aResponseSnippet = false) { +        if($aResponseSnippet) { +            $this->iWidth = (int) $aResponseSnippet->width; +            $this->iHeight = (int) $aResponseSnippet->height; +            $this->sContent = $aResponseSnippet->_content; +        } +    } +     +    public function getWidth() { +        return (int) $this->iWidth; +    } +     +    public function getHeight() { +        return (int) $this->iHeight; +    } +     +    public function getImageContent() { +        return $this->sContent; +    } +} + +/** +* Vimeo API thumbnail list class +* +* Implements API delivered thumbnail list entities into an PHP 5 array of objects. +*  +* @package     SimpleVimeo +* @subpackage  Lists +*/ + +class VimeoThumbnailList extends VimeoObjectList { +    public function getByWidth($iWidth, $bAlsoLower = false) { +        /** +        * @todo +        */ +    } +     +    public function getByHeight($iHeight, $bAlsoLower = false) { +        /** +        * @todo +        */ +    } +     +    public function getByWidthAndHeight($iWidth, $iHeight, $bAlsoLower = false) { +        /** +        * @todo +        */ +    } +} + + +/* +* vimeo.test.* methods +*/ + +/** +* Vimeo Test request handler class +* +* Implements all API queries in the vimeo.test.* category +*  +* @package     SimpleVimeo +* @subpackage  ApiRequest +*/ + +class VimeoTestRequest extends VimeoRequest { +     +    /** +    * Is the user logged in? +    *  +    * @access   public +    * @return   VimeoTestLoginResponse  +    */ +     +    public function login() { +        return VimeoBase::executeRemoteCall('vimeo.test.login'); +    } +     +    /** +    * This will just repeat back any parameters that you send. +    *  +    * @access   public +    * @param    array       Additional arguments that need to be passed to the API +    * @return   VimeoTestEchoResponse +    */ +     +    public function echoback($aArgs) { +        return VimeoBase::executeRemoteCall('vimeo.test.echo', $aArgs); +    } +     +    /** +    * This is just a simple null/ping test... +    *  +    * @access   public +    * @return   VimeoTestNullResponse  +    */ +     +    public function ping() { +        return VimeoBase::executeRemoteCall('vimeo.test.null'); +    } +} + +/** +* Vimeo Test Login response handler class +* +* Handles the API response for vimeo.test.login queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoTestLoginResponse extends VimeoResponse {} + +/** +* Vimeo Test Login exception handler class +* +* Handles exceptions caused by API response for vimeo.test.login queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoTestLoginException extends VimeoException {} + +/** +* Vimeo Test Echo response handler class +* +* Handles the API response for vimeo.test.echo queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoTestEchoResponse extends VimeoResponse { +    private $aArgs = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->aArgs = get_object_vars($aResponse); +         +        // Unset default response stuff +        if(isset($this->aArgs['stat'])) unset($this->aArgs['stat']); +        if(isset($this->aArgs['generated_in'])) unset($this->aArgs['generated_in']); +    } +     +    /** +    * Returns an array of variables the request bounced back +    *  +    * @access   public +    * @return   array       Echoed variables +    */ +    public function getResponseArray() { +        return $this->aArgs; +    } +} + +/** +* Vimeo Test Echo exception handler class +* +* Handles exceptions caused by API response for vimeo.test.echo queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoTestEchoException extends VimeoException {} + +/** +* Vimeo Test Null response handler class +* +* Handles the API response for vimeo.test.null queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoTestNullResponse extends VimeoResponse {} + +/** +* Vimeo Test Null exception handler class +* +* Handles exceptions caused by API response for vimeo.test.null queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoTestNullException extends VimeoException {} + +/* +* vimeo.auth.* methods +*/ + +/** +* Vimeo Auth request handler class +* +* Implements all API queries in the vimeo.auth.* category +*  +* @package     SimpleVimeo +* @subpackage  ApiRequest +*/ + +class VimeoAuthRequest extends VimeoRequest { +     +    /** +    * Get Token +    *  +    * @access   public +    * @param    string      Frob taken from the vimeo authentication +    * @return   VimeoAuthGetTokenResponse +    */ +    public function getToken($sFrob) { +        $aArgs = array( +            'frob' => $sFrob +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.auth.getToken', $aArgs); +    } +     +    /** +    * Check Token +    *  +    * Checks the validity of the token. Returns the user associated with it. +    * Returns the same as vimeo.auth.getToken +    *  +    * @access   public +    * @param    string      Authentication token +    * @return   VimeoAuthCheckTokenResponse +    */ +    public function checkToken($sToken = false) { +        if(!$sToken) $sToken = VimeoBase::getToken(); +         +        $aArgs = array( +            'auth_token' => $sToken +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.auth.checkToken', $aArgs); +    } +     +    /** +    * Get Frob +    *  +    * This is generally used by desktop applications. If the user doesn't already have +    * a token, you'll need to get the frob, send it to us at /services/auth. Then, +    * after the user, clicks continue on your app, you call vimeo.auth.getToken($frob) +    * and we give you the actual token.  +    *  +    * @access   public +    * @return   VimeoAuthGetFrobResponse +    */ +    public function getFrob() { +        return VimeoBase::executeRemoteCall('vimeo.auth.getFrob'); +    }  +} + +/** +* Vimeo Auth GetToken response handler class +* +* Handles the API response for vimeo.auth.getToken queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoAuthGetTokenResponse extends VimeoResponse { +     +    private $sToken = false; +    private $ePermission = false; +    private $oUser = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse) { +        parent::__construct($aResponse); +         +        $this->sToken = $aResponse->auth->token; +        $this->ePermission = $aResponse->auth->perms; +         +        $this->oUser = new VimeoUserEntity($aResponse->auth->user); +    } +     +    /** +    * Get token value +    *  +    * @access   public +    * @return   token +    */ +    public function getToken() { +        return $this->sToken; +    } +     +    /** +    * Get permission value +    *  +    * @access   public +    * @return   permission +    */ +     +    public function getPermission() { +        return $this->ePermission; +    } +     +    /** +    * Get user information object +    *  +    * @access   public +    * @return VimeoUserEntity +    */ +    public function getUser() { +        return $this->oUser; +    } +} + +/** +* Vimeo Auth GetToken exception handler class +* +* Handles exceptions caused by API response for vimeo.auth.getToken queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoAuthGetTokenException extends Exception {} + +/** +* Vimeo Auth CheckToken response handler class +* +* Handles the API response for vimeo.auth.checkToken queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoAuthCheckTokenResponse extends VimeoAuthGetTokenResponse {} + +/** +* Vimeo Auth CheckToken exception handler class +* +* Handles exceptions caused by API response for vimeo.auth.checkToken queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoAuthCheckTokenException extends VimeoAuthGetTokenException {} + +/** +* Vimeo Auth GetFrob response handler class +* +* Handles the API response for vimeo.auth.getFrob queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoAuthGetFrobResponse extends VimeoResponse { +    private $sFrob = false; +     +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse) { +        parent::__construct($aResponse); +         +        $this->sFrob = $aResponse->frob; +    } +     +    /** +    * Get Frob value +    *  +    * @access   public +    * @return   frob +    */ +    public function getFrob() { +        return $this->sFrob; +    } +} + +/** +* Vimeo Auth GetFrob exception handler class +* +* Handles exceptions caused by API response for vimeo.auth.getFrob queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoAuthGetFrobException extends VimeoException {} + +/** +* vimeo.videos.* methods +*/ + +/** +* Vimeo Videos request handler class +* +* Implements all API queries in the vimeo.videos.* category +*  +* @package     SimpleVimeo +* @subpackage  ApiRequest +*/ + +class VimeoVideosRequest extends VimeoRequest { + +    const PRIVACY_ANYBODY = 'anybody'; +    const PRIVACY_CONTACTS = 'contacts'; +    const PRIVACY_NOBODY = 'nobody'; +    const PRIVACY_USERS = 'users'; +     +    /** +    * Search videos!  +    *  +    * If the calling user is logged in, this will return information that calling user +    * has access to (including private videos). If the calling user is not authenticated, +    * this will only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    string      Search query +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    boolean     If TRUE, we'll only search the users contacts. If this is set, you must specifiy a User ID. Otherwise it will be ignored without error. +    * @param    integer     ow many results per page? +    * @return VimeoVideosSearchResponse   +    */ +    public function search($sQuery, $iUserID = false, $bContactsOnly = false, $iItemsPerPage = false) { +         +        // Pass query (required) +        $aArgs = array( +            'query' => $sQuery +        ); +         +        // Pass user +        if($iUserID) { +            $aArgs['user_id'] = $iUserID; +        } +         +        // Pass contacts +        if($bContactsOnly) { +            $aArgs['contacts_only'] = $bContactsOnly; +        } +         +        // Pass items +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.search', $aArgs); +    } +     +    /** +    * This gets a list of videos for the specified user. +    *  +    * This is the functionality of "My Videos" or "Ted's Videos." At the moment, this is the same list +    * as vimeo.videos.getAppearsInList. If you need uploaded or appears in, those are available too. +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetListResponse +    */ +    public function getList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getList', $aArgs); +    } +     +    /** +    * This gets a list of videos uploaded by the specified user. +    *  +    * If the calling user is logged in, this will return information that calling user has access to +    * (including private videos). If the calling user is not authenticated, this will only return +    * public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetUploadedListResponse +    */ +    public function getUploadedList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getUploadedList', $aArgs); +    } +     +    /** +    * This gets a list of videos that the specified user appears in.  +    *  +    * If the calling user is logged in, this will return information that calling user has access +    * to (including private videos). If the calling user is not authenticated, this will only return +    * public information, or a permission denied error if none is available.  +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetAppearsInListResponse +    */ +    public function getAppearsInList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getAppearsInList', $aArgs); +    } +     +    /** +    * This gets a list of subscribed videos for a particular user.   +    *  +    * If the calling user is logged in, this will return information that calling user +    * has access to (including private videos). If the calling user is not authenticated, +    * this will only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetSubscriptionsListResponse +    */ +    public function getSubscriptionsList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getSubscriptionsList', $aArgs); +    } + +    /** +    * This gets a list of videos by tag     +    *  +    * If you specify a user_id, we'll only get video uploaded by that user with the specified tag. +    * If the calling user is logged in, this will return information that calling user has access +    * to (including private videos). If the calling user is not authenticated, this will only +    * return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    string      A single tag: "cat" "new york" "cheese"  +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetListByTagResponse +    */ +    public function getListByTag($sTag, $iUserID = false, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'tag'       => $sTag +        ); +         +        if($iUserID) { +            $aArgs['user_id'] = $iUserID; +        } +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getListByTag', $aArgs); +    } + +    /** +    * Get a list of videos that the specified user likes.    +    *  +    * If the calling user is logged in, this will return information that calling user has +    * access to (including private videos). If the calling user is not authenticated, this will +    * only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetLikeListResponse +    */ +    public function getLikeList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getLikeList', $aArgs); +    } +     +    /** +    * Get a list of videos made by the contacts of a specific user. +    *  +    * If the calling user is logged in, this will return information that calling user has +    * access to (including private videos). If the calling user is not authenticated, this will +    * only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetContactsListResponse +    */ +    public function getContactsList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getContactsList', $aArgs); +    } +     +    /** +    * Get a list of videos that the specified users contacts like. +    *  +    * If the calling user is logged in, this will return information that calling user has +    * access to (including private videos). If the calling user is not authenticated, this will +    * only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     User ID, this can be the ID number (151542) or the username (ted) +    * @param    integer     Which page to show. +    * @param    integer     How many results per page? +    * @return   VimeoVideosGetContactsLikeListResponse +    */ +    public function getContactsLikeList($iUserID, $iPage = false, $iItemsPerPage = false) { +        // Extend query +        $aArgs = array( +            'user_id'       => $iUserID +        ); +         +        if($iPage) { +            $aArgs['page'] =    $iPage; +        } + +        if($iItemsPerPage) { +            $aArgs['per_page'] = $iItemsPerPage; +        } +         +        // Please deliver full response so we can handle videos with unified classes +        $aArgs['fullResponse'] = 1; +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getContactsLikeList', $aArgs); +    } +     +    /** +    * Get all kinds of information about a photo. +    *  +    * If the calling user is logged in, this will return information that calling user has +    * access to (including private videos). If the calling user is not authenticated, this will +    * only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     Video ID +    * @return   VimeoVideosGetInfoResponse +    */ +    public function getInfo($iVideoID) { +        // Extend query +        $aArgs = array( +            'video_id'      => $iVideoID +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.getInfo', $aArgs); +    } +     +    /** +    * Generate a new upload Ticket. +    *  +    * You'll need to pass this to the uploader. It's only good for one upload, only good for one user. +    *  +    * @access   public +    * @return   VimeoVideosGetUploadTicketResponse +    */ +    public function getUploadTicket() { +        return VimeoBase::executeRemoteCall('vimeo.videos.getUploadTicket'); +    } +     +    /** +    * Check the status of an upload started via the API   +    *  +    * This is how you get the video_id of a clip uploaded from the API +    * If you never call this to check in, we assume it was abandoned and don't process it +    *  +    * @access   public +    * @param    string      The ticket number of the upload +    * @return   VimeoVideosCheckUploadStatusResponse +    */ +    public function checkUploadStatus($sTicket) { +        $aArgs = array( +            'ticket_id' => $sTicket +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.checkUploadStatus', $aArgs); +    } +     +    /** +    * Simple video upload +    *  +    * @access   public +    * @param    string      Absolute path to file +    * @param    string      Existing ticket or false to generate a new one +    * @return   VimeoVideosCheckUploadStatusResponse +    */ +    public function doUpload($sFilename, $sTicket = false) { +        return VimeoBase::executeVideopostCall($sFilename, $sTicket); +    } +     +    /** +    * Delete a video +    *  +    * The authenticated user must own the video and have granted delete permission +    *  +    * @access   public +    * @param    integer     Video ID +    * @return   VimeoVideosDeleteResponse  +    */ +    public function delete($iVideoID) { +        $aArgs = array( +            'video_id' => $iVideoID +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.delete', $aArgs); +    } +     +    /** +    * Set the title of a video (overwrites previous title) +    *  +    * @access   public +    * @param    integer     Video ID +    * @param    string      Title +    * @return   VimeoVideosSetTitleResponse +    */ +    public function setTitle($iVideoID, $sVideoTitle) { +        $aArgs = array( +            'video_id' => $iVideoID, +            'title' => $sVideoTitle +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.setTitle', $aArgs); +    } +     +    /** +    * Set a new caption for a video (overwrites previous caption) +    *  +    * @access   public +    * @param    integer     Video ID +    * @param    string      Caption +    * @return   VimeoVideosSetCaptionResponse +    */ +    public function setCaption($iVideoID, $sVideoCaption) { +        $aArgs = array( +            'video_id' => $iVideoID, +            'caption' => $sVideoCaption +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.setCaption', $aArgs); +    } +     +    /** +    * Set a video as a favorite. +    *  +    * @access   public +    * @param    integer     Video ID +    * @param    boolean     TRUE to favorite, FALSE to return to normal +    * @return   VimeoVideosSetFavoriteResponse +    */ +    public function setFavorite($iVideoID, $bFavorite = true) { +        $aArgs = array( +            'video_id' => $iVideoID, +            'favorite' => (int) $bFavorite +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.setFavorite', $aArgs); +    } +     +    /** +    * Add specified tags to the video, this does not replace any tags. +    *  +    * Tags should be comma separated lists.  +    *  +    * If the calling user is logged in, this will return information that calling +    * user has access to (including private videos). If the calling user is not authenticated, +    * this will only return public information, or a permission denied error if none is available. +    *  +    * @access   public +    * @param    integer     Video ID +    * @param    mixed       Array with tags or Comma separated list of tags ("lions, tigers, bears") +    * @return   VimeoVideosAddTagsResponse +    */ +    public function addTags($iVideoID, $mTags) { +        // Catch array of tags +        if(is_array($mTags)) { +            $mTags = implode(',', $mTags); +        } +         +        // Prepare arguments +        $aArgs = array( +            'video_id' => $iVideoID, +            'tags' => $mTags +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.addTags', $aArgs); +    } +     +    /** +    * Remove specified tag from the video. +    *  +    * @access   public +    * @param    integer     Video ID +    * @param    integer     Tag ID, this should be a tag id returned by vimeo.videos.getInfo +    * @return   VimeoVideosRemoveTagResponse +    */ +    public function removeTag($iVideoID, $iTagID) { +        $aArgs = array( +            'video_id' => $iVideoID, +            'tag_id' => $iTagID +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.removeTag', $aArgs); +    } +     +    /** +    * Remove ALL of the tags from the video +    *  +    * @access   public +    * @param    integer     Video ID +    * @return   VimeoVideosClearTags  +    */ +    public function clearTags($iVideoID) { +        $aArgs = array( +            'video_id' => $iVideoID +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.clearTags', $aArgs); +    } +     +    /** +    * Set the privacy of the video +    *  +    * @access   public +    * @param    integer     Video ID +    * @param    integer     Privacy enum see VimeoVideosRequest::PRIVACY_* +    * @param    mixed       Array or comma separated list of users who can view the video. PRIVACY_USERS must be set. +    */ +    public function setPrivacy($iVideoID, $ePrivacy, $mUsers = array()) { +        // Catch array of users +        if(is_array($mUsers)) { +            $mUsers = implode(', ', $mUsers); +        } +         +        $aArgs = array( +            'video_id' => $iVideoID, +            'privacy' => $ePrivacy, +            'users' => $mUsers +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.videos.setPrivacy', $aArgs); +    } +} + +/** +* Vimeo Videos Search response handler class +* +* Handles the API response for vimeo.videos.search queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/                                                  + +class VimeoVideosSearchResponse extends VimeoResponse { +    private $iPage = false; +    private $iItemsPerPage = false; +    private $iOnThisPage = false; +     +    private $aoVideos = array(); + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse) { +        parent::__construct($aResponse); +         +        // Parse information +        if($aResponse && isset($aResponse->videos) && $this->getStatus()) { +            // Create an video list instance +            $this->aoVideos = new VimeoVideoList(); +             +            // Page information +            $this->iPage = $aResponse->videos->page; +            $this->iItemsPerPage = $aResponse->videos->perpage; +            $this->iOnThisPage = $aResponse->videos->on_this_page; +             +            // Parse videos +            if(isset($aResponse->videos->video)) { +            	// We should check if the subelement is an object (single hit) or an result array (multiple hits) +            	if(is_array($aResponse->videos->video)) { +					// We got a couple of results +					$aParseableData = $aResponse->videos->video; +            	} else { +            		// We only got one result +					$aParseableData = array( +						0 => $aResponse->videos->video +					); +            	} + +            	// Parse the results +                foreach($aParseableData as $aVideoInformation) { +                    $oVideo = new VimeoVideoEntity($aVideoInformation); + +                    $this->aoVideos->add($oVideo, $oVideo->getID()); +                } +            } +        } +    } +     +    /** +    * Current page +    *  +    * @access   public +    * @return   integer     Page number +    */ +    public function getPage() { +        return $this->iPage; +    } +     +    /** +    * Items per page +    *  +    * @access   public +    * @return   integer     Items per page +    */ +     +    public function getItemsPerPage() { +        return $this->iItemsPerPage; +    } +     +    /** +    * Items on the current page +    *  +    * @access   public +    * @return   integer     Items on the current page +    */ +     +    public function getOnThisPage() { +        return $this->iOnThisPage; +    } +     +    /** +    * Get array of video objects +    *  +    * @access   public +    * @return   array       Video objects +    */ +     +    public function getVideos() { +        return $this->aoVideos; +    } +} + +/** +* Vimeo Videos Search exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.search queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosSearchException extends VimeoException {} + +/** +* Vimeo Videos GetList response handler class +* +* Handles the API response for vimeo.videos.getList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos Search exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.search queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetListException extends VimeoException {} + +/** +* Vimeo Videos GetUploadedList response handler class +* +* Handles the API response for vimeo.videos.getUploadedList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetUploadedListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos GetUploadedList exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getUploadedList queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetUploadedListException extends VimeoException {} + +/** +* Vimeo Videos GetAppearsInList response handler class +* +* Handles the API response for vimeo.videos.getAppearsInList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetAppearsInListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos GetAppearsInList exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getAppearsInList queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetAppearsInListException extends VimeoException {} + +/** +* Vimeo Videos GetSubscriptionsList response handler class +* +* Handles the API response for vimeo.videos.getSubscriptionsList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetSubscriptionsListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos GetSubscriptionsList exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getSubscriptionsList queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetSubscriptionsListException extends VimeoException {} + +/** +* Vimeo Videos GetListByTag response handler class +* +* Handles the API response for vimeo.videos.getListByTag queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetListByTagResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos GetListByTag exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getListByTag queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetListByTagException extends VimeoException {} + +/** +* Vimeo Videos GetLikeList response handler class +* +* Handles the API response for vimeo.videos.getLikeList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetLikeListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos GetLikeList exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getLikeList queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetLikeListException extends VimeoException {} + +/** +* Vimeo Videos GetContactsList response handler class +* +* Handles the API response for vimeo.videos.getContactsList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetContactsListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos GetContactsList exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getContactsList queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetContactsListException extends VimeoException {} + +/** +* Vimeo Videos getContactsLikeList response handler class +* +* Handles the API response for vimeo.videos.getContactsLikeList queries. +* Currently the response is exact the same as vimeo.videos.search +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosgetContactsLikeListResponse extends VimeoVideosSearchResponse {} + +/** +* Vimeo Videos getContactsLikeList exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getContactsLikeList queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetContactsLikeListException extends VimeoException {} + +/** +* Vimeo Videos GetInfo response handler class +* +* Handles the API response for vimeo.videos.getInfo queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetInfoResponse extends VimeoResponse { +    private $oVideo = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse) { +        parent::__construct($aResponse); +         +        $this->oVideo = new VimeoVideoEntity($aResponse->video); +    } +     +    /** +    * Get video information as object +    *  +    * @access   public +    * @return   VimeoVideoEntity +    */ +    public function getVideo() { +        return $this->oVideo; +    } +} + +/** +* Vimeo Videos GetInfo exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getInfo queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetInfoException extends VimeoException {} + +/** +* Vimeo Videos getUploadTicket response handler class +* +* Handles the API response for vimeo.videos.getUploadTicket queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosGetUploadTicketResponse extends VimeoResponse { +    private $sTicket = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->sTicket = $aResponse->ticket->id; +    } +     +    /** +    * Get generated upload ticket +    *  +    * @access   public +    * @return   string      The ticket number of the upload +    */ +    public function getTicket() { +        return $this->sTicket; +    } +} + +/** +* Vimeo Videos getUploadTicket exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.getUploadTicket queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosGetUploadTicketException extends VimeoException {} + +/** +* Vimeo Videos checkUploadStatus response handler class +* +* Handles the API response for vimeo.videos.checkUploadStatus queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosCheckUploadStatusResponse extends VimeoResponse { +    private $sTicket = false; +    private $iVideoID = false; +    private $bIsUploading = false; +    private $bIsTranscoding = false; +    private $iTranscodingProgress = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->sTicket = $aResponse->ticket->id; +        $this->iVideoID = $aResponse->ticket->video_id; +        $this->bIsUploading = (bool) $aResponse->ticket->is_uploading; +        $this->bIsTranscoding = (bool) $aResponse->ticket->is_transcoding; +        $this->iTranscodingProgress = $aResponse->ticket->transcoding_progress; +    }  +     +    /** +    * Get Ticket +    *  +    * @access   public +    * @return   string      Ticket +    */ +    public function getTicket() { +        return $this->sTicket; +    } +     +    /** +    * Get Video ID +    *  +    * @access   public +    * @return   integer     Video ID +    */ +    public function getVideoID() { +        return $this->iVideoID; +    } +     +    /** +    * Is the video uploading? +    *  +    * @access   public +    * @return   boolean     TRUE if uploading, FALSE if not +    */ +    public function isUploading() { +        return $this->bIsUploading; +    } +     +    /** +    * Is the video transcoding? +    *  +    * Also check getTranscodingProgress() for percentage in transcoding +    *  +    * @access   public +    * @return   boolean     TRUE if uploading, FALSE if not +    */ +    public function isTranscoding() { +        return $this->bIsTranscoding; +    } +     +    /** +    * Get the transcoding progress +    *  +    * Should only be called if isTranscoding() returns true +    *  +    * @access   public +    * @return   integer     Percentage +    */ +    public function getTranscodingProgress() { +        return $this->iTranscodingProgress; +    } +} + +/** +* Vimeo Videos checkUploadStatus exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.checkUploadStatus queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosCheckUploadStatusException extends VimeoException {} + +/** +* Vimeo Videos delete response handler class +* +* Handles the API response for vimeo.videos.delete queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosDeleteResponse extends VimeoResponse {} + +/** +* Vimeo Videos delete exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.delete queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosDeleteException extends VimeoException {} + +/** +* Vimeo Videos setTitle response handler class +* +* Handles the API response for vimeo.videos.setTitle queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosSetTitleResponse extends VimeoResponse {} + +/** +* Vimeo Videos setTitle exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.setTitle queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosSetTitleException extends VimeoException {} + +/** +* Vimeo Videos setCaption response handler class +* +* Handles the API response for vimeo.videos.setCaption queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosSetCaptionResponse extends VimeoResponse {} + +/** +* Vimeo Videos setCaption exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.setCaption queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosSetCaptionException extends VimeoException {} + +/** +* Vimeo Videos setFavorite response handler class +* +* Handles the API response for vimeo.videos.setFavorite queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosSetFavoriteResponse extends VimeoResponse {} + +/** +* Vimeo Videos setFavorite exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.setFavorite queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosSetFavoriteException extends VimeoException {} + +/** +* Vimeo Videos addTags response handler class +* +* Handles the API response for vimeo.videos.addTags queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosAddTagsResponse extends VimeoResponse {} + +/** +* Vimeo Videos addTags exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.addTags queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosAddTagsException extends VimeoException {} + +/** +* Vimeo Videos removeTag response handler class +* +* Handles the API response for vimeo.videos.removeTag queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosRemoveTagResponse extends VimeoResponse {} + +/** +* Vimeo Videos removeTag exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.removeTag queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosRemoveTagException extends VimeoException {} + +/** +* Vimeo Videos clearTags response handler class +* +* Handles the API response for vimeo.videos.clearTags queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosClearTagsResponse extends VimeoResponse {} + +/** +* Vimeo Videos clearTags exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.clearTags queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosClearTagsException extends VimeoException {} + +/** +* Vimeo Videos setPrivacy response handler class +* +* Handles the API response for vimeo.videos.setPrivacy queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoVideosSetPrivacyResponse extends VimeoResponse {} + +/** +* Vimeo Videos setPrivacy exception handler class +* +* Handles exceptions caused by API response for vimeo.videos.setPrivacy queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoVideosSetPrivacyException extends VimeoException {} + +/** +* vimeo.people.* methods +*/ + +/** +* Vimeo People request handler class +* +* Implements all API queries in the vimeo.people.* category +*  +* @package     SimpleVimeo +* @subpackage  ApiRequest +*/ + +class VimeoPeopleRequest extends VimeoRequest { +    const TYPE_LIKES        = 'likes'; +    const TYPE_APPEARS      = 'appears'; +    const TYPE_BOTH         = 'likes,appears'; +     +    /** +    * Get a user id and full/display name with a username.   +    *  +    * You shouldn't need this to get the User ID, we allow you to use the +    * username instead of User ID everywhere, it's much nicer that way. +    *  +    * @access   public +    * @param    string      The username to lookup +    * @return   VimeoPeopleFindByUsernameResponse +    */ +    public function findByUsername($sUsername) { +        $aArgs = array( +            'username' => $sUsername +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.findByUserName', $aArgs); +    } +     +    /** +    * Get tons of info about a user. +    *  +    * @access   public +    * @param    integer     The id of the user we want.  +    * @return   VimeoPeopleGetInfoResponse +    */ +    public function getInfo($iUserID) { +        $aArgs = array( +            'user_id' => $iUserID +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.getInfo', $aArgs); +    } +     +    /** +    * Get a user id and full/display name via an Email Address.   +    *  +    * You shouldn't need to use this to get the User ID, we allow you +    * to use the username instead of User ID everywhere, it's much nicer that way. +    *  +    * @access   public +    * @param    string      Email +    * @return   VimeoPeopleFindByEmailResponse +    */ +    public function findByEmail($sEmail) { +        $aArgs = array( +            'find_email' => $sEmail +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.findByEmail', $aArgs); +    } +     +    /** +    * Get a portrait URL for a given user/size +    *  +    * Portraits are square, so you only need to pass one size parameter. +    * Possible sizes are 20, 24, 28, 30, 40, 50, 60, 75, 100, 140, 278 and 300 +    *  +    * @access   public +    * @param    string      The username to lookup +    * @param    integer     The size of the portrait you you want. (defaults to 75) +    * @return   VimeoPeopleGetPortraitUrlResponse +    *  +    * @todo Check functionality. Did not work, god knows why +    */ +    public function getPortraitUrl($sUser, $iSize = false) { +        $aArgs = array( +            'user' => $sUser +        ); +         +        if($iSize) { +            $aArgs['size'] = $iSize; +        } +         +        return VimeoBase::executeRemoteCall('vimeo.people.getPortraitUrl', $aArgs); +    } +     +    /** +    * Add a user as a contact for the authenticated user. +    *  +    * If Jim is authenticated, and the $user is sally. Sally will be Jim's contact.  +    * It won't work the other way around. Depending on Sally's settings, this may  +    * send her an email notifying her that Jim Added her as a contact.  +    *  +    * @access   public +    * @param    string      The user to add. User ID, this can be the ID number (151542) or the username (ted) +    * @return   VimeoPeopleAddContactResponse +    */ +    public function addContact($sUser) { +        $aArgs = array( +            'user' => $sUser +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.addContact', $aArgs); +    } +     +    /** +    * Remove a user as a contact for the authenticated user. +    *  +    * @access   public +    * @param    string      The user to remove. User ID, this can be the ID number (151542) or the username (ted) +    * @return   VimeoPeopleRemoveContactResponse +    */ +    public function removeContact($sUser) { +        $aArgs = array( +            'user' => $sUser +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.removeContact', $aArgs); +    } +     +    /** +    * This tells you how much space the user has remaining for uploads. +    *  +    * We provide info in bytes and kilobytes. It probably makes sense for you to use kilobytes.  +    *  +    * @access   public +    * @return   VimeoPeopleGetUploadStatusResponse +    */ +    public function getUploadStatus() { +        return VimeoBase::executeRemoteCall('vimeo.people.getUploadStatus'); +    } +     +    /** +    * Subscribe to a user's videos. +    *  +    * Just like on the site, you can subscribe to videos a user "appears" in or "likes." Or both!   +    * This will not remove any subscriptions. So if the user is subscribed to a user for both "likes" +    * and "appears," this will not change anything if you only specify one of them. If you want to +    * remove one, you must call vimeo.people.removeSubscription(). +    *  +    * @access   public +    * @param    string      User ID, this can be the ID number (151542) or the username (ted) +    * @param    string      with self::TYPE_LIKES or self::TYPE_APPEARS or self::TYPE_BOTH +    * @return   VimeoPeopleAddSubscriptionResponse +    */ +    public function addSubscription($sUser, $eType = self::TYPE_BOTH) { +        $aArgs = array( +            'user' => $sUser, +            'type' => $eType +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.addSubscription', $aArgs); +    } +     +    /** +    * Unsubscribe to a user's videos. +    *  +    * @access   public +    * @param    string      User ID, this can be the ID number (151542) or the username (ted) +    * @param    string      with self::TYPE_LIKES or self::TYPE_APPEARS or self::TYPE_BOTH +    * @return   VimeoPeopleRemoveSubscriptionResponse +    */ +    public function removeSubscription($sUser, $eType = self::TYPE_BOTH) { +        $aArgs = array( +            'user' => $sUser, +            'type' => $eType +        ); +         +        return VimeoBase::executeRemoteCall('vimeo.people.removeSubscription', $aArgs); +    } +} + +/** +* Vimeo People FindByUserName response handler class +* +* Handles the API response for vimeo.people.findByUserName queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleFindByUserNameResponse extends VimeoResponse { +    private $oUser = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->oUser = new VimeoUserEntity($aResponse->user); +    } +     +    /** +    * Get user entity object +    *  +    * @access   public +    * @return   VimeoUserEntity +    */ +    public function getUser() { +        return $this->oUser; +    } +} + +/** +* Vimeo People FindByUserName exception handler class +* +* Handles exceptions caused by API response for vimeo.people.findByUserName queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleFindByUserNameException extends VimeoException {} + +/** +* Vimeo People FindByEmail response handler class +* +* Handles the API response for vimeo.people.findByEmail queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleFindByEmailResponse extends VimeoResponse { +    private $oUser = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->oUser = new VimeoUserEntity($aResponse->user); +    } + +    /** +    * Get user entity object +    *  +    * @access   public +    * @return   VimeoUserEntity +    */ +    public function getUser() { +        return $this->oUser; +    } +} + +/** +* Vimeo People FindByEmail exception handler class +* +* Handles exceptions caused by API response for vimeo.people.findByEmail queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleFindByEmailException extends VimeoException {} + +/** +* Vimeo People GetInfo response handler class +* +* Handles the API response for vimeo.people.getInfo queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleGetInfoResponse extends VimeoResponse { +    private $oUser = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->oUser = new VimeoUserEntity($aResponse->person); +    } + +    /** +    * Get user entity object +    *  +    * @access   public +    * @return   VimeoUserEntity +    */ +    public function getUser() { +        return $this->oUser; +    } +} + +/** +* Vimeo People GetInfo exception handler class +* +* Handles exceptions caused by API response for vimeo.people.getInfo queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleGetInfoException extends VimeoException {} + +/** +* Vimeo People getPortraitUrl response handler class +* +* Handles the API response for vimeo.people.getPortraitUrl queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleGetPortraitUrlResponse extends VimeoResponse {} + +/** +* Vimeo People getPortraitUrl exception handler class +* +* Handles exceptions caused by API response for vimeo.people.getPortraitUrl queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleGetPortraitUrlException extends VimeoException {} + +/** +* Vimeo People addContact response handler class +* +* Handles the API response for vimeo.people.addContact queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleAddContactResponse extends VimeoResponse {} + +/** +* Vimeo People addContact exception handler class +* +* Handles exceptions caused by API response for vimeo.people.addContact queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleAddContactException extends VimeoException {} + +/** +* Vimeo People removeContact response handler class +* +* Handles the API response for vimeo.people.removeContact queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleRemoveContactResponse extends VimeoResponse {} + +/** +* Vimeo People removeContact exception handler class +* +* Handles exceptions caused by API response for vimeo.people.removeContact queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleRemoveContactException extends VimeoException {} + +/** +* Vimeo People getUploadStatus response handler class +* +* Handles the API response for vimeo.people.getUploadStatus queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleGetUploadStatusResponse extends VimeoResponse { +    private $iMaxBytes = false; +    private $iMaxKBytes = false; +     +    private $iUsedBytes = false; +    private $iUsedKBytes = false; +     +    private $iRemainingBytes = false; +    private $iRemainingKBytes = false; + +    /** +    * Constructor +    *  +    * Parses the API response +    *  +    * @access   public +    * @param    stdClass    API response +    * @return   void +    */ +    public function __construct($aResponse = false) { +        parent::__construct($aResponse); +         +        $this->iMaxBytes = $aResponse->user->bandwidth->maxbytes; +        $this->iMaxKBytes = $aResponse->user->bandwidth->maxkb; +         +        $this->iUsedBytes = $aResponse->user->bandwidth->usedbytes; +        $this->iUsedKBytes = $aResponse->user->bandwidth->usedkb; +         +        $this->iRemainingBytes = $aResponse->user->bandwidth->remainingbytes; +        $this->iRemainingKBytes = $aResponse->user->bandwidth->remainingkb; +    } +     +    /** +    * Get maximum upload for this week in BYTES +    *  +    * @access   public +    * @return   integer     Maximum bytes this week +    */ +    public function getMaxBytes() { +        return $this->iMaxBytes; +    } +     +    /** +    * Get maximum upload for this week in KILOBYTES +    *  +    * @access   public +    * @return   integer     Maximum kbytes this week +    */ +    public function getMaxKiloBytes() { +        return $this->iMaxKBytes; +    } +     +    /** +    * Get used upload for this week in BYTES +    *  +    * @access   public +    * @return   integer     Used bytes this week +    */ +    public function getUsedBytes() { +        return $this->iUsedBytes; +    } +     +    /** +    * Get used upload for this week in KILOBYTES +    *  +    * @access   public +    * @return   integer     Used kbytes this week +    */ +    public function getUsedKiloBytes() { +        return $this->iUsedKBytes; +    } +     +    /** +    * Get remaining upload for this week in BYTES +    *  +    * @access   public +    * @return   integer     Remaining bytes this week +    */ +    public function getRemainingBytes() { +        return $this->iRemainingBytes; +    } +     +    /** +    * Get remaining upload for this week in KILOBYTES +    *  +    * @access   public +    * @return   integer     Remaining kbytes this week +    */ +    public function getRemainingKiloBytes() { +        return $this->iRemainingKBytes; +    } +} + +/** +* Vimeo People getUploadStatus exception handler class +* +* Handles exceptions caused by API response for vimeo.people.getUploadStatus queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleGetUploadStatusException extends VimeoException {} + +/** +* Vimeo People addSubscription response handler class +* +* Handles the API response for vimeo.people.addSubscription queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleAddSubscriptionResponse extends VimeoResponse {} + +/** +* Vimeo People addSubscription exception handler class +* +* Handles exceptions caused by API response for vimeo.people.addSubscription queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleAddSubscriptionException extends VimeoException {} + +/** +* Vimeo People removeSubscription response handler class +* +* Handles the API response for vimeo.people.removeSubscription queries. +*  +* @package     SimpleVimeo +* @subpackage  ApiResponse +*/ + +class VimeoPeopleRemoveSubscriptionResponse extends VimeoResponse {} + +/** +* Vimeo People removeSubscription exception handler class +* +* Handles exceptions caused by API response for vimeo.people.removeSubscription queries. +*  +* @package     SimpleVimeo +* @subpackage  Exceptions +*/ + +class VimeoPeopleRemoveSubscriptionException extends VimeoException {} + +?> | 
