class WebTranslateIt::Term
Attributes
created_at[RW]
description[RW]
id[RW]
new_record[RW]
text[RW]
translations[RW]
updated_at[RW]
Public Class Methods
find(term_id)
click to toggle source
Find a Term
based on its ID Returns a Term
object or nil if not found.
Implementation Example:
WebTranslateIt::Connection.new('secret_api_token') do term = WebTranslateIt::Term.find(1234) end puts term.inspect #=> A Term object
to find and instantiate the Term
which ID is ‘1234`.
# File lib/web_translate_it/term.rb, line 97 def self.find(term_id) # rubocop:todo Metrics/MethodLength, Metrics/AbcSize success = true tries ||= 3 request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/terms/#{term_id}") WebTranslateIt::Util.add_fields(request) begin response = Connection.http_connection.request(request) return nil if response.code.to_i == 404 term = WebTranslateIt::Term.new(JSON.parse(response.body)) term.new_record = false return term rescue Timeout::Error puts 'Request timeout. Will retry in 5 seconds.' if (tries -= 1).positive? sleep(5) retry else success = false end end success end
find_all(params = {})
click to toggle source
Fetch all terms
Implementation Example:
WebTranslateIt::Connection.new('secret_api_token') do terms = WebTranslateIt::Term.find_all end puts terms.inspect #=> An array of WebTranslateIt::Term objects
# File lib/web_translate_it/term.rb, line 44 def self.find_all(params = {}) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity success = true tries ||= 3 params.stringify_keys! url = "/api/projects/#{Connection.api_key}/terms" url += "?#{HashUtil.to_params(params)}" unless params.empty? request = Net::HTTP::Get.new(url) WebTranslateIt::Util.add_fields(request) begin terms = [] while request response = Connection.http_connection.request(request) JSON.parse(response.body).each do |term_response| term = WebTranslateIt::Term.new(term_response) term.new_record = false terms.push(term) end if response['Link']&.include?('rel="next"') url = response['Link'].match(/<(.*)>; rel="next"/)[1] request = Net::HTTP::Get.new(url) WebTranslateIt::Util.add_fields(request) else request = nil end end return terms rescue Timeout::Error puts 'Request timeout. Will retry in 5 seconds.' if (tries -= 1).positive? sleep(5) retry else success = false end end success end
new(params = {})
click to toggle source
Initialize a new WebTranslateIt::Term
Implementation Example:
WebTranslateIt::Term.new({ :text => "Term Name" })
to instantiate a new Term
.
translation_es = WebTranslateIt::TermTranslation.new({ :locale => "es", :text => "Hola" }) translation_fr = WebTranslateIt::TermTranslation.new({ :locale => "fr", :text => "Bonjour" }) WebTranslateIt::Term.new({ "text" => "Hello", "translations" => [translation_es, translation_fr]})
to instantiate a new Term
with a Term
Translations in Spanish and French.
# File lib/web_translate_it/term.rb, line 23 def initialize(params = {}) params.stringify_keys! self.id = params['id'] || nil self.text = params['text'] || nil self.description = params['description'] || nil self.created_at = params['created_at'] || nil self.updated_at = params['updated_at'] || nil self.translations = params['translations'] || [] self.new_record = true end
Public Instance Methods
delete()
click to toggle source
Delete a Term
on WebTranslateIt.com
Implementation Example:
WebTranslateIt::Connection.new('secret_api_token') do term = WebTranslateIt::Term.find(1234) term.delete end
# File lib/web_translate_it/term.rb, line 146 def delete # rubocop:todo Metrics/MethodLength success = true tries ||= 3 request = Net::HTTP::Delete.new("/api/projects/#{Connection.api_key}/terms/#{id}") WebTranslateIt::Util.add_fields(request) begin Util.handle_response(Connection.http_connection.request(request), true, true) rescue Timeout::Error puts 'Request timeout. Will retry in 5 seconds.' if (tries -= 1).positive? sleep(5) retry else success = false end end success end
save()
click to toggle source
Update or create a Term
to WebTranslateIt.com
Implementation Example:
WebTranslateIt::Connection.new('secret_api_token') do term = WebTranslateIt::Term.find(1234) term.text = "Hello" term.save end
# File lib/web_translate_it/term.rb, line 132 def save new_record ? create : update end
translation_for(locale)
click to toggle source
Gets a Translation
for a Term
Implementation Example:
WebTranslateIt::Connection.new('secret_api_token') do term = WebTranslateIt::Term.find(1234) puts term.translation_for("fr") #=> A TermTranslation object end
# File lib/web_translate_it/term.rb, line 175 def translation_for(locale) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity success = true tries ||= 3 translation = translations.detect { |t| t.locale == locale } return translation if translation return nil if new_record request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/terms/#{id}/locales/#{locale}/translations") WebTranslateIt::Util.add_fields(request) begin response = Util.handle_response(Connection.http_connection.request(request), true, true) array = JSON.parse(response) return nil if array.empty? translations = [] array.each do |trans| term_translation = WebTranslateIt::TermTranslation.new(trans) translations.push(term_translation) end return translations rescue Timeout::Error puts 'Request timeout. Will retry in 5 seconds.' if (tries -= 1).positive? sleep(5) retry else success = false end end success end
Protected Instance Methods
create()
click to toggle source
# File lib/web_translate_it/term.rb, line 235 def create # rubocop:todo Metrics/AbcSize, Metrics/MethodLength success = true tries ||= 3 request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/terms") WebTranslateIt::Util.add_fields(request) request.body = to_json(true) begin response = JSON.parse(Util.handle_response(Connection.http_connection.request(request), true, true)) self.id = response['id'] self.new_record = false return true rescue Timeout::Error puts 'Request timeout. Will retry in 5 seconds.' if (tries -= 1).positive? sleep(5) retry else success = false end end success end
to_json(with_translations = false)
click to toggle source
# File lib/web_translate_it/term.rb, line 259 def to_json(with_translations = false) hash = { 'id' => id, 'text' => text, 'description' => description } if translations.any? && with_translations hash.update({'translations' => []}) translations.each do |translation| hash['translations'].push(translation.to_hash) end end MultiJson.dump(hash) end
update()
click to toggle source
# File lib/web_translate_it/term.rb, line 209 def update # rubocop:todo Metrics/AbcSize, Metrics/MethodLength success = true tries ||= 3 request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/terms/#{id}") WebTranslateIt::Util.add_fields(request) request.body = to_json translations.each do |translation| translation.term_id = id translation.save end begin Util.handle_response(Connection.http_connection.request(request), true, true) rescue Timeout::Error puts 'Request timeout. Will retry in 5 seconds.' if (tries -= 1).positive? sleep(5) retry else success = false end end success end