WordPress.org

Make WordPress Core

Ticket #22422: keys-from-api.patch

File keys-from-api.patch, 6.2 KB (added by dllh, 17 months ago)

Fetches consumer/secret keys from an api

  • tumblr-importer.php

     
    4949        function __construct() { 
    5050                add_action( 'tumblr_importer_metadata', array( $this, 'tumblr_importer_metadata' ) ); 
    5151                add_filter( 'tumblr_importer_format_post', array( $this, 'filter_format_post' ) ); 
    52                 add_filter( 'tumblr_importer_get_consumer_key', array( $this, 'get_consumer_key' ) ); 
    5352                add_filter( 'wp_insert_post_empty_content', array( $this, 'filter_allow_empty_content' ), 10, 2 ); 
    5453                parent::__construct(); 
    5554        } 
     
    6059                        $this->restart(); 
    6160                         
    6261                if ( !isset($this->error) ) $this->error = null; 
     62         
     63                $this->set_tumblr_keys();        
    6364                 
    64                 $this->consumerkey = defined ('TUMBLR_CONSUMER_KEY') ? TUMBLR_CONSUMER_KEY : ( !empty($_POST['consumerkey']) ? $_POST['consumerkey'] : $this->consumerkey ); 
    65                 $this->secretkey = defined ('TUMBLR_SECRET_KEY') ? TUMBLR_SECRET_KEY : ( !empty($_POST['secretkey']) ? $_POST['secretkey'] : $this->secretkey ); 
    66                  
    6765                // if we have access tokens, verify that they work 
    6866                if ( !empty( $this->access_tokens ) ) { 
    6967                        // TODO 
    7068                } else if ( isset( $_GET['oauth_verifier'] ) ) { 
    7169                        $this->check_permissions(); 
    72                 } else if ( !empty( $this->consumerkey ) && !empty( $this->secretkey ) ) { 
     70                } else if ( !empty( $this->consumer_key ) && !empty( $this->secret_key ) ) { 
    7371                        $this->check_credentials(); 
    7472                } 
    7573                if ( isset( $_POST['blogurl'] ) ) { 
     
    123121                <form action='?import=tumblr' method='post'> 
    124122                        <table class="form-table"> 
    125123                                <tr> 
    126                                         <th scope="row"><label for='consumerkey'><?php _e('OAuth Consumer Key:','tumblr-importer'); ?></label></label></th> 
    127                                         <td><input type='text' class="regular-text" name='consumerkey' value='<?php if (isset($this->consumerkey)) echo esc_attr($this->consumerkey); ?>' /></td> 
     124                                        <th scope="row"><label for='consumer_key'><?php _e('OAuth Consumer Key:','tumblr-importer'); ?></label></label></th> 
     125                                        <td><input type='text' class="regular-text" name='consumer_key' value='<?php if (isset($this->consumer_key)) echo esc_attr($this->consumer_key); ?>' /></td> 
    128126                                </tr> 
    129127                                <tr> 
    130                                         <th scope="row"><label for='secretkey'><?php _e('Secret Key:','tumblr-importer'); ?></label></label></th> 
    131                                         <td><input type='text' class="regular-text" name='secretkey' value='<?php if (isset($this->secretkey)) echo esc_attr($this->secretkey); ?>' /></td> 
     128                                        <th scope="row"><label for='secret_key'><?php _e('Secret Key:','tumblr-importer'); ?></label></label></th> 
     129                                        <td><input type='text' class="regular-text" name='secret_key' value='<?php if (isset($this->secret_key)) echo esc_attr($this->secret_key); ?>' /></td> 
    132130                                </tr> 
    133131                        </table> 
    134132                        <p class='submit'> 
     
    172170                // get the access_tokens 
    173171                $url = 'http://www.tumblr.com/oauth/access_token'; 
    174172                 
    175                 $params = array('oauth_consumer_key' => $this->consumerkey, 
     173                $params = array('oauth_consumer_key' => $this->consumer_key, 
    176174                                "oauth_nonce" => time().rand(), 
    177175                                "oauth_timestamp" => time(), 
    178176                                "oauth_token" => $this->request_tokens['oauth_token'], 
     
    181179                                "oauth_version" => "1.0", 
    182180                                ); 
    183181 
    184                 $params['oauth_signature'] = $this->oauth_signature(array($this->secretkey,$this->request_tokens['oauth_token_secret']), 'GET', $url, $params); 
     182                $params['oauth_signature'] = $this->oauth_signature(array($this->secret_key,$this->request_tokens['oauth_token_secret']), 'GET', $url, $params); 
    185183 
    186184                $url = add_query_arg( array_map('urlencode', $params), $url); 
    187185                $response = wp_remote_get( $url );               
     
    670668         * 
    671669         */ 
    672670         function oauth_get_request_token() { 
    673                 if ( empty($this->consumerkey) || empty ($this->secretkey) ) 
     671                if ( empty($this->consumer_key) || empty ($this->secret_key) ) 
    674672                        return false; 
    675673                 
    676674                $url = 'http://www.tumblr.com/oauth/request_token'; 
    677675          
    678676                $params = array('oauth_callback' => urlencode( self_admin_url('admin.php?import=tumblr') ), 
    679                                 'oauth_consumer_key' => $this->consumerkey, 
     677                                'oauth_consumer_key' => $this->consumer_key, 
    680678                                "oauth_version" => "1.0", 
    681679                                "oauth_nonce" => time(), 
    682680                                "oauth_timestamp" => time(), 
    683681                                "oauth_signature_method" => "HMAC-SHA1", 
    684682                                ); 
    685683                 
    686                 $params['oauth_signature'] = $this->oauth_signature(array($this->secretkey,''), 'POST', $url, $params); 
     684                $params['oauth_signature'] = $this->oauth_signature(array($this->secret_key,''), 'POST', $url, $params); 
    687685                 
    688686                $response = wp_remote_post( $url, array('body' => $params)); 
    689687                 
     
    730728                return $this->blogs; 
    731729        } 
    732730 
    733         function get_consumer_key() { 
    734                 return $this->consumerkey; 
     731        function set_tumblr_keys() { 
     732                global $wp_version; 
     733 
     734                $keys = get_site_transient( 'tumblr_consumer_key' ); 
     735                if ( ! $keys ) { 
     736                        //$url = 'http://api.wordpress.org/core/importers/1.0/'; 
     737                        $url = 'http://oddbird.org/tumblr/'; 
     738                        $options = array( 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url() ); 
     739                        $keys = maybe_unserialize( wp_remote_retrieve_body( wp_remote_get( $url, $options ) ) ); 
     740 
     741                        if ( is_array( $keys ) ) 
     742                                set_site_transient( 'tumblr_consumer_key', $keys, 1 * DAY_IN_SECONDS ); 
     743                        else 
     744                                return false; 
     745                } 
     746                $this->consumer_key = $keys['consumer_key']; 
     747                $this->secret_key = $keys['secret_key']; 
    735748        } 
    736749 
    737750        /** 
     
    754767                        $params = array( 
    755768                                'offset'  => $start, 
    756769                                'limit'   => $count, 
    757                                 'api_key' => apply_filters( 'tumblr_importer_get_consumer_key', '' ), 
     770                                'api_key' => $this->consumer_key, 
    758771                        ); 
    759772                        $url = add_query_arg( $params, $url ); 
    760773                } 
     
    978991                if ( empty( $this->access_tokens ) )  
    979992                        return false; 
    980993         
    981                 $params = array('oauth_consumer_key' => $this->get_consumer_key(), 
     994                $params = array('oauth_consumer_key' => $this->consumer_key, 
    982995                                "oauth_nonce" => time(), 
    983996                                "oauth_timestamp" => time(), 
    984997                                "oauth_token" => $this->access_tokens['oauth_token'], 
     
    986999                                "oauth_version" => "1.0", 
    9871000                                ); 
    9881001 
    989                 $params['oauth_signature'] = $this->oauth_signature(array($this->secretkey,$this->access_tokens['oauth_token_secret']), 'GET', $url, $params); 
     1002                $params['oauth_signature'] = $this->oauth_signature(array($this->secret_key,$this->access_tokens['oauth_token_secret']), 'GET', $url, $params); 
    9901003 
    9911004                $url = add_query_arg( array_map('urlencode', $params), $url); 
    9921005