Location: PHPKode > scripts > Netflix API Wrapper > netflix/protectedCall.php
<?php
/**
 * This file is the object that makes the calls to
 * Methods with protected types
 *
 * License: LGPL
 *
 * @copyright  2011 Aziz Hussain
 * @version    1.0
 * @link       http://azizsaleh.com
 * @email      hide@address.com
 */ 

class protectedCall
{
	public $request;
	public $configs;
	
	public $storage;
	public $user_id;
	
	/* Constructor */
	public function __construct (&$this_call, &$configs, &$storage)
	{
		$this->request = $this_call;	
		$this->configs = $configs;
		$this->storage = $storage;
	}
	
	/* Call Maker */
	public function makeCall ($api_url, $request_params = array())
	{
		// Before making the call, check if user tokens exists
		$this->getUserTokens($api_url, $request_params);		
		
		$api_url = $this->composeVariables($api_url, $request_params);

		if (isset($request_params['output'])) {
			$this->request->setReturnType($request_params['output']);
		}

		$this->request->makeRequest($api_url, array());
	}
	
	/*
	This function will request a request token and secret keys
	
	@param		string	api_url
	@param		array	request_params
	
	@return		int|boolean
	*/
	public function getUserTokens(&$api_url, $request_params = array())
	{
		$user_token = $this->storage->getUserToken();
		
		$api_url = str_replace('%user_id%', urlencode($user_token[4]), $api_url);
		
		// If no token, create one
		if($user_token === false) {
			$token_get = new getToken(true, $this->configs);
		}

		// If user still in step 1 or 2, go to next step
		if($user_token[2] != 3)
		{
			// We have the token stored, return it
			$this->configs->oauth_token 		= $user_token[0];
			$this->configs->oauth_token_secret 	= $user_token[1];
			$this->configs->netflix_userid		= $user_token[4];
			return;
		}
		
		// If step three, check we can access the tokens
		if($user_token[2] == 3 && $user_token[4] != '') {						
			$api_url = $this->composeVariables($api_url, $request_params);
			
			if (isset($request_params['output'])) {
				$this->request->setReturnType($request_params['output']);
			}
		
			$this->request->makeRequest($api_url, array());
			
			// If we do not have access yet, then user did not complete the login
			if($this->request->getResponse()->error == 1 ) {
				$token_get = new getToken(false, $this->configs);
			}
		} else {
			$token_get = new getToken(false, $this->configs);
		}
	}
			
	/*
	This function will compose variables
	and add required keys depending on call
	
	@param		string	api_url
	@param		array	request_vars	
	
	@return		string
	*/
	private function composeVariables($api_url, $request_vars = array())
	{
		$signatures = array(
						'consumer_key'	=> $this->configs->consumer_key,  
						'shared_secret'	=> $this->configs->shared_key );
		// Add secret codes for user
		if (isset($this->configs->oauth_token) && isset($this->configs->oauth_token_secret))
		{
			$signatures['access_token'] 	= $this->configs->oauth_token;
			$signatures['access_secret'] 	= $this->configs->oauth_token_secret;
		}

		$auth_object = new OAuthSimple($this->configs->consumer_key, $this->configs->shared_key);  
		$request = $auth_object->sign(
				array(	'path'			=> $api_url,  
						'parameters' 	=> $request_vars,  
						'signatures' 	=> $signatures));

		return $request['signed_url'];
	}
	
}
Return current item: Netflix API Wrapper