Login   Register  
PHP Classes
elePHPant
Icontem

File: netflix/getToken.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/getToken.php  >  Download  
File: netflix/getToken.php
Role: Class source
Content type: text/plain
Description: Token Manager Object
Class: Netflix API Wrapper
Retrieve NetFlix Web services using its API
Author: By
Last change:
Date: 3 years ago
Size: 3,796 bytes
 

Contents

Class file image Download
<?php
/**
 * This object will retrieve a token for
 * a certain user and store it in the storageObject
 *
 * License: LGPL
 *
 * @copyright  2011 Aziz Hussain
 * @version    1.0
 * @link       http://azizsaleh.com
 * @email      azizsaleh@gmail.com
 */ 


class getToken
{
    public 
$request;
    public 
$configs;
    
    public 
$storage;
    public 
$user_id;
    public 
$step_id;
    
    
/* Constructor */
    
public function __construct ($force_reget false, &$configs)
    {
        
// Load configurations
        
$this->configs             $configs;
        
        
// Load HTTP Request object
        
$this->request             = new Request($this->configs);
                
        
// Database handler
        
$this->storage             = new storageObject($this->configs);
        
        
// If force_reget
        
if ($force_reget == true)
        {
            
// Clear previous tokens
            
$this->storage->removeUserToken();
            
$this->storage->addUserToken();
        }
        
        
// If user did not proceed the login page
        
$this->step_id             $this->storage->getStepID();
        
        
// Check which step to take
        
switch($this->step_id)
        {
            case 
1:
            
$this->_step1_requestToken();
            break;
            
            case 
2:
            case 
3:
            
$code_info $this->storage->getUserToken();
            
$this->configs->oauth_token         $code_info[1];
            
$this->configs->oauth_token_secret     $code_info[1];
        
            
$this->_step3_redirectUserToLogin();
            break;
            
            case 
4:
            die(
"This user already has keys in the stored");
            break;            
        }
    }
        
    
/*
    This function will send a request to netflix for tokens and login page
    */
    
private function _step1_requestToken()
    {
        
$api_url $this->composeVariables('http://api.netflix.com/oauth/request_token', array());

        
$this->request->makeRequest($api_url, array());
        
        
$response $this->request->getResponse();

        
$this->configs->oauth_token         $response->oauth_token;
        
$this->configs->oauth_token_secret     $response->oauth_token_secret;
        
$this->configs->app_name             $response->application_name;
        
$this->configs->login_url             $response->login_url;
        
        
// Update user tokens in DB
        
$this->storage->addUserToken($response->oauth_token$response->oauth_token_secret); 
        
$this->storage->setStepID(2);
        
        
// Redirect user to login
        
$this->_step3_redirectUserToLogin();
    }
    
    
/*
    This function will redirect usres to login page
    */
    
    
private function _step3_redirectUserToLogin()
    {
        
$app_name     $this->request->percentEncode($this->configs->app_name);
        
$call_back     $this->request->percentEncode($this->configs->app_callback);

        
$login_link 'https://api-user.netflix.com/oauth/login?application_name=' $app_name;
        
$login_link    .= '&oauth_callback=' $call_back;
        
$login_link .= '&oauth_consumer_key= ' .$this->configs->consumer_key '&oauth_token=' $this->configs->oauth_token;
        
        
$this->storage->setStepID(3);
        
        
header("Location: $login_link");
        die();
    }    
    
    
/*
    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 );
        
        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'];
    }
    
}