class Ggtranslate::ResultObject

Public Class Methods

new(http_response) click to toggle source
# File lib/ggtranslate/result_object.rb, line 5
def initialize(http_response)
  @http_response = http_response
  process_http_response
end

Public Instance Methods

as_json() click to toggle source
# File lib/ggtranslate/result_object.rb, line 38
def as_json
  {
    translated_text: translated_text,
    source_language: source_language,
    confidence: confidence,
    response_data: @response_data,
  }
end
confidence() click to toggle source
# File lib/ggtranslate/result_object.rb, line 30
def confidence
  @response_data.dig("confidence")
end
is_success?() click to toggle source
# File lib/ggtranslate/result_object.rb, line 34
def is_success?
  @http_response.code == 200
end
source_language() click to toggle source
# File lib/ggtranslate/result_object.rb, line 26
def source_language
  @response_data.dig("src")
end
to_json() click to toggle source
# File lib/ggtranslate/result_object.rb, line 47
def to_json
  as_json.to_json
end
translated_text() click to toggle source
# File lib/ggtranslate/result_object.rb, line 10
def translated_text
  result = nil
  if @response_data.is_a? Hash
    result = @response_data.dig("sentences", 0, "trans")
  elsif @response_data.is_a? Array
    result = @response_data.first
  end

  raise "EMPTY RESULT" unless result

  result = result.split("----------")
  result.count == 1 ? result.first : result
rescue => e
  raise Ggtranslate::ResponseParsingException.new("Fail to parse response body")
end

Private Instance Methods

process_http_response() click to toggle source
# File lib/ggtranslate/result_object.rb, line 53
def process_http_response
  unless is_success?
    error_message = "Fail to call api with http code #{@http_response.code}"
    raise Ggtranslate::ApiCallException.new(error_message)
  end

  @response_data = JSON.load(@http_response.body)
end