summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Translate/webservices/RemoteTTMServerWebService.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Translate/webservices/RemoteTTMServerWebService.php')
-rw-r--r--www/wiki/extensions/Translate/webservices/RemoteTTMServerWebService.php61
1 files changed, 61 insertions, 0 deletions
diff --git a/www/wiki/extensions/Translate/webservices/RemoteTTMServerWebService.php b/www/wiki/extensions/Translate/webservices/RemoteTTMServerWebService.php
new file mode 100644
index 00000000..c54d319a
--- /dev/null
+++ b/www/wiki/extensions/Translate/webservices/RemoteTTMServerWebService.php
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Contains a class for querying external translation service.
+ *
+ * @file
+ * @author Niklas Laxström
+ * @copyright Copyright © 2010-2013 Niklas Laxström
+ * @license GPL-2.0-or-later
+ */
+
+/**
+ * Implements support for ttmserver via MediaWiki API.
+ * @see https://www.mediawiki.org/wiki/Help:Extension:Translate/Translation_memories
+ * @ingroup TranslationWebService
+ * @since 2013-01-01
+ */
+class RemoteTTMServerWebService extends TranslationWebService {
+ public function getType() {
+ return 'ttmserver';
+ }
+
+ protected function mapCode( $code ) {
+ return $code; // Unused
+ }
+
+ protected function doPairs() {
+ return null; // Unused
+ }
+
+ protected function getQuery( $text, $from, $to ) {
+ $params = [
+ 'format' => 'json',
+ 'action' => 'ttmserver',
+ 'sourcelanguage' => $from,
+ 'targetlanguage' => $to,
+ 'text' => $text
+ ];
+
+ if ( isset( $this->config['service'] ) ) {
+ $params['service'] = $this->config['service'];
+ }
+
+ return TranslationQuery::factory( $this->config['url'] )
+ ->timeout( $this->config['timeout'] )
+ ->queryParameters( $params );
+ }
+
+ protected function parseResponse( TranslationQueryResponse $reply ) {
+ $body = $reply->getBody();
+ $parsed = FormatJson::decode( $body, true );
+ if ( !is_array( $parsed ) ) {
+ throw new TranslationWebServiceException( 'Invalid json: ' . serialize( $body ) );
+ }
+
+ if ( !isset( $parsed['ttmserver'] ) ) {
+ throw new TranslationWebServiceException( 'Unexpected reply from remote server' );
+ }
+
+ return $parsed['ttmserver'];
+ }
+}