web_translate_it 2.5.4 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/bin/wti +107 -107
 - data/generators/webtranslateit/lib/insert_commands.rb +6 -8
 - data/generators/webtranslateit/webtranslateit_generator.rb +6 -6
 - data/history.md +13 -7
 - data/lib/web_translate_it/auto_fetch.rb +2 -4
 - data/lib/web_translate_it/command_line.rb +244 -251
 - data/lib/web_translate_it/configuration.rb +32 -27
 - data/lib/web_translate_it/connection.rb +7 -8
 - data/lib/web_translate_it/project.rb +16 -20
 - data/lib/web_translate_it/string.rb +79 -78
 - data/lib/web_translate_it/term.rb +59 -59
 - data/lib/web_translate_it/term_translation.rb +32 -34
 - data/lib/web_translate_it/translation.rb +24 -31
 - data/lib/web_translate_it/translation_file.rb +105 -102
 - data/lib/web_translate_it/util/array_util.rb +8 -8
 - data/lib/web_translate_it/util/hash_util.rb +5 -5
 - data/lib/web_translate_it/util/string_util.rb +5 -8
 - data/lib/web_translate_it/util.rb +47 -50
 - data/lib/web_translate_it.rb +5 -7
 - data/readme.md +6 -2
 - data/spec/spec_helper.rb +2 -3
 - data/spec/web_translate_it/auto_fetch_spec.rb +1 -2
 - data/spec/web_translate_it/string_spec.rb +61 -62
 - data/spec/web_translate_it/term_spec.rb +40 -41
 - metadata +45 -10
 
| 
         @@ -1,11 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
1 
     | 
    
         
             
            module WebTranslateIt
         
     | 
| 
       3 
     | 
    
         
            -
              class Term
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Term # rubocop:todo Metrics/ClassLength
         
     | 
| 
       4 
3 
     | 
    
         
             
                require 'net/https'
         
     | 
| 
       5 
4 
     | 
    
         
             
                require 'multi_json'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       7 
6 
     | 
    
         
             
                attr_accessor :id, :text, :description, :created_at, :updated_at, :translations, :new_record
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       9 
8 
     | 
    
         
             
                # Initialize a new WebTranslateIt::Term
         
     | 
| 
       10 
9 
     | 
    
         
             
                #
         
     | 
| 
       11 
10 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -19,18 +18,18 @@ module WebTranslateIt 
     | 
|
| 
       19 
18 
     | 
    
         
             
                #   WebTranslateIt::Term.new({ "text" => "Hello", "translations" => [translation_es, translation_fr]})
         
     | 
| 
       20 
19 
     | 
    
         
             
                #
         
     | 
| 
       21 
20 
     | 
    
         
             
                # to instantiate a new Term with a Term Translations in Spanish and French.
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
       23 
22 
     | 
    
         
             
                def initialize(params = {})
         
     | 
| 
       24 
23 
     | 
    
         
             
                  params.stringify_keys!
         
     | 
