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: 4 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'];
    }
   
}