Class: WebTranslateIt::Term

Inherits:
Object
  • Object
show all
Defined in:
lib/web_translate_it/term.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Term

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.


23
24
25
26
27
28
29
30
31
32
# 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

Instance Attribute Details

#created_atObject

Returns the value of attribute created_at


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def created_at
  @created_at
end

#descriptionObject

Returns the value of attribute description


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def description
  @description
end

#idObject

Returns the value of attribute id


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def id
  @id
end

#new_recordObject

Returns the value of attribute new_record


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def new_record
  @new_record
end

#textObject

Returns the value of attribute text


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def text
  @text
end

#translationsObject

Returns the value of attribute translations


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def translations
  @translations
end

#updated_atObject

Returns the value of attribute updated_at


7
8
9
# File 'lib/web_translate_it/term.rb', line 7

def updated_at
  @updated_at
end

Class Method Details

.find(term_id) ⇒ Object

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`.


93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/web_translate_it/term.rb', line 93

def self.find(term_id)
  request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/terms/#{term_id}.yaml")
  request.add_field("X-Client-Name", "web_translate_it")
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)

  begin
    response = Connection.http_connection.request(request)
    return nil if response.code.to_i == 404
    term = WebTranslateIt::Term.new(YAML.load(response.body))
    term.new_record = false
    return term
  rescue Timeout::Error
    puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
    sleep(5)
    retry
  end
end

.find_all(params = {}) ⇒ Object

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

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/web_translate_it/term.rb', line 44

def self.find_all(params = {})
  params.stringify_keys!
  url = "/api/projects/#{Connection.api_key}/terms.yaml"
  url += '?' + HashUtil.to_params(params) unless params.empty?

  request = Net::HTTP::Get.new(url)
  request.add_field("X-Client-Name", "web_translate_it")
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)

  begin
    terms = []
    while(request) do
      response = Connection.http_connection.request(request)
      YAML.load(response.body).each do |term_response|
        term = WebTranslateIt::Term.new(term_response)
        term.new_record = false
        terms.push(term)
      end
      if response["Link"] && response["Link"].include?("rel=\"next\"")
        url = response["Link"].match(/<(.*)>; rel="next"/)[1]
        request = Net::HTTP::Get.new(url)
        request.add_field("X-Client-Name", "web_translate_it")
        request.add_field("X-Client-Version", WebTranslateIt::Util.version)
      else
        request = nil
      end
    end
    return terms
  rescue Timeout::Error
    puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
    sleep(5)
    retry
  end
end

Instance Method Details

#deleteObject

Delete a Term on WebTranslateIt.com

Implementation Example:

WebTranslateIt::Connection.new('secret_api_token') do
  term = WebTranslateIt::Term.find(1234)
  term.delete
end

136
137
138
139
140
141
142
143
144
145
146
147
148
# File 'lib/web_translate_it/term.rb', line 136

def delete
  request = Net::HTTP::Delete.new("/api/projects/#{Connection.api_key}/terms/#{self.id}")
  request.add_field("X-Client-Name", "web_translate_it")
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)

  begin
    Util.handle_response(Connection.http_connection.request(request), true, true)
  rescue Timeout::Error
    puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
    sleep(5)
    retry
  end
end

#saveObject

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

122
123
124
# File 'lib/web_translate_it/term.rb', line 122

def save
  self.new_record ? self.create : self.update
end

#translation_for(locale) ⇒ Object

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

160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
# File 'lib/web_translate_it/term.rb', line 160

def translation_for(locale)
  translation = self.translations.detect{ |t| t.locale == locale }
  return translation if translation
  return nil if self.new_record
  request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/terms/#{self.id}/locales/#{locale}/translations.yaml")
  request.add_field("X-Client-Name", "web_translate_it")
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)

  begin
    response = Util.handle_response(Connection.http_connection.request(request), true, true)
    array = YAML.load(response)
    return nil if array.empty?
    translations = []
    array.each do |translation|
      term_translation = WebTranslateIt::TermTranslation.new(translation)
      translations.push(term_translation)
    end
    return translations
    
  rescue Timeout::Error
    puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
    sleep(5)
    retry
  end
end