12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Net;
- using System.Text;
- using SimpleJSON;
- using UnityEngine;
- using XUnity.AutoTranslator.Plugin.Core.Configuration;
- using XUnity.AutoTranslator.Plugin.Core.Constants;
- using XUnity.AutoTranslator.Plugin.Core.Extensions;
- namespace XUnity.AutoTranslator.Plugin.Core.Web
- {
- public class YandexTranslateEndpoint : KnownHttpEndpoint
- {
- private static readonly string HttpsServicePointTemplateUrl = "https://translate.yandex.net/api/v1.5/tr.json/translate?key={3}&text={2}&lang={0}-{1}&format=plain";
- public YandexTranslateEndpoint()
- {
- ServicePointManager.ServerCertificateValidationCallback += Security.AlwaysAllowByHosts( "translate.yandex.net" );
- }
- public override void ApplyHeaders( WebHeaderCollection headers )
- {
- headers[ HttpRequestHeader.UserAgent ] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.183 Safari/537.36 Vivaldi/1.96.1147.55";
- headers[ HttpRequestHeader.Accept ] = "*/*";
- headers[ HttpRequestHeader.AcceptCharset ] = "UTF-8";
- }
- public override bool TryExtractTranslated( string result, out string translated )
- {
- try
- {
- var obj = JSON.Parse( result );
- var lineBuilder = new StringBuilder( result.Length );
- var code = obj.AsObject[ "code" ].ToString();
- if( code == "200" )
- {
- var token = obj.AsObject[ "text" ].ToString();
- token = token.Substring( 2, token.Length - 4 ).UnescapeJson();
- if( String.IsNullOrEmpty( token ) )
- {
- translated = null;
- return false;
- }
- if( !lineBuilder.EndsWithWhitespaceOrNewline() ) lineBuilder.Append( "\n" );
- lineBuilder.Append( token );
- translated = lineBuilder.ToString();
- return true;
- }
- else
- {
- translated = null;
- return false;
- }
- }
- catch( Exception )
- {
- translated = null;
- return false;
- }
- }
- public override string GetServiceUrl( string untranslatedText, string from, string to )
- {
- return string.Format( HttpsServicePointTemplateUrl, from, to, WWW.EscapeURL( untranslatedText ), Settings.YandexAPIKey );
- }
- }
- }
|