module Pry::SendTweet::ReadTweets::TranslateActions

Constants

LANGUAGE_STRINGS
YANDEX_ENDPOINT

Public Instance Methods

translate_text(text, source_language) click to toggle source
# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 39
def translate_text(text, source_language)
  uri_endpoint = __build_yandex_endpoint(text, source_language)
  res = Net::HTTP.get_response(uri_endpoint)
  case res
  when Net::HTTPOK
    _pry_.output.puts "#{__translation_map(res)}: \n" \
                      "#{__translated_text_from(res)}"
  else
    raise Pry::CommandError, "Bad response from Yandex (#{res.class})"
  end
end
translate_tweet(tweet_url, source_language) click to toggle source
# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 26
def translate_tweet(tweet_url, source_language)
  tweet = twitter.status(tweet_url)
  uri_endpoint = __build_yandex_endpoint(tweet, source_language)
  res = Net::HTTP.get_response(uri_endpoint)
  case res
  when Net::HTTPOK
    tweet.attrs[:full_text] = __translated_text_from(res)
    render_tweets [tweet], title: "#{__translation_map(res)}: "
  else
    raise Pry::CommandError, "Bad response from Yandex (#{res.class})"
  end
end

Private Instance Methods

__build_yandex_endpoint(tweet, source_language) click to toggle source

@api private

# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 68
def __build_yandex_endpoint(tweet, source_language)
  URI.parse format(YANDEX_ENDPOINT,
    lang: URI.encode_www_form_component(__yandex_lang_param(source_language)),
    key: URI.encode_www_form_component(__yandex_key),
    text: URI.encode_www_form_component(
      Twitter::Tweet === tweet ? __read_tweet_body(tweet) : tweet
    )
  )
end
__translated_text_from(res) click to toggle source

@api private

# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 63
def __translated_text_from(res)
  JSON.parse(res.body)["text"][0]
end
__translation_map(res) click to toggle source

@api private

# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 54
def __translation_map(res)
  b = JSON.parse(res.body)
  from, to = b['lang'].split('-')
  from = LANGUAGE_STRINGS[from] || from
  to = LANGUAGE_STRINGS[to] || to
  "#{from} => #{to}"
end
__yandex_key() click to toggle source

@api private

# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 86
def __yandex_key
  k = _pry_.config.twitter.yandex_key
  if !k || k.strip.empty?
    raise Pry::CommandError,
          "fatal: _pry_.config.twitter.yandex_key is nil, false or empty"
  end
  k
end
__yandex_lang_param(source_language) click to toggle source

@api private

# File lib/pry/send_tweet/commands/read_tweets/translate_actions.rb, line 79
def __yandex_lang_param(source_language)
  from = source_language ? "#{source_language}-" : ""
  to = _pry_.config.twitter.yandex_lang || "en"
  from + to
end