diff --git a/src/MicrosoftTranslatorUi.php b/src/MicrosoftTranslatorUi.php index f0cd67d..8cac74f 100755 --- a/src/MicrosoftTranslatorUi.php +++ b/src/MicrosoftTranslatorUi.php @@ -1,5 +1,4 @@ 'textfield', '#title' => t('Microsoft Customer ID'), - '#default_value' => $translator->getSetting('clientid'), + '#default_value' => $translator->getSetting('client_id'), '#description' => t('Please enter your Microsoft Customer ID, or follow this link to generate one.', array('!link' => $generate_url)), ); - $form['clientsecret'] = array( + $form['client_secret'] = array( '#type' => 'textfield', '#title' => t('Primary Account Key'), - '#default_value' => $translator->getSetting('clientsecret'), + '#default_value' => $translator->getSetting('client_secret'), '#description' => t('Please enter your Microsoft Primary Account Key, or follow this link to generate one.', array('!link' => $generate_url)), ); + return parent::pluginSettingsForm($form, $form_state, $translator); } diff --git a/src/Plugin/tmgmt/Translator/MicrosoftTranslator.php b/src/Plugin/tmgmt/Translator/MicrosoftTranslator.php index 1364fa7..6a00c1f 100755 --- a/src/Plugin/tmgmt/Translator/MicrosoftTranslator.php +++ b/src/Plugin/tmgmt/Translator/MicrosoftTranslator.php @@ -82,7 +82,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto /** * {@inheritdoc} */ - public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { + public static function create(ContainerInterface $container, array $configuration, $plugin_id, array $plugin_definition) { return new static( $container->get('http_client'), $configuration, @@ -92,17 +92,17 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } /** - * Overrides TMGMTDefaultTranslatorPluginController::isAvailable(). + * {@inheritdoc} */ public function isAvailable(Translator $translator) { - if ($translator->getSetting('clientid') && $translator->getSetting('clientsecret')) { + if ($translator->getSetting('client_id') && $translator->getSetting('client_secret')) { return TRUE; } return FALSE; } /** - * Overrides TMGMTDefaultTranslatorPluginController::canTranslate(). + * {@inheritdoc} */ public function canTranslate(Translator $translator, Job $job) { if (!parent::canTranslate($translator, $job)) { @@ -119,7 +119,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } /** - * Implements TMGMTTranslatorPluginControllerInterface::requestTranslation(). + * {@inheritdoc} */ public function requestTranslation(Job $job) { // Pull the source data array through the job and flatten it. @@ -159,12 +159,13 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } /** - * Overrides TMGMTDefaultTranslatorPluginController::getSupportedRemoteLanguages(). + * {@inheritdoc} */ public function getSupportedRemoteLanguages(Translator $translator) { $languages = array(); // Prevent access if the translator isn't configured yet. - if (!$translator->getSetting('clientid')) { + if (!$translator->getSetting('client_id')) { + // @todo should be implemented by an Exception. return $languages; } try { @@ -187,7 +188,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } /** - * Overrides TMGMTDefaultTranslatorPluginController::getDefaultRemoteLanguagesMappings(). + * {@inheritdoc} */ public function getDefaultRemoteLanguagesMappings() { return array( @@ -197,7 +198,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } /** - * Overrides TMGMTDefaultTranslatorPluginController::getSupportedTargetLanguages(). + * {@inheritdoc} */ public function getSupportedTargetLanguages(Translator $translator, $source_language) { @@ -211,7 +212,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto // Check if the source language is available. if (array_key_exists($source_language, $languages)) { - // If source language is listed a possible target language, remove it. + // If source language is listed as possible target language, remove it. unset($languages[$source_language]); return $languages; } @@ -220,7 +221,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } /** - * Overrides TMGMTDefaultTranslatorPluginController::hasCheckoutSettings(). + * {@inheritdoc} */ public function hasCheckoutSettings(Job $job) { return FALSE; @@ -246,14 +247,14 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto $custom_url = $translator->getSetting('url'); $url = ($custom_url ? $custom_url : $this->translatorUrl) . '/' . $path; - $testtokenurl = FALSE; + $test_token_url = FALSE; if ($custom_url) { - $testtokenurl = $custom_url . '/GetToken'; + $test_token_url = $custom_url . '/GetToken'; } // The current API uses 2 new parameters and an access token. - $clientid = $translator->getSetting('clientid'); - $clientsecret = $translator->getSetting('clientsecret'); - $token = $this->getToken($clientid, $clientsecret, $testtokenurl); + $client_id = $translator->getSetting('client_id'); + $client_secret = $translator->getSetting('client_secret'); + $token = $this->getToken($client_id, $client_secret, $test_token_url); $request_url = Url::fromUri($url)->toString(); $request = $this->client->createRequest('GET', $request_url); @@ -272,6 +273,8 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto * Application client ID. * @param $clientSecret * Application client secret string. + * @param $test_url + * (Optional) The test URL. * * @return string * The access token. @@ -279,7 +282,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto * @throws \Drupal\tmgmt\TMGMTException * Thrown when the client id or secret are missing or are not valid. */ - protected function getToken($clientID, $clientSecret, $testurl = FALSE) { + protected function getToken($clientID, $clientSecret, $test_url = FALSE) { $token = &drupal_static(__FUNCTION__); if (isset($token[$clientID][$clientSecret])) { @@ -291,8 +294,8 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } $url = $this->authUrl; - if ($testurl) { - $url = $testurl; + if ($test_url) { + $url = $test_url; } // Prepare Guzzle Object. @@ -309,7 +312,7 @@ class MicrosoftTranslator extends TranslatorPluginBase implements ContainerFacto } catch (BadResponseException $e) { $error = $e->getResponse()->json(); - throw new \Exception('Microsoft Translate service returned following error: ' . $error['error_description']); + throw new TMGMTException('Microsoft Translate service returned following error: ' . $error['error_description']); } $data = json_decode($response->getBody(TRUE)); diff --git a/src/Tests/MicrosoftTest.php b/src/Tests/MicrosoftTest.php index 817c535..54eecb2 100755 --- a/src/Tests/MicrosoftTest.php +++ b/src/Tests/MicrosoftTest.php @@ -1,8 +1,7 @@ 'Microsoft Translator tests', - 'description' => 'Tests the microsoft translator plugin integration.', + 'description' => 'Tests the Microsoft translator plugin integration.', 'group' => 'Translation Management', ); } @@ -49,9 +48,9 @@ class MicrosoftTest extends TMGMTTestBase { $this->assertFalse($job->isTranslatable(), 'Check if the translator is not available at this point because we did not define the API parameters.'); // Save a wrong api key. - $translator->settings['api'] = 'wrong key'; - $translator->settings['clientid'] = 'wrong clientid'; - $translator->settings['clientsecret'] = 'wrong secret'; + $translator->settings['api'] = 'wrong api key'; + $translator->settings['client_id'] = 'wrong client_id'; + $translator->settings['client_secret'] = 'wrong client_secret'; $translator->save(); $translator = $job->getTranslator(); @@ -59,9 +58,9 @@ class MicrosoftTest extends TMGMTTestBase { $this->assertTrue(empty($languages), t('We can not get the languages using wrong api parameters.')); // Save a correct api key. - $translator->settings['api'] = 'correct key'; - $translator->settings['clientid'] = 'correct clientid'; - $translator->settings['clientsecret'] = 'correct secret'; + $translator->settings['api'] = 'correct api key'; + $translator->settings['client_id'] = 'correct client_id'; + $translator->settings['client_secret'] = 'correct client_secret'; $translator->save(); // Make sure the translator returns the correct supported target languages. diff --git a/tmgmt_microsoft.module b/tmgmt_microsoft.module index 4bf6646..fe32c4c 100644 --- a/tmgmt_microsoft.module +++ b/tmgmt_microsoft.module @@ -17,8 +17,8 @@ function tmgmt_microsoft_tmgmt_translator_plugin_info() { 'ui controller class' => 'TMGMTMicrosoftTranslatorUIController', 'default settings' => array( 'api' => '', - 'clientid' => '', - 'clientsecret' => '', + 'client_id' => '', + 'client_secret' => '', ), ), ); diff --git a/tmgmt_microsoft_test/src/Controller/MicrosoftTranslatorTestController.php b/tmgmt_microsoft_test/src/Controller/MicrosoftTranslatorTestController.php index a1eb08f..2ae5e2f 100755 --- a/tmgmt_microsoft_test/src/Controller/MicrosoftTranslatorTestController.php +++ b/tmgmt_microsoft_test/src/Controller/MicrosoftTranslatorTestController.php @@ -1,8 +1,11 @@ request->get('grant_type') == 'client_credentials' && $request->request->get('scope') == 'http://api.microsofttranslator.com' && $request->request->get('client_id') == 'correct clientid' && $request->request->get('client_secret') == 'correct secret') { + if ($request->request->get('grant_type') == 'client_credentials' && $request->request->get('scope') == 'http://api.microsofttranslator.com' && $request->request->get('client_id') == 'correct client_id' && $request->request->get('client_secret') == 'correct client_secret') { // Return the expected test value. $response['access_token'] = 'correct token'; return new JsonResponse($response);