Login   Register  
PHP Classes
elePHPant
Icontem

File: netflix/protectedCall.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Aziz S. Hussain  >  Netflix API Wrapper  >  netflix/protectedCall.php  >  Download  
File: netflix/protectedCall.php
Role: Class source
Content type: text/plain
Description: Protected Calls Object
Class: Netflix API Wrapper
Retrieve NetFlix Web services using its API
Author: By
Last change:
Date: 3 years ago
Size: 3,357 bytes
 

Contents

Class file image Download
<?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      azizsaleh@gmail.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] == && $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 == ) {
                
$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'];
    }
    
}