Sha256: c8cd6aaddffb49f283420fcaaae81efdd9f4035c0da6d41190d8cdcfd1869cac
Contents?: true
Size: 1.05 KB
Versions: 3
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true require 'net/http' require 'uri' require 'json' module LightTr class Translator def initialize(api_key) @api_key = api_key end def translate(query, target = 'en') extract_translation(request(query, target)) end private attr_reader :api_key def request(query, target) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true req = Net::HTTP::Post.new(uri.request_uri, headers) req.body = { q: query, target: target }.to_json http.request(req) end def extract_translation(response) translations = JSON.parse(response.body).dig('data', 'translations') || [{}] translations.first['translatedText'] end def uri @uri ||= URI.parse("https://translation.googleapis.com/language/translate/v2?key=#{api_key}&format=text") end def headers @headers ||= { 'Host': 'translation.googleapis.com', 'Content-Type': 'application/json; charset=utf-8', 'Accept': 'application/json' } end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
light_tr-2.0.1 | lib/light_tr/translator.rb |
light_tr-2.0.0 | lib/light_tr/translator.rb |
light_tr-1.0.0 | lib/light_tr/translator.rb |