CustomTranslateEndpoint.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Net;
  4. using XUnity.AutoTranslator.Plugin.Core.Configuration;
  5. using XUnity.AutoTranslator.Plugin.Core.Constants;
  6. using XUnity.AutoTranslator.Plugin.Core.Endpoints;
  7. using XUnity.AutoTranslator.Plugin.Core.Endpoints.Http;
  8. using XUnity.AutoTranslator.Plugin.Core.Extensions;
  9. using XUnity.AutoTranslator.Plugin.Core.Web;
  10. namespace CustomTranslate
  11. {
  12. internal class CustomTranslateEndpoint : HttpEndpoint
  13. {
  14. private static readonly string ServicePointTemplateUrl = "{0}?from={1}&to={2}&text={3}";
  15. private string _endpoint;
  16. private string _friendlyName;
  17. public CustomTranslateEndpoint()
  18. {
  19. _friendlyName = "Custom";
  20. }
  21. public override string Id => "CustomTranslate";
  22. public override string FriendlyName => _friendlyName;
  23. public override void Initialize( IInitializationContext context )
  24. {
  25. _endpoint = context.GetOrCreateSetting( "Custom", "Url", "" );
  26. if( string.IsNullOrEmpty( _endpoint ) ) throw new ArgumentException( "The custom endpoint requires a url which has not been provided." );
  27. var uri = new Uri( _endpoint );
  28. context.DisableCertificateChecksFor( uri.Host );
  29. _friendlyName += " (" + uri.Host + ")";
  30. }
  31. public override void OnCreateRequest( IHttpRequestCreationContext context )
  32. {
  33. var request = new XUnityWebRequest(
  34. string.Format(
  35. ServicePointTemplateUrl,
  36. _endpoint,
  37. context.SourceLanguage,
  38. context.DestinationLanguage,
  39. Uri.EscapeDataString( context.UntranslatedText ) ) );
  40. context.Complete( request );
  41. }
  42. public override void OnExtractTranslation( IHttpTranslationExtractionContext context )
  43. {
  44. context.Complete( context.Response.Data );
  45. }
  46. }
  47. }