web_translate_it 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/history.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## Version 2.0.2 / 2012-06-06
2
+
3
+ * String, Translation, Term and TermTranslation classes now raise exceptions and display useful error messages. #87
4
+ * Implemented pagination for `String#find_all` and `Term#find_all`. This should work seemlessly with no API change.
5
+
1
6
  ## Version 2.0.1 / 2012-05-11
2
7
 
3
8
  * Fix: Issue with saving labels on a string.
@@ -49,8 +49,6 @@ module WebTranslateIt
49
49
  # puts strings.inspect #=> An array of WebTranslateIt::String objects
50
50
  #
51
51
  # to find and instantiate an array of String which key is like `product_name_123`.
52
- #
53
- # TODO: Implement pagination
54
52
 
55
53
  def self.find_all(params = {})
56
54
  params.stringify_keys!
@@ -62,12 +60,22 @@ module WebTranslateIt
62
60
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
63
61
 
64
62
  begin
65
- response = Util.handle_response(Connection.http_connection.request(request), true)
66
63
  strings = []
67
- YAML.load(response).each do |string_response|
68
- string = WebTranslateIt::String.new(string_response)
69
- string.new_record = false
70
- strings.push(string)
64
+ while(request) do
65
+ response = Connection.http_connection.request(request)
66
+ YAML.load(response.body).each do |string_response|
67
+ string = WebTranslateIt::String.new(string_response)
68
+ string.new_record = false
69
+ strings.push(string)
70
+ end
71
+ if response["Link"] && response["Link"].include?("rel=\"next\"")
72
+ url = response["Link"].match(/<(.*)>; rel="next"/)[1]
73
+ request = Net::HTTP::Get.new(url)
74
+ request.add_field("X-Client-Name", "web_translate_it")
75
+ request.add_field("X-Client-Version", WebTranslateIt::Util.version)
76
+ else
77
+ request = nil
78
+ end
71
79
  end
72
80
  return strings
73
81
  rescue Timeout::Error
@@ -96,9 +104,8 @@ module WebTranslateIt
96
104
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
97
105
 
98
106
  begin
99
- response = Connection.http_connection.request(request)
100
- return nil if response.code.to_i == 404
101
- string = WebTranslateIt::String.new(YAML.load(response.body))
107
+ response = Util.handle_response(Connection.http_connection.request(request), true, true)
108
+ string = WebTranslateIt::String.new(YAML.load(response))
102
109
  string.new_record = false
103
110
  return string
104
111
  rescue Timeout::Error
@@ -139,7 +146,7 @@ module WebTranslateIt
139
146
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
140
147
 
141
148
  begin
142
- Util.handle_response(Connection.http_connection.request(request), true)
149
+ Util.handle_response(Connection.http_connection.request(request), true, true)
143
150
  rescue Timeout::Error
144
151
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
145
152
  sleep(5)
@@ -164,7 +171,7 @@ module WebTranslateIt
164
171
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
165
172
 
166
173
  begin
167
- response = Util.handle_response(Connection.http_connection.request(request), true)
174
+ response = Util.handle_response(Connection.http_connection.request(request), true, true)
168
175
  hash = YAML.load(response)
169
176
  return nil if hash.empty?
170
177
  translation = WebTranslateIt::Translation.new(hash)
@@ -195,7 +202,7 @@ module WebTranslateIt
195
202
  end
196
203
 
197
204
  begin
198
- Util.handle_response(Connection.http_connection.request(request), true)
205
+ Util.handle_response(Connection.http_connection.request(request), true, true)
199
206
  rescue Timeout::Error
200
207
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
201
208
  sleep(5)
@@ -214,7 +221,7 @@ module WebTranslateIt
214
221
  request.body = self.to_json(true)
215
222
 
216
223
  begin
217
- response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true))
224
+ response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true, true))
218
225
  self.id = response["id"]
219
226
  self.new_record = false
220
227
  return true
@@ -40,8 +40,6 @@ module WebTranslateIt
40
40
  # end
41
41
  #
42
42
  # puts terms.inspect #=> An array of WebTranslateIt::Term objects
43
- #
44
- # TODO: Implement pagination
45
43
 
46
44
  def self.find_all(params = {})
47
45
  params.stringify_keys!
@@ -53,15 +51,24 @@ module WebTranslateIt
53
51
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
54
52
 
55
53
  begin
56
- response = Util.handle_response(Connection.http_connection.request(request), true)
57
54
  terms = []
