Sha256: ec84e9f16634a7e7d08696a057e5a423d1e7a78edb3f0576916230a59134e009

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

require 'crack/xml'
require 'rest-client'

module Embulk
  module Filter
    class AzureTranslatorApi < FilterPlugin
      class AzureTranslatorClient
        ENDPOINT_PREFIX = "https://api.microsofttranslator.com/v2/http.svc"
        AUTH_ENDPOINT_PREFIX = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken"

        def self.get_authorization_token(subscription_key)
          RestClient.post AUTH_ENDPOINT_PREFIX, "", {
            params: { 'Subscription-Key' => subscription_key }
          }
        end

        def initialize(params: , authorization_token: , api_type:)
          uri_string = "#{ENDPOINT_PREFIX}/#{api_type}"
          @resource = RestClient::Resource.new uri_string
          @params = params
          @authorization_token = authorization_token
        end

        def translate_text(text)
          translate(text)['string']
        end

        def translate(text)
          request(text)
        end

        def request(text)
          request_param = { text: text }.merge(@params)
          Embulk.logger.debug("request_param => #{request_param}")
          ::Crack::XML.parse(
            @resource.get(
              {
                Authorization: "Bearer #{@authorization_token}",
                params: request_param
              }
            )
          )
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
embulk-filter-azure_translator_api-0.1.0 lib/embulk/filter/azure_translator_api/azure_translator_client.rb