/**
  * Makes the request to the server.
  * 
  * @param string $server	
  * @param string $service		The rest service to access e.g. /connections/communities/all
  * @param string $method		GET, POST or PUT
  * @param string $body
  * @param string $headers
  */
 public function makeRequest($server, $service, $method, $options, $body = null, $headers = null, $endpointName = "connections")
 {
     $store = SBTCredentialStore::getInstance();
     $settings = new SBTSettings();
     $token = $store->getToken($endpointName);
     $response = null;
     $client = new Client($server);
     $client->setDefaultOption('verify', false);
     // If global username and password is set, then use it; otherwise use user-specific credentials
     if ($settings->getBasicAuthMethod($endpointName) == 'global') {
         $user = $settings->getBasicAuthUsername($endpointName);
         $password = $settings->getBasicAuthPassword($endpointName);
     } else {
         $user = $store->getBasicAuthUsername($endpointName);
         $password = $store->getBasicAuthPassword($endpointName);
     }
     try {
         $request = $client->createRequest($method, $service, $headers, $body, $options);
         if ($settings->forceSSLTrust($endpointName)) {
             $request->getCurlOptions()->set(CURLOPT_SSL_VERIFYHOST, false);
             $request->getCurlOptions()->set(CURLOPT_SSL_VERIFYPEER, false);
         }
         if ($method == 'POST' && isset($_FILES['file']['tmp_name'])) {
             $request->addPostFile('file', $_FILES['file']['tmp_name']);
         }
         $request->setAuth($user, $password);
         $response = $request->send();
     } catch (Guzzle\Http\Exception\BadResponseException $e) {
         $response = $e->getResponse();
     }
     return $response;
 }
Ejemplo n.º 2
0
 /**
  * Tests whether settings are saved correctly by simulating post
  * requests using mock data.
  */
 function test_endpoint_save_settings()
 {
     // Load mock data
     require 'mock_data.php';
     if (!class_exists('SBTEndpointUpdate')) {
         require BASE_PATH . '/controllers/SBTEndpointUpdate.php';
     }
     // Fake post request - populate it with mock data
     $_POST['endpoint_name'] = $config['wp_endpoint_2_name'];
     $_POST['endpoint_url'] = $config['wp_endpoint_2_url'];
     $_POST['consumer_key'] = $config['wp_endpoint_2_consumer_key'];
     $_POST['consumer_secret'] = $config['wp_endpoint_2_consumer_secret'];
     $_POST['authorization_url'] = $config['wp_endpoint_2_authorization_url'];
     $_POST['access_token_url'] = $config['wp_endpoint_2_access_token_url'];
     $_POST['request_token_url'] = $config['wp_endpoint_2_request_token_url'];
     $_POST['authentication_method'] = $config['wp_endpoint_2_authentication_method'];
     $_POST['basic_auth_username'] = $config['wp_endpoint_2_basic_auth_username'];
     $_POST['basic_auth_password'] = $config['wp_endpoint_2_basic_auth_password'];
     $_POST['basic_auth_method'] = $config['wp_endpoint_2_basic_auth_method'];
     $_POST['sdk_deploy_url'] = $config['sdk_deploy_url'];
     $_POST['delete_endpoint'] = 'no';
     $_POST['libraries_list'] = $config['js_library'];
     // Update the endpoint
     $update = new SBTEndpointUpdate();
     // Load settings
     if (!class_exists('SBTSettings')) {
         require BASE_PATH . '/core/models/SBTSettings.php';
     }
     $settings = new SBTSettings();
     // Check that settings have been saved
     $this->assertEquals($config['wp_endpoint_2_name'], $settings->getName());
     $this->assertEquals($config['wp_endpoint_2_url'], $settings->getURL());
     $this->assertEquals($config['wp_endpoint_2_consumer_key'], $settings->getConsumerKey());
     $this->assertEquals($config['wp_endpoint_2_consumer_secret'], $settings->getConsumerSecret());
     $this->assertEquals($config['wp_endpoint_2_authorization_url'], $settings->getAuthorizationURL());
     $this->assertEquals($config['wp_endpoint_2_access_token_url'], $settings->getAccessTokenURL());
     $this->assertEquals($config['wp_endpoint_2_request_token_url'], $settings->getRequestTokenURL());
     $this->assertEquals($config['wp_endpoint_2_authentication_method'], $settings->getAuthenticationMethod());
     $this->assertEquals($config['wp_endpoint_2_basic_auth_username'], $settings->getBasicAuthUsername());
     $this->assertEquals($config['wp_endpoint_2_basic_auth_password'], $settings->getBasicAuthPassword());
     $this->assertEquals($config['wp_endpoint_2_basic_auth_method'], $settings->getBasicAuthMethod());
     $this->assertEquals($config['sdk_deploy_url'], $settings->getSDKDeployURL());
     $this->assertEquals($config['js_library'], $settings->getJSLibrary());
     // Now delete the endpoint
     $_POST['delete_endpoint'] = 'yes';
     // Perform update
     $update = new SBTEndpointUpdate();
     // Make sure that the endpoint has been deleted
     $settings = new SBTSettings();
     $this->assertNotEquals($config['wp_endpoint_2_name'], $settings->getName());
 }
