autoship_get_default_client()

(src/api.php) Used to retrieve the QPilot client by scope (merchant vs customer). The default scope may be overridden using the ' autoship_default_client_token_scope' filter. It takes an empty $scope as a parameter and returns the new QPilot client.

Function

 
/**
* Retrieves a new instance of the QPilot Client class
* using the current Autoship settings
* @param string $scope Optional. A scope override for the token
* @param string $source Optional. The owner of the Client ( 'Customer' or 'Merchant' )
* @return QPilotClient
*/
function autoship_get_default_client( $scope = '' ) {

  if ( empty( $scope ) )
  $scope = apply_filters( 'autoship_default_client_token_scope', 'merchant' );

	// Check token expiration & regenerate if needed.
	$token_created_at = autoship_get_token_created_at();
	$token_expires_in = autoship_get_token_expires_in();
	$one_week = 604800;
	if ( ( $token_created_at + $token_expires_in - $one_week ) < time() ) {
		try {
			// Generate a fresh access token
			autoship_refresh_token_auth();
		} catch (Exception $e) {
			// Ignore and move on
		}
	}

  $customer_id = get_current_user_id();

	// Create a new Client instance.
	$client = new QPilotClient();

  // Now we check for the token scope
  $admin = autoship_rights_checker( 'autoship_client_token_scope', array( 'edit_pages' ) );

  // Set source to Customer or Merchant based on caps
  if ( !$admin )
  $client->set_source( 'Customer' );

  // If not an admin but customer then let's set customer scope
  if ( !$admin && ( 'merchant' != $scope ) && $customer_id ){

    try {
      $token = $client->generate_customer_access_token( $customer_id, autoship_get_client_secret() );
      $client->set_token_auth( $token->tokenBearerAuth );
    } catch ( Exception $e ) {
      autoship_log_entry( __( 'Autoship Orders', 'autoship' ), sprintf( '%d Generate customer access token failed for customer %d. Additional Details: %s', $e->getCode(), $customer_id, $e->getMessage() ) );
    }

  }

	return $client;

}