58
- YAML.load(response).each do |term_response|
59
- term = WebTranslateIt::Term.new(term_response)
60
- term.new_record = false
61
- terms.push(term)
55
+ while(request) do
56
+ response = Connection.http_connection.request(request)
57
+ YAML.load(response).each do |term_response|
58
+ term = WebTranslateIt::Term.new(term_response)
59
+ term.new_record = false
60
+ terms.push(term)
61
+ end
62
+ if response["Link"] && response["Link"].include?("rel=\"next\"")
63
+ url = response["Link"].match(/<(.*)>; rel="next"/)[1]
64
+ request = Net::HTTP::Get.new(url)
65
+ request.add_field("X-Client-Name", "web_translate_it")
66
+ request.add_field("X-Client-Version", WebTranslateIt::Util.version)
67
+ else
68
+ request = nil
69
+ end
62
70
  end
63
71
  return terms
64
-
65
72
  rescue Timeout::Error
66
73
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
67
74
  sleep(5)
@@ -88,8 +95,7 @@ module WebTranslateIt
88
95
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
89
96
 
90
97
  begin
91
- response = Connection.http_connection.request(request)
92
- return nil if response.code.to_i == 404
98
+ response = Util.handle_response(Connection.http_connection.request(request), true, true)
93
99
  term = WebTranslateIt::Term.new(YAML.load(response.body))
94
100
  term.new_record = false
95
101
  return term
@@ -131,7 +137,7 @@ module WebTranslateIt
131
137
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
132
138
 
133
139
  begin
134
- Util.handle_response(Connection.http_connection.request(request), true)
140
+ Util.handle_response(Connection.http_connection.request(request), true, true)
135
141
  rescue Timeout::Error
136
142
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
137
143
  sleep(5)
@@ -156,7 +162,7 @@ module WebTranslateIt
156
162
  request.add_field("X-Client-Version", WebTranslateIt::Util.version)
157
163
 
158
164
  begin
159
- response = Util.handle_response(Connection.http_connection.request(request), true)
165
+ response = Util.handle_response(Connection.http_connection.request(request), true, true)
160
166
  array = YAML.load(response)
161
167
  return nil if array.empty?
162
168
  translations = []
@@ -189,7 +195,7 @@ module WebTranslateIt
189
195
  end
190
196
 
191
197
  begin
192
- Util.handle_response(Connection.http_connection.request(request), true)
198
+ Util.handle_response(Connection.http_connection.request(request), true, true)
193
199
  rescue Timeout::Error
194
200
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
195
201
  sleep(5)
@@ -206,7 +212,7 @@ module WebTranslateIt
206
212
  request.body = self.to_json(true)
207
213
 
208
214
  begin
209
- response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true))
215
+ response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true, true))
210
216
  self.id = response["id"]
211
217
  self.new_record = false
212
218
  return true
@@ -61,8 +61,7 @@ module WebTranslateIt
61
61
  request.body = self.to_hash.to_json
62
62
 
63
63
  begin
64
- response = Util.handle_response(Connection.http_connection.request(request), true)
65
- response = YAML.load(response)
64
+ response = YAML.load(Util.handle_response(Connection.http_connection.request(request), true, true))
66
65
  self.id = response["id"]
67
66
  self.new_record = false
68
67
  return true
@@ -83,8 +82,7 @@ module WebTranslateIt
83
82
  request.body = self.to_hash.to_json
84
83
 
85
84
  begin
86
- Util.handle_response(Connection.http_connection.request(request), true)
87
-
85
+ Util.handle_response(Connection.http_connection.request(request), true, true)
88
86
  rescue Timeout::Error
89
87
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
90
88
  sleep(5)
@@ -49,7 +49,7 @@ module WebTranslateIt
49
49
  request.body = self.to_hash.to_json
50
50
 
51
51
  begin
52
- Util.handle_response(Connection.http_connection.request(request), true)
52
+ Util.handle_response(Connection.http_connection.request(request), true, true)
53
53
  rescue Timeout::Error
54
54
  puts "The request timed out. The service may be overloaded. We will retry in 5 seconds."
55
55
  sleep(5)
@@ -4,6 +4,8 @@ module WebTranslateIt
4
4
  # A few useful functions
5
5
  class Util
6
6
 
7
+ require 'json'
8
+
7
9
  # Return a string representing the gem version
8
10
  # For example "1.8.3"
9
11
  def self.version
@@ -15,15 +17,19 @@ module WebTranslateIt
15
17
  ((processed*10)/total).to_f.ceil*10
16
18
  end
17
19
 
18
- def self.handle_response(response, return_response = false)
20
+ def self.handle_response(response, return_response = false, raise_exception = false)
19
21
  if response.code.to_i >= 400 and response.code.to_i < 500
20
- if response.body
21
- StringUtil.failure(response.body)
22
+ if raise_exception
23
+ raise "Error: #{JSON.parse(response.body)['error']}"
22
24
  else
