You are here

public static function SmartlingApiFactory::create in TMGMT Translator Smartling 8.3

Same name and namespace in other branches
  1. 8.4 src/Smartling/SmartlingApiFactory.php \Drupal\tmgmt_smartling\Smartling\SmartlingApiFactory::create()
  2. 8.2 src/Smartling/SmartlingApiFactory.php \Drupal\tmgmt_smartling\Smartling\SmartlingApiFactory::create()

Returns API object as a service.

Parameters

array $settings:

string $api_type:

Return value

\Smartling\BaseApiAbstract

Throws

\Exception

\Smartling\Exceptions\SmartlingApiException

File

src/Smartling/SmartlingApiFactory.php, line 38
SmartlingApiFactory.php.

Class

SmartlingApiFactory
Class SmartlingApiFactory @package Drupal\tmgmt_smartling\Smartling

Namespace

Drupal\tmgmt_smartling\Smartling

Code

public static function create(array $settings, $api_type) {
  require_once __DIR__ . '/../../vendor/autoload.php';
  if (empty($settings['user_id']) || empty($settings['project_id']) || empty($settings['token_secret'])) {
    throw new SmartlingApiException('The "User Id", "Token Secret", or "Project Id" are not correct.');
  }
  ConnectorInfo::setUpCurrentClientInfo();
  $auth_provider = AuthTokenProvider::create($settings['user_id'], $settings['token_secret']);
  $logger = \Drupal::logger('smartling_api');
  $api = NULL;
  switch ($api_type) {
    case 'file':
      $api = FileApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    case 'project':
      $api = ProjectApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    case 'jobs':
      $api = JobsApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    case 'batch':
      $api = BatchApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    case 'context':
      $api = ContextApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    case 'progress':
      $api = ProgressTrackerApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    case 'audit':
      $api = AuditLogApi::create($auth_provider, $settings['project_id'], $logger);
      break;
    default:
      throw new Exception('Unsupported API has been requested: ' . $api_type);
  }
  return $api;
}