| 
       25 
     | 
    
         
            -
                  self.id           = params[ 
     | 
| 
       26 
     | 
    
         
            -
                  self.text         = params[ 
     | 
| 
       27 
     | 
    
         
            -
                  self.description  = params[ 
     | 
| 
       28 
     | 
    
         
            -
                  self.created_at   = params[ 
     | 
| 
       29 
     | 
    
         
            -
                  self.updated_at   = params[ 
     | 
| 
       30 
     | 
    
         
            -
                  self.translations = params[ 
     | 
| 
      
 24 
     | 
    
         
            +
                  self.id           = params['id'] || nil
         
     | 
| 
      
 25 
     | 
    
         
            +
                  self.text         = params['text'] || nil
         
     | 
| 
      
 26 
     | 
    
         
            +
                  self.description  = params['description'] || nil
         
     | 
| 
      
 27 
     | 
    
         
            +
                  self.created_at   = params['created_at'] || nil
         
     | 
| 
      
 28 
     | 
    
         
            +
                  self.updated_at   = params['updated_at'] || nil
         
     | 
| 
      
 29 
     | 
    
         
            +
                  self.translations = params['translations'] || []
         
     | 
| 
       31 
30 
     | 
    
         
             
                  self.new_record   = true
         
     | 
| 
       32 
31 
     | 
    
         
             
                end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       34 
33 
     | 
    
         
             
                # Fetch all terms
         
     | 
| 
       35 
34 
     | 
    
         
             
                #
         
     | 
| 
       36 
35 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -40,27 +39,27 @@ module WebTranslateIt 
     | 
|
| 
       40 
39 
     | 
    
         
             
                #   end
         
     | 
| 
       41 
40 
     | 
    
         
             
                #
         
     | 
| 
       42 
41 
     | 
    
         
             
                #  puts terms.inspect #=> An array of WebTranslateIt::Term objects
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                def self.find_all(params = {})
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def self.find_all(params = {}) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
         
     | 
| 
       45 
44 
     | 
    
         
             
                  success = true
         
     | 
| 
       46 
45 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       47 
46 
     | 
    
         
             
                  params.stringify_keys!
         
     | 
| 
       48 
47 
     | 
    
         
             
                  url = "/api/projects/#{Connection.api_key}/terms.yaml"
         
     | 
| 
       49 
     | 
    
         
            -
                  url +=  
     | 
| 
      
 48 
     | 
    
         
            +
                  url += "?#{HashUtil.to_params(params)}" unless params.empty?
         
     | 
| 
       50 
49 
     | 
    
         | 
| 
       51 
50 
     | 
    
         
             
                  request = Net::HTTP::Get.new(url)
         
     | 
| 
       52 
51 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       53 
52 
     | 
    
         
             
                  begin
         
     | 
| 
       54 
53 
     | 
    
         
             
                    terms = []
         
     | 
| 
       55 
     | 
    
         
            -
                    while 
     | 
| 
      
 54 
     | 
    
         
            +
                    while request
         
     | 
| 
       56 
55 
     | 
    
         
             
                      response = Connection.http_connection.request(request)
         
     | 
| 
       57 
56 
     | 
    
         
             
                      YAML.load(response.body).each do |term_response|
         
     | 
| 
       58 
57 
     | 
    
         
             
                        term = WebTranslateIt::Term.new(term_response)
         
     | 
| 
       59 
58 
     | 
    
         
             
                        term.new_record = false
         
     | 
| 
       60 
59 
     | 
    
         
             
                        terms.push(term)
         
     | 
| 
       61 
60 
     | 
    
         
             
                      end
         
     | 
| 
       62 
     | 
    
         
            -
                      if response[ 
     | 
| 
       63 
     | 
    
         
            -
                        url = response[ 
     | 
| 
      
 61 
     | 
    
         
            +
                      if response['Link']&.include?('rel="next"')
         
     | 
| 
      
 62 
     | 
    
         
            +
                        url = response['Link'].match(/<(.*)>; rel="next"/)[1]
         
     | 
| 
       64 
63 
     | 
    
         
             
                        request = Net::HTTP::Get.new(url)
         
     | 
| 
       65 
64 
     | 
    
         
             
                        WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       66 
65 
     | 
    
         
             
                      else
         
     | 
| 
         @@ -69,7 +68,7 @@ module WebTranslateIt 
     | 
|
| 
       69 
68 
     | 
    
         
             
                    end
         
     | 
| 
       70 
69 
     | 
    
         
             
                    return terms
         
     | 
| 
       71 
70 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       72 
     | 
    
         
            -
                    puts  
     | 
| 
      
 71 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       73 
72 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       74 
73 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       75 
74 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -79,7 +78,7 @@ module WebTranslateIt 
     | 
|
| 
       79 
78 
     | 
    
         
             
                  end
         
     | 
| 
       80 
79 
     | 
    
         
             
                  success
         
     | 
| 
       81 
80 
     | 
    
         
             
                end
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
       83 
82 
     | 
    
         
             
                # Find a Term based on its ID
         
     | 
| 
       84 
83 
     | 
    
         
             
                # Returns a Term object or nil if not found.
         
     | 
| 
       85 
84 
     | 
    
         
             
                #
         
     | 
| 
         @@ -93,8 +92,8 @@ module WebTranslateIt 
     | 
|
| 
       93 
92 
     | 
    
         
             
                #
         
     | 
| 
       94 
93 
     | 
    
         
             
                # to find and instantiate the Term which ID is `1234`.
         
     | 
| 
       95 
94 
     | 
    
         
             
                #
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
                def self.find(term_id)
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
                def self.find(term_id) # rubocop:todo Metrics/MethodLength
         
     | 
| 
       98 
97 
     | 
    
         
             
                  success = true
         
     | 
| 
       99 
98 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       100 
99 
     | 
    
         
             
                  request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/terms/#{term_id}.yaml")
         
     | 
| 
         @@ -102,11 +101,12 @@ module WebTranslateIt 
     | 
|
| 
       102 
101 
     | 
    
         
             
                  begin
         
     | 
| 
       103 
102 
     | 
    
         
             
                    response = Connection.http_connection.request(request)
         
     | 
| 
       104 
103 
     | 
    
         
             
                    return nil if response.code.to_i == 404
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
       105 
105 
     | 
    
         
             
                    term = WebTranslateIt::Term.new(YAML.load(response.body))
         
     | 
| 
       106 
106 
     | 
    
         
             
                    term.new_record = false
         
     | 
| 
       107 
107 
     | 
    
         
             
                    return term
         
     | 
| 
       108 
108 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       109 
     | 
    
         
            -
                    puts  
     | 
| 
      
 109 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       110 
110 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       111 
111 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       112 
112 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -129,9 +129,9 @@ module WebTranslateIt 
     | 
|
| 
       129 
129 
     | 
    
         
             
                #
         
     | 
| 
       130 
130 
     | 
    
         | 
| 
       131 
131 
     | 
    
         
             
                def save
         
     | 
| 
       132 
     | 
    
         
            -
                   
     | 
| 
      
 132 
     | 
    
         
            +
                  new_record ? create : update
         
     | 
| 
       133 
133 
     | 
    
         
             
                end
         
     | 
| 
       134 
     | 
    
         
            -
             
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
       135 
135 
     | 
    
         
             
                # Delete a Term on WebTranslateIt.com
         
     | 
| 
       136 
136 
     | 
    
         
             
                #
         
     | 
| 
       137 
137 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -141,16 +141,16 @@ module WebTranslateIt 
     | 
|
| 
       141 
141 
     | 
    
         
             
                #     term.delete
         
     | 
| 
       142 
142 
     | 
    
         
             
                #   end
         
     | 
| 
       143 
143 
     | 
    
         
             
                #
         
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
                def delete
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                def delete # rubocop:todo Metrics/MethodLength
         
     | 
| 
       146 
146 
     | 
    
         
             
                  success = true
         
     | 
| 
       147 
147 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       148 
     | 
    
         
            -
                  request = Net::HTTP::Delete.new("/api/projects/#{Connection.api_key}/terms/#{ 
     | 
| 
      
 148 
     | 
    
         
            +
                  request = Net::HTTP::Delete.new("/api/projects/#{Connection.api_key}/terms/#{id}")
         
     | 
| 
       149 
149 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       150 
150 
     | 
    
         
             
                  begin
         
     | 
| 
       151 
151 
     | 
    
         
             
                    Util.handle_response(Connection.http_connection.request(request), true, true)
         
     | 
| 
       152 
152 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       153 
     | 
    
         
            -
                    puts  
     | 
| 
      
 153 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       154 
154 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       155 
155 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       156 
156 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -160,7 +160,7 @@ module WebTranslateIt 
     | 
|
| 
       160 
160 
     | 
    
         
             
                  end
         
     | 
| 
       161 
161 
     | 
    
         
             
                  success
         
     | 
| 
       162 
162 
     | 
    
         
             
                end
         
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
       164 
164 
     | 
    
         
             
                # Gets a Translation for a Term
         
     | 
| 
       165 
165 
     | 
    
         
             
                #
         
     | 
| 
       166 
166 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -170,28 +170,29 @@ module WebTranslateIt 
     | 
|
| 
       170 
170 
     | 
    
         
             
                #     puts term.translation_for("fr") #=> A TermTranslation object
         
     | 
| 
       171 
171 
     | 
    
         
             
                #   end
         
     | 
| 
       172 
172 
     | 
    
         
             
                #
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
       174 
     | 
    
         
            -
                def translation_for(locale)
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
                def translation_for(locale) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
         
     | 
| 
       175 
175 
     | 
    
         
             
                  success = true
         
     | 
| 
       176 
176 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       177 
     | 
    
         
            -
                  translation =  
     | 
| 
      
 177 
     | 
    
         
            +
                  translation = translations.detect { |t| t.locale == locale }
         
     | 
| 
       178 
178 
     | 
    
         
             
                  return translation if translation
         
     | 
| 
       179 
     | 
    
         
            -
                  return nil if  
     | 
| 
       180 
     | 
    
         
            -
             
     | 
| 
      
 179 
     | 
    
         
            +
                  return nil if new_record
         
     | 
| 
      
 180 
     | 
    
         
            +
             
     | 
| 
      
 181 
     | 
    
         
            +
                  request = Net::HTTP::Get.new("/api/projects/#{Connection.api_key}/terms/#{id}/locales/#{locale}/translations.yaml")
         
     | 
| 
       181 
182 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       182 
183 
     | 
    
         
             
                  begin
         
     | 
| 
       183 
184 
     | 
    
         
             
                    response = Util.handle_response(Connection.http_connection.request(request), true, true)
         
     | 
| 
       184 
185 
     | 
    
         
             
                    array = YAML.load(response)
         
     | 
| 
       185 
186 
     | 
    
         
             
                    return nil if array.empty?
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
       186 
188 
     | 
    
         
             
                    translations = []
         
     | 
| 
       187 
     | 
    
         
            -
                    array.each do | 
     | 
| 
       188 
     | 
    
         
            -
                      term_translation = WebTranslateIt::TermTranslation.new( 
     | 
| 
      
 189 
     | 
    
         
            +
                    array.each do |trans|
         
     | 
| 
      
 190 
     | 
    
         
            +
                      term_translation = WebTranslateIt::TermTranslation.new(trans)
         
     | 
| 
       189 
191 
     | 
    
         
             
                      translations.push(term_translation)
         
     | 
| 
       190 
192 
     | 
    
         
             
                    end
         
     | 
| 
       191 
193 
     | 
    
         
             
                    return translations
         
     | 
| 
       192 
     | 
    
         
            -
                    
         
     | 
| 
       193 
194 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       194 
     | 
    
         
            -
                    puts  
     | 
| 
      
 195 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       195 
196 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       196 
197 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       197 
198 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -204,22 +205,22 @@ module WebTranslateIt 
     | 
|
| 
       204 
205 
     | 
    
         | 
| 
       205 
206 
     | 
    
         
             
                protected
         
     | 
| 
       206 
207 
     | 
    
         | 
| 
       207 
     | 
    
         
            -
                def update
         
     | 
| 
      
 208 
     | 
    
         
            +
                def update # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
         
     | 
| 
       208 
209 
     | 
    
         
             
                  success = true
         
     | 
| 
       209 
210 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       210 
     | 
    
         
            -
                  request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/terms/#{ 
     | 
| 
      
 211 
     | 
    
         
            +
                  request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/terms/#{id}.yaml")
         
     | 
| 
       211 
212 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       212 
     | 
    
         
            -
                  request.body =  
     | 
| 
      
 213 
     | 
    
         
            +
                  request.body = to_json
         
     | 
| 
       213 
214 
     | 
    
         | 
| 
       214 
     | 
    
         
            -
                   
     | 
| 
       215 
     | 
    
         
            -
                    translation.term_id =  
     | 
| 
      
 215 
     | 
    
         
            +
                  translations.each do |translation|
         
     | 
| 
      
 216 
     | 
    
         
            +
                    translation.term_id = id
         
     | 
| 
       216 
217 
     | 
    
         
             
                    translation.save
         
     | 
| 
       217 
218 
     | 
    
         
             
                  end
         
     | 
| 
       218 
219 
     | 
    
         | 
| 
       219 
220 
     | 
    
         
             
                  begin
         
     | 
| 
       220 
221 
     | 
    
         
             
                    Util.handle_response(Connection.http_connection.request(request), true, true)
         
     | 
| 
       221 
222 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       222 
     | 
    
         
            -
                    puts  
     | 
| 
      
 223 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       223 
224 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       224 
225 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       225 
226 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -229,22 +230,21 @@ module WebTranslateIt 
     | 
|
| 
       229 
230 
     | 
    
         
             
                  end
         
     | 
| 
       230 
231 
     | 
    
         
             
                  success
         
     | 
| 
       231 
232 
     | 
    
         
             
                end
         
     | 
| 
       232 
     | 
    
         
            -
             
     | 
| 
       233 
     | 
    
         
            -
                def create
         
     | 
| 
      
 233 
     | 
    
         
            +
             
     | 
| 
      
 234 
     | 
    
         
            +
                def create # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
         
     | 
| 
       234 
235 
     | 
    
         
             
                  success = true
         
     | 
| 
       235 
236 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       236 
237 
     | 
    
         
             
                  request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/terms")
         
     | 
| 
       237 
238 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       238 
     | 
    
         
            -
                  request.body =  
     | 
| 
      
 239 
     | 
    
         
            +
                  request.body = to_json(true)
         
     | 
| 
       239 
240 
     | 
    
         | 
| 
       240 
241 
     | 
    
         
             
                  begin
         
     | 
| 
       241 
242 
     | 
    
         
             
                    response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true, true))
         
     | 
| 
       242 
     | 
    
         
            -
                    self.id = response[ 
     | 
| 
      
 243 
     | 
    
         
            +
                    self.id = response['id']
         
     | 
| 
       243 
244 
     | 
    
         
             
                    self.new_record = false
         
     | 
| 
       244 
245 
     | 
    
         
             
                    return true
         
     | 
| 
       245 
     | 
    
         
            -
                    
         
     | 
| 
       246 
246 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       247 
     | 
    
         
            -
                    puts  
     | 
| 
      
 247 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       248 
248 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       249 
249 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       250 
250 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -254,17 +254,17 @@ module WebTranslateIt 
     | 
|
| 
       254 
254 
     | 
    
         
             
                  end
         
     | 
| 
       255 
255 
     | 
    
         
             
                  success
         
     | 
| 
       256 
256 
     | 
    
         
             
                end
         
     | 
| 
       257 
     | 
    
         
            -
             
     | 
| 
       258 
     | 
    
         
            -
                def to_json(with_translations = false)
         
     | 
| 
      
 257 
     | 
    
         
            +
             
     | 
| 
      
 258 
     | 
    
         
            +
                def to_json(with_translations = false) # rubocop:todo Metrics/MethodLength
         
     | 
| 
       259 
259 
     | 
    
         
             
                  hash = {
         
     | 
| 
       260 
     | 
    
         
            -
                     
     | 
| 
       261 
     | 
    
         
            -
                     
     | 
| 
       262 
     | 
    
         
            -
                     
     | 
| 
      
 260 
     | 
    
         
            +
                    'id' => id,
         
     | 
| 
      
 261 
     | 
    
         
            +
                    'text' => text,
         
     | 
| 
      
 262 
     | 
    
         
            +
                    'description' => description
         
     | 
| 
       263 
263 
     | 
    
         
             
                  }
         
     | 
| 
       264 
     | 
    
         
            -
                  if  
     | 
| 
       265 
     | 
    
         
            -
                    hash.update({  
     | 
| 
      
 264 
     | 
    
         
            +
                  if translations.any? && with_translations
         
     | 
| 
      
 265 
     | 
    
         
            +
                    hash.update({ 'translations' => [] })
         
     | 
| 
       266 
266 
     | 
    
         
             
                    translations.each do |translation|
         
     | 
| 
       267 
     | 
    
         
            -
                      hash[ 
     | 
| 
      
 267 
     | 
    
         
            +
                      hash['translations'].push(translation.to_hash)
         
     | 
| 
       268 
268 
     | 
    
         
             
                    end
         
     | 
| 
       269 
269 
     | 
    
         
             
                  end
         
     | 
| 
       270 
270 
     | 
    
         
             
                  MultiJson.dump(hash)
         
     | 
| 
         @@ -1,11 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
1 
     | 
    
         
             
            module WebTranslateIt
         
     | 
| 
       3 
2 
     | 
    
         
             
              class TermTranslation
         
     | 
| 
       4 
3 
     | 
    
         
             
                require 'net/https'
         
     | 
| 
       5 
4 
     | 
    
         
             
                require 'multi_json'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       7 
6 
     | 
    
         
             
                attr_accessor :id, :locale, :text, :description, :status, :new_record, :term_id
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       9 
8 
     | 
    
         
             
                # Initialize a new WebTranslateIt::TermTranslation
         
     | 
| 
       10 
9 
     | 
    
         
             
                #
         
     | 
| 
       11 
10 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -14,18 +13,18 @@ module WebTranslateIt 
     | 
|
| 
       14 
13 
     | 
    
         
             
                #
         
     | 
| 
       15 
14 
     | 
    
         
             
                # to instantiate a new TermTranslation.
         
     | 
| 
       16 
15 
     | 
    
         
             
                #
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
       18 
17 
     | 
    
         
             
                def initialize(params = {})
         
     | 
| 
       19 
18 
     | 
    
         
             
                  params.stringify_keys!
         
     | 
| 
       20 
     | 
    
         
            -
                  self.id          = params[ 
     | 
| 
       21 
     | 
    
         
            -
                  self.locale      = params[ 
     | 
| 
       22 
     | 
    
         
            -
                  self.text        = params[ 
     | 
| 
       23 
     | 
    
         
            -
                  self.description = params[ 
     | 
| 
       24 
     | 
    
         
            -
                  self.status      = params[ 
     | 
| 
       25 
     | 
    
         
            -
                  self.term_id     = params[ 
     | 
| 
      
 19 
     | 
    
         
            +
                  self.id          = params['id'] || nil
         
     | 
| 
      
 20 
     | 
    
         
            +
                  self.locale      = params['locale'] || nil
         
     | 
| 
      
 21 
     | 
    
         
            +
                  self.text        = params['text'] || nil
         
     | 
| 
      
 22 
     | 
    
         
            +
                  self.description = params['description'] || nil
         
     | 
| 
      
 23 
     | 
    
         
            +
                  self.status      = params['status'] || nil
         
     | 
| 
      
 24 
     | 
    
         
            +
                  self.term_id     = params['term_id'] || nil
         
     | 
| 
       26 
25 
     | 
    
         
             
                  self.new_record  = true
         
     | 
| 
       27 
26 
     | 
    
         
             
                end
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
       29 
28 
     | 
    
         
             
                # Update or Create a WebTranslateIt::TermTranslation
         
     | 
| 
       30 
29 
     | 
    
         
             
                #
         
     | 
| 
       31 
30 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -35,42 +34,41 @@ module WebTranslateIt 
     | 
|
| 
       35 
34 
     | 
    
         
             
                #     translation.save
         
     | 
| 
       36 
35 
     | 
    
         
             
                #   end
         
     | 
| 
       37 
36 
     | 
    
         
             
                #
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       39 
38 
     | 
    
         
             
                def save
         
     | 
| 
       40 
     | 
    
         
            -
                   
     | 
| 
      
 39 
     | 
    
         
            +
                  new_record ? create : update
         
     | 
| 
       41 
40 
     | 
    
         
             
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       43 
42 
     | 
    
         
             
                def to_hash
         
     | 
| 
       44 
43 
     | 
    
         
             
                  {
         
     | 
| 
       45 
     | 
    
         
            -
                     
     | 
| 
       46 
     | 
    
         
            -
                     
     | 
| 
       47 
     | 
    
         
            -
                     
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
       49 
     | 
    
         
            -
                     
     | 
| 
      
 44 
     | 
    
         
            +
                    'id' => id,
         
     | 
| 
      
 45 
     | 
    
         
            +
                    'locale' => locale,
         
     | 
| 
      
 46 
     | 
    
         
            +
                    'text' => text,
         
     | 
| 
      
 47 
     | 
    
         
            +
                    'description' => description,
         
     | 
| 
      
 48 
     | 
    
         
            +
                    'status' => status
         
     | 
| 
       50 
49 
     | 
    
         
             
                  }
         
     | 
| 
       51 
50 
     | 
    
         
             
                end
         
     | 
| 
       52 
51 
     | 
    
         | 
| 
       53 
     | 
    
         
            -
                def to_json
         
     | 
| 
       54 
     | 
    
         
            -
                  MultiJson.dump( 
     | 
| 
      
 52 
     | 
    
         
            +
                def to_json(*_args)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  MultiJson.dump(to_hash)
         
     | 
| 
       55 
54 
     | 
    
         
             
                end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
       57 
56 
     | 
    
         
             
                protected
         
     | 
| 
       58 
     | 
    
         
            -
             
     | 
| 
       59 
     | 
    
         
            -
                def create
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                def create # rubocop:todo Metrics/AbcSize, Metrics/MethodLength
         
     | 
| 
       60 
59 
     | 
    
         
             
                  success = true
         
     | 
| 
       61 
60 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       62 
     | 
    
         
            -
                  request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/terms/#{ 
     | 
| 
      
 61 
     | 
    
         
            +
                  request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/terms/#{term_id}/locales/#{locale}/translations")
         
     | 
| 
       63 
62 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       64 
     | 
    
         
            -
                  request.body =  
     | 
| 
      
 63 
     | 
    
         
            +
                  request.body = to_json
         
     | 
| 
       65 
64 
     | 
    
         | 
| 
       66 
65 
     | 
    
         
             
                  begin
         
     | 
| 
       67 
66 
     | 
    
         
             
                    response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true, true))
         
     | 
| 
       68 
     | 
    
         
            -
                    self.id = response[ 
     | 
| 
      
 67 
     | 
    
         
            +
                    self.id = response['id']
         
     | 
| 
       69 
68 
     | 
    
         
             
                    self.new_record = false
         
     | 
| 
       70 
69 
     | 
    
         
             
                    return true
         
     | 
| 
       71 
     | 
    
         
            -
                    
         
     | 
| 
       72 
70 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       73 
     | 
    
         
            -
                    puts  
     | 
| 
      
 71 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       74 
72 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       75 
73 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       76 
74 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -81,16 +79,16 @@ module WebTranslateIt 
     | 
|
| 
       81 
79 
     | 
    
         
             
                  success
         
     | 
| 
       82 
80 
     | 
    
         
             
                end
         
     | 
| 
       83 
81 
     | 
    
         | 
| 
       84 
     | 
    
         
            -
                def update
         
     | 
| 
      
 82 
     | 
    
         
            +
                def update # rubocop:todo Metrics/MethodLength
         
     | 
| 
       85 
83 
     | 
    
         
             
                  success = true
         
     | 
| 
       86 
84 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       87 
     | 
    
         
            -
                  request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/terms/#{ 
     | 
| 
      
 85 
     | 
    
         
            +
                  request = Net::HTTP::Put.new("/api/projects/#{Connection.api_key}/terms/#{id}/locales/#{locale}/translations/#{id}")
         
     | 
| 
       88 
86 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       89 
     | 
    
         
            -
                  request.body =  
     | 
| 
      
 87 
     | 
    
         
            +
                  request.body = to_json
         
     | 
| 
       90 
88 
     | 
    
         
             
                  begin
         
     | 
| 
       91 
     | 
    
         
            -
                    Util.handle_response(Connection.http_connection.request(request), true, true) 
     | 
| 
      
 89 
     | 
    
         
            +
                    Util.handle_response(Connection.http_connection.request(request), true, true)
         
     | 
| 
       92 
90 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       93 
     | 
    
         
            -
                    puts  
     | 
| 
      
 91 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       94 
92 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       95 
93 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       96 
94 
     | 
    
         
             
                      retry
         
     | 
| 
         @@ -1,11 +1,10 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # encoding: utf-8
         
     | 
| 
       2 
1 
     | 
    
         
             
            module WebTranslateIt
         
     | 
| 
       3 
2 
     | 
    
         
             
              class Translation
         
     | 
| 
       4 
3 
     | 
    
         
             
                require 'net/https'
         
     | 
| 
       5 
4 
     | 
    
         
             
                require 'multi_json'
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
       7 
6 
     | 
    
         
             
                attr_accessor :id, :locale, :text, :status, :created_at, :updated_at, :version, :string_id
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
       9 
8 
     | 
    
         
             
                # Initialize a new WebTranslateIt::Translation
         
     | 
| 
       10 
9 
     | 
    
         
             
                #
         
     | 
| 
       11 
10 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -14,23 +13,19 @@ module WebTranslateIt 
     | 
|
| 
       14 
13 
     | 
    
         
             
                #
         
     | 
| 
       15 
14 
     | 
    
         
             
                # to instantiate a new Translation without any text.
         
     | 
| 
       16 
15 
     | 
    
         
             
                #
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                def initialize(params = {})
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                def initialize(params = {}) # rubocop:todo Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
         
     | 
| 
       19 
18 
     | 
    
         
             
                  params.stringify_keys!
         
     | 
| 
       20 
     | 
    
         
            -
                  self.id         = params[ 
     | 
| 
       21 
     | 
    
         
            -
                  self.locale     = params[ 
     | 
| 
       22 
     | 
    
         
            -
                  self.text       = params[ 
     | 
| 
       23 
     | 
    
         
            -
                  self.status     = params[ 
     | 
| 
       24 
     | 
    
         
            -
                  self.created_at = params[ 
     | 
| 
       25 
     | 
    
         
            -
                  self.updated_at = params[ 
     | 
| 
       26 
     | 
    
         
            -
                  self.version    = params[ 
     | 
| 
       27 
     | 
    
         
            -
                  if params[ 
     | 
| 
       28 
     | 
    
         
            -
                    self.string_id  = params["string"]["id"]
         
     | 
| 
       29 
     | 
    
         
            -
                  else
         
     | 
| 
       30 
     | 
    
         
            -
                    self.string_id = nil
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                  self.id         = params['id'] || nil
         
     | 
| 
      
 20 
     | 
    
         
            +
                  self.locale     = params['locale'] || nil
         
     | 
| 
      
 21 
     | 
    
         
            +
                  self.text       = params['text'] || nil
         
     | 
| 
      
 22 
     | 
    
         
            +
                  self.status     = params['status'] || 'status_unproofread'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  self.created_at = params['created_at'] || nil
         
     | 
| 
      
 24 
     | 
    
         
            +
                  self.updated_at = params['updated_at'] || nil
         
     | 
| 
      
 25 
     | 
    
         
            +
                  self.version    = params['version'] || nil
         
     | 
| 
      
 26 
     | 
    
         
            +
                  self.string_id = (params['string']['id'] if params['string'])
         
     | 
| 
       32 
27 
     | 
    
         
             
                end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
       34 
29 
     | 
    
         
             
                # Save a WebTranslateIt::Translation
         
     | 
| 
       35 
30 
     | 
    
         
             
                #
         
     | 
| 
       36 
31 
     | 
    
         
             
                # Implementation Example:
         
     | 
| 
         @@ -40,35 +35,33 @@ module WebTranslateIt 
     | 
|
| 
       40 
35 
     | 
    
         
             
                #     translation.save
         
     | 
| 
       41 
36 
     | 
    
         
             
                #   end
         
     | 
| 
       42 
37 
     | 
    
         
             
                #
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
                def save
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                def save # rubocop:todo Metrics/MethodLength
         
     | 
| 
       45 
40 
     | 
    
         
             
                  tries ||= 3
         
     | 
| 
       46 
     | 
    
         
            -
                  request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/strings/#{ 
     | 
| 
      
 41 
     | 
    
         
            +
                  request = Net::HTTP::Post.new("/api/projects/#{Connection.api_key}/strings/#{string_id}/locales/#{locale}/translations")
         
     | 
| 
       47 
42 
     | 
    
         
             
                  WebTranslateIt::Util.add_fields(request)
         
     | 
| 
       48 
     | 
    
         
            -
                  request.body =  
     | 
| 
      
 43 
     | 
    
         
            +
                  request.body = to_json
         
     | 
| 
       49 
44 
     | 
    
         
             
                  begin
         
     | 
| 
       50 
45 
     | 
    
         
             
                    Util.handle_response(Connection.http_connection.request(request), true, true)
         
     | 
| 
       51 
46 
     | 
    
         
             
                  rescue Timeout::Error
         
     | 
| 
       52 
     | 
    
         
            -
                    puts  
     | 
| 
      
 47 
     | 
    
         
            +
                    puts 'Request timeout. Will retry in 5 seconds.'
         
     | 
| 
       53 
48 
     | 
    
         
             
                    if (tries -= 1) > 0
         
     | 
| 
       54 
49 
     | 
    
         
             
                      sleep(5)
         
     | 
| 
       55 
50 
     | 
    
         
             
                      retry
         
     | 
| 
       56 
     | 
    
         
            -
                    else
         
     | 
| 
       57 
     | 
    
         
            -
                      success = false
         
     | 
| 
       58 
51 
     | 
    
         
             
                    end
         
     | 
| 
       59 
52 
     | 
    
         
             
                  end
         
     | 
| 
       60 
53 
     | 
    
         
             
                end
         
     | 
| 
       61 
     | 
    
         
            -
             
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
       62 
55 
     | 
    
         
             
                def to_hash
         
     | 
| 
       63 
56 
     | 
    
         
             
                  {
         
     | 
| 
       64 
     | 
    
         
            -
                     
     | 
| 
       65 
     | 
    
         
            -
                     
     | 
| 
       66 
     | 
    
         
            -
                     
     | 
| 
      
 57 
     | 
    
         
            +
                    'locale' => locale,
         
     | 
| 
      
 58 
     | 
    
         
            +
                    'text' => text,
         
     | 
| 
      
 59 
     | 
    
         
            +
                    'status' => status
         
     | 
| 
       67 
60 
     | 
    
         
             
                  }
         
     | 
| 
       68 
61 
     | 
    
         
             
                end
         
     | 
| 
       69 
62 
     | 
    
         | 
| 
       70 
     | 
    
         
            -
                def to_json
         
     | 
| 
       71 
     | 
    
         
            -
                  MultiJson.dump( 
     | 
| 
      
 63 
     | 
    
         
            +
                def to_json(*_args)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  MultiJson.dump(to_hash)
         
     | 
| 
       72 
65 
     | 
    
         
             
                end
         
     | 
| 
       73 
66 
     | 
    
         
             
              end
         
     | 
| 
       74 
67 
     | 
    
         
             
            end
         
     |