23
- StringUtil.failure("Error: Can't find project with this API key.")
25
+ StringUtil.failure(JSON.parse(response.body)['error'])
24
26
  end
25
27
  elsif response.code.to_i == 500
26
- StringUtil.failure("Error: Server temporarily unavailable. Please try again shortly.")
28
+ if raise_exception
29
+ raise "Error: Server temporarily unavailable (Error 500)."
30
+ else
31
+ StringUtil.failure("Error: Server temporarily unavailable (Error 500).")
32
+ end
27
33
  else
28
34
  return response.body if return_response
29
35
  return StringUtil.success("OK") if response.code.to_i == 200
data/readme.md CHANGED
@@ -23,7 +23,9 @@ This readme focusses on the most commonly used functionality of this rubygem: th
23
23
 
24
24
  ## Installation
25
25
 
26
- You will need ruby to run wti. On Linux or a Mac, it’s already installed. Install [RubyInstaller](http://rubyinstaller.org/) if you’re using Windows. [See detailed installation instructions for Windows users](https://github.com/AtelierConvivialite/webtranslateit/wiki/Install-wti-on-Windows).
26
+ A dependency of wti needs gcc in order to install, so you will need build tools. With Linux, `apt-get install gcc` or `yum install gcc` should do it.
27
+
28
+ You will also need ruby to run wti. On Linux or a Mac, it’s already installed. Install [RubyInstaller](http://rubyinstaller.org/) if you’re using Windows. [See detailed installation instructions for Windows users](https://github.com/AtelierConvivialite/webtranslateit/wiki/Install-wti-on-Windows).
27
29
 
28
30
  gem install web_translate_it
29
31
 
@@ -93,8 +93,7 @@ describe WebTranslateIt::String do
93
93
  string_fetched.should_not be_nil
94
94
 
95
95
  string_fetched.delete
96
- string_fetched = WebTranslateIt::String.find(string.id)
97
- string_fetched.should be_nil
96
+ lambda { WebTranslateIt::String.find(string.id) }.should raise_error
98
97
  end
99
98
  end
100
99
  end
data/version CHANGED
@@ -1 +1 @@
1
- 2.0.1
1
+ 2.0.2
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: web_translate_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-11 00:00:00.000000000 Z
12
+ date: 2012-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multipart-post
@@ -104,7 +104,6 @@ files:
104
104
  - license
105
105
  - readme.md
106
106
  - version
107
- - examples/en.yml
108
107
  - examples/locale.rb
109
108
  - lib/web_translate_it/auto_fetch.rb
110
109
  - lib/web_translate_it/cacert.pem
@@ -155,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
154
  version: '0'
156
155
  requirements: []
157
156
  rubyforge_project:
158
- rubygems_version: 1.8.23
157
+ rubygems_version: 1.8.24
159
158
  signing_key:
160
159
  specification_version: 3
161
160
  summary: A CLI to sync locale files with webtranslateit.com.
data/examples/en.yml DELETED
@@ -1,43 +0,0 @@
1
- fr:
2
- activerecord:
3
- errors:
4
- templates:
5
- header:
6
- one: "1 error prohibited this {{model}} from being saved"
7
- other: "{{count}} errors prohibited this {{model}} from being saved"
8
- body: "there were problems with the following fields:"
9
- messages:
10
- accepted: "must be accepted"
11
- blank: "can't be blank"
12
- confirmation: "doesn't match confirmation"
13
- empty: "can't be empty"
14
- equal_to: "must be equal to {{count}}"
15
- even: "must be even"
16
- exclusion: "is reserved"
17
- greater_than: "must be greater than {{count}}"
18
- greater_than_or_equal_to: "must be greater than or equal to {{count}}"
19
- inclusion: "is not included in the list"
20
- invalid: "is invalid"
21
- less_than: "must be less than {{count}}"
22
- less_than_or_equal_to: "must be less than or equal to {{count}}"
23
- not_a_number: "is not a number"
24
- odd: "must be odd"
25
- taken: "is already taken"
26
- too_long: "is too long (maximum is {{count}} characters)"
27
- too_short: "is too short (minimum is {{count}} characters)"
28
- wrong_length: "is the wrong length (should be {{count}} characters)"
29
- models:
30
- invitation:
31
- attributes:
32
- email:
33
- user_already_invited: "This user has already been invited"
34
- user_already_member: "This user is already a member"
35
- project_file:
36
- attributes:
37
- file:
38
- file_format_not_supported: "Sorry, we currenly support only Gettext .pot/.po, .yml/.yaml and .strings"
39
- another_one: dskjdks
40
- another_string: "this is another string"
41
- hello: "Hello world!!"
42
- new_string: hehe
43
- test: " & &amp; "