Changeset 1386

Show
Ignore:
Timestamp:
11/30/08 07:28:57 (6 weeks ago)
Author:
ayunyan
Message:

plugin:dropiosilo added guest password support, better error handling

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • plugins/dropiosilo/trunk/dropiosilo.plugin.php

    r1384 r1386  
    4747        Options::set('dropiosilo__api_key', ''); 
    4848        Options::set('dropiosilo__drop_name', ''); 
     49        Options::set('dropiosilo__password', ''); 
    4950    } 
    5051 
     
    8788            $form->append('label', 'api_key_get_label', '<a href="http://api.drop.io/" target="_blank">doesn\'t have API Key?</a>'); 
    8889            $form->append('text', 'drop_name', 'dropiosilo__drop_name', _t('Drop Name: ', 'dropiosilo')); 
     90            $form->append('password', 'password', 'dropiosilo__password', _t('Guest Password (optional): ', 'dropiosilo')); 
    8991            $form->append('submit', 'save', _t('Save')); 
    9092            $form->out(); 
     
    135137    public function silo_info() 
    136138    { 
    137         $dropio = new DropioAPI(Options::get('dropiosilo__api_key'), Options::get('dropiosilo__drop_name')); 
    138         if ($dropio->check()) { 
     139        $dropio = new DropioAPI(Options::get('dropiosilo__api_key'), Options::get('dropiosilo__drop_name'), Options::get('dropiosilo__password')); 
     140        try { 
     141            $dropio->check(); 
    139142            return array( 
    140143                'name' => self::SILO_NAME, 
    141144                'icon' => $this->get_url() . '/img/icon.png' 
    142145                ); 
    143         } else { 
    144             Session::error(_t('drop.io Silo: Invalid API Key or Drop Name', 'dropiosilo')); 
     146        } catch (Exception $e) { 
     147            Session::error(sprintf(_t('drop.io Silo: %s', 'dropiosilo'), $e->getMessage())); 
    145148            return array(); 
    146149        } 
     
    158161        $results = array(); 
    159162 
    160         $dropio = new DropioAPI(Options::get('dropiosilo__api_key'), Options::get('dropiosilo__drop_name')); 
    161         $assets = $dropio->get_assets(); 
     163        $dropio = new DropioAPI(Options::get('dropiosilo__api_key'), Options::get('dropiosilo__drop_name'), Options::get('dropiosilo__password')); 
     164        try { 
     165            $assets = $dropio->get_assets(); 
     166        } catch (Exception $e) { 
     167            return array(); 
     168        } 
    162169 
    163170        for ($i = 0; $i < count($assets); $i++) { 
     
    247254    private $api_key; 
    248255    private $drop_name; 
     256    private $token; 
    249257    private $base_url = 'http://api.drop.io/drops/'; 
    250258 
     
    256264     * @param string $drop_name 
    257265     */ 
    258     public function __construct($api_key, $drop_name) 
     266    public function __construct($api_key, $drop_name, $token = '') 
    259267    { 
    260268        $this->api_key = $api_key; 
    261269        $this->drop_name = $drop_name; 
     270        $this->token = $token; 
    262271    } 
    263272 
     
    269278    public function check() 
    270279    { 
    271         $request = new RemoteRequest($this->base_url . $this->drop_name . '?api_key=' . $this->api_key . '&version=1.0&format=json', 'GET' ); 
     280        $request = new RemoteRequest($this->base_url . $this->drop_name . '?api_key=' . $this->api_key . '&token=' . $this->token . '&version=1.0&format=json', 'GET'); 
    272281        $result = $request->execute(); 
    273         if ($result !== true) return false; 
    274                 $drop = json_decode($request->get_response_body()); 
    275                 if (isset($drop->name) && $drop->name == $this->drop_name) return true; 
    276                 return false; 
     282        if ($result !== true) throw new Exception('Invalid API Key, Drop Name or Password.'); 
     283                $respose = json_decode($request->get_response_body()); 
     284                if (isset($response->result) && $response->result == 'Failure') { 
     285            throw new Exception($response->message); 
     286        } 
     287                return true; 
    277288    } 
    278289 
     
    284295    public function get_assets() 
    285296    { 
    286         $request = new RemoteRequest($this->base_url . $this->drop_name . '/assets?api_key=' . $this->api_key . '&version=1.0&format=json', 'GET' ); 
     297        $request = new RemoteRequest($this->base_url . $this->drop_name . '/assets?api_key=' . $this->api_key . '&token=' . $this->token . '&version=1.0&format=json', 'GET'); 
    287298        $result = $request->execute(); 
    288         if ($result !== true) return false; 
    289                 $assets = json_decode($request->get_response_body()); 
    290         return $assets; 
     299        if ($result !== true) throw new Exception('Invalid API Key, Drop Name or Password.'); 
     300                $response = json_decode($request->get_response_body()); 
     301                if (isset($response->result) && $response->result == 'Failure') { 
     302            throw new Exception($response->message); 
     303        } 
     304        return $response; 
    291305    } 
    292306}