diff --git a/lib/chinese_permalink.rb b/lib/chinese_permalink.rb index 6514032..8a7a409 100644 --- a/lib/chinese_permalink.rb +++ b/lib/chinese_permalink.rb @@ -83,24 +83,32 @@ def sanitize_format(text) end class Translate - class <(.*?)| - $1.to_s + uri = URI(translator_endpoint) + content = %Q( [{ "Text" : "#{text}" }] ) + request = set_request(uri, content) + response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') { |http| http.request(request) } + result = response.body.force_encoding("utf-8") + JSON.parse(result)[0]['translations'][0]['text'].to_s end - def translator_endpoint - "https://api.microsofttranslator.com/V2/Http.svc/Translate?appId=#{authorization_token}&to=en&text=" + def set_request(uri, content) + request = Net::HTTP::Post.new(uri) + request['Content-type'] = 'application/json' + request['Content-length'] = content.length + request['Ocp-Apim-Subscription-Key'] = access_token + request['X-ClientTraceId'] = SecureRandom.uuid + request.body = content + request end - def authorization_token - config = YAML.load(File.open(File.join(Rails.root, "config/chinese_permalink.yml"))) - access_token = config['microsoft']['key'] - access_token_endpoint = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken?Subscription-Key=#{access_token}" - response = Net::HTTP.post_form(URI(access_token_endpoint), {}) + def translator_endpoint + 'https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&to=en' + end - response.code == "200" ? "Bearer #{response.body}" : nil + def access_token + YAML.load(File.open(File.join(Rails.root, "config/chinese_permalink.yml")))['microsoft']['key'] end end end