Ejemplo n.º 3
0
 /**
  * Outputs the content of the widget.
  *
  * @param array $args
  * @param array $instance
  */
 public function widget($args, $instance)
 {
     $settings = new SBTSettings();
     $store = SBTCredentialStore::getInstance();
     if (isset($instance['ibm-sbtk-endpoint'])) {
         $this->endpoint = $instance['ibm-sbtk-endpoint'];
     } else {
         $this->endpoint = "connections";
     }
     if (!$this->_isUserLoggedIn()) {
         // Add && $settings->requireSignOn($this->endpoint) to enable both anon and non-anon access
         echo '<div class="widget-area" style="width: 100%;"><aside class="widget widget_recent_entries"><h3 class="widget-title">' . $this->widget_name . '</h3>';
         echo '' . $GLOBALS[LANG]['must_login'] . '</aside></div>';
         return;
     }
     // If tokens exist, make sure that they are valid. Otherwise clear the store and force the
     // user to re-log
     if (($settings->getAuthenticationMethod($this->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->endpoint) != null) {
         $endpoint = null;
         if ($settings->getAuthenticationMethod($this->endpoint) == "oauth2") {
             $endpoint = new SBTOAuth2Endpoint();
         } else {
             if ($settings->getAuthenticationMethod($this->endpoint) == "oauth1") {
                 $endpoint = new SBTOAuth1Endpoint();
             }
         }
         $service = '/files/basic/api/myuserlibrary/feed';
         $response = $endpoint->makeRequest($settings->getURL($this->endpoint), $service, 'GET', array(), null, null, $this->endpoint);
         if ($response->getStatusCode() == 401) {
             $store->deleteOAuthCredentials($this->endpoint);
             setcookie('IBMSBTKOAuthLogin', "", $timestamp - 604800);
             require BASE_PATH . '/core/views/oauth-login-display.php';
         }
     } else {
         $endpoint = new SBTBasicAuthEndpoint();
         $service = '/files/basic/api/myuserlibrary/feed';
         $response = $endpoint->makeRequest($settings->getURL($this->endpoint), $service, 'GET', array(), null, null, $this->endpoint);
         if ($response->getStatusCode() == 401) {
             // Delete old credentials.
             $store->deleteBasicAuthCredentials($this->endpoint);
         }
     }
     echo '<div name="ibm_sbtk_widget" class="widget-area" style="width:100%"><aside class="widget widget_recent_entries">';
     echo '<h3 class="widget-title">' . $this->widget_name . '</h3>';
     if (($settings->getAuthenticationMethod($this->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2') && $store->getOAuthAccessToken($this->endpoint) == null && (!isset($_COOKIE['IBMSBTKOAuthLogin']) || $_COOKIE['IBMSBTKOAuthLogin'] != 'yes') && !$this->_isUserLoggedIn()) {
         require BASE_PATH . '/core/views/oauth-login-display.php';
         echo '</aside></div>';
         return;
     }
     $plugin = new SBTPlugin($this->endpoint);
     if ($settings->getAuthenticationMethod($this->endpoint) == 'basic' && $store->getBasicAuthUsername($this->endpoint) != null && $store->getBasicAuthPassword($this->endpoint) != null || $settings->getAuthenticationMethod($this->endpoint) == 'oauth1' && $store->getRequestToken($this->endpoint) != null || $settings->getAuthenticationMethod($this->endpoint) == 'basic' && $settings->getBasicAuthMethod($this->endpoint) == 'global' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2' && $store->getOAuthAccessToken($this->endpoint) != null) {
         require $this->widget_location;
     }
     if ($settings->getAuthenticationMethod($this->endpoint) == 'basic' && $settings->getBasicAuthMethod($this->endpoint) == 'prompt' && $store->getBasicAuthPassword($this->endpoint) == null) {
         require_once BASE_PATH . '/views/basic-auth-login-display.php';
     } else {
         if ($settings->getAuthenticationMethod($this->endpoint) == 'oauth1' || $settings->getAuthenticationMethod($this->endpoint) == 'oauth2') {
             // 			require_once BASE_PATH . '/views/oauth-logout-display.php'; TODO: Uncomment when OAuth logout has been fixed
         }
     }
     echo '</aside></div>';
 }