crowdin-api 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Crowdin::API
2
2
 
3
3
  The Crowdin Ruby Client is used to interact with the Crowdin API from Ruby.
4
+
4
5
  For more about the Crowdin API see <http://crowdin.net/page/api>.
5
6
 
6
7
  ## Installation
@@ -81,10 +82,16 @@ crowdin.delete_file('strings.xml')
81
82
 
82
83
  ### Upload Translations
83
84
 
85
+ Documentation: <http://crowdin.net/page/api/upload-translation>
86
+
84
87
  ### Translation Status
85
88
 
89
+ Documentation: <http://crowdin.net/page/api/status>
90
+
86
91
  ### Project Info
87
92
 
93
+ Documentation: <http://crowdin.net/page/api/info>
94
+
88
95
  ### Download Translations
89
96
 
90
97
  Documentation: <http://crowdin.net/page/api/download>
@@ -97,28 +104,59 @@ crowdin.download_translation('ru', :output => '/path/to/download/ru_RU.zip')
97
104
 
98
105
  ### Export Translations
99
106
 
107
+ Documentation: <http://crowdin.net/page/api/export>
108
+
100
109
  ### Account Projects
101
110
 
111
+ Documentation: <http://crowdin.net/page/api/get-projects>
112
+
102
113
  ### Create Project
103
114
 
115
+ Documentation: <http://crowdin.net/page/api/create-project>
116
+
104
117
  ### Edit Project
105
118
 
119
+ Documentation: <http://crowdin.net/page/api/edit-project>
120
+
106
121
  ### Delete Project
107
122
 
123
+ Documentation: <http://crowdin.net/page/api/delete-project>
124
+
108
125
  ### Create Directory
109
126
 
127
+ Documentation: <http://crowdin.net/page/api/add-directory>
128
+
110
129
  ### Delete Directory
111
130
 
131
+ Documentation: <http://crowdin.net/page/api/delete-directory>
132
+
112
133
  ### Download Glossary
113
134
 
135
+ Documentation: <http://crowdin.net/page/api/download-glossary>
136
+
114
137
  ### Upload Glossary
115
138
 
139
+ Documentation: <http://crowdin.net/page/api/upload-glossary>
140
+
116
141
  ### Download TM
117
142
 
143
+ Documentation: <http://crowdin.net/page/api/download-tm>
144
+
118
145
  ### Upload TM
119
146
 
120
- ###Supported Languages
147
+ Documentation: <http://crowdin.net/page/api/upload-tm>
148
+
149
+ ### Supported Languages
150
+
151
+ Documentation: <http://crowdin.net/page/api/supported-languages>
152
+
153
+
154
+ ## Supported Rubies
155
+
156
+ Tested with the following Ruby versions:
121
157
 
158
+ - MRI 1.9.3
159
+ - JRuby 1.7.0
122
160
 
123
161
  ## Contributing
124
162
 
data/lib/crowdin-api.rb CHANGED
@@ -1,5 +1,6 @@
1
+ require 'pp'
1
2
  require 'logger'
2
- require 'rexml/document'
3
+ require 'json'
3
4
  require 'rest-client'
4
5
 
5
6
  require "crowdin-api/errors"
@@ -13,6 +14,13 @@ require "crowdin-api/version"
13
14
  module Crowdin
14
15
  class API
15
16
 
17
+ # Create a new API object using the given parameters.
18
+ #
19
+ # @param [String] api_key the authentication API key can be found on the project settings page
20
+ # @param [String] project_id the project identifier.
21
+ # @param [String] account_key the account API Key
22
+ # @param [String] base_url the url of the Crowdin API
23
+ #
16
24
  def initialize(options = {})
17
25
  @api_key = options.delete(:api_key)
18
26
  @project_id = options.delete(:project_id)
@@ -24,10 +32,11 @@ module Crowdin
24
32
  :params => {},
25
33
  :key => @api_key,
26
34
  :'account-key' => @account_key,
35
+ :json => true
27
36
  }.merge(options)
28
37
 
29
38
  options[:headers] = {
30
- 'Accept' => 'application/xml',
39
+ 'Accept' => 'application/json',
31
40
  'User-Agent' => "crowdin-rb/#{Crowdin::API::VERSION}",
32
41
  'X-Ruby-Version' => RUBY_VERSION,
33
42
  'X-Ruby-Platform' => RUBY_PLATFORM
@@ -36,6 +45,7 @@ module Crowdin
36
45
  options[:params] = {
37
46
  :key => @api_key,
38
47
  :'account-key' => @account_key,
48
+ :json => true
39
49
  }.merge(options[:params])
40
50
 
41
51
  @connection = RestClient::Resource.new(@base_url, options)
@@ -63,15 +73,14 @@ module Crowdin
63
73
  file.close
64
74
  return true
65
75
  else
66
- doc = REXML::Document.new @response.body
67
- if doc.elements['error']
68
- code = doc.elements['error'].elements['code'].text
69
- message = doc.elements['error'].elements['message'].text
76
+ doc = JSON.load(@response.body)
77
+ if doc.kind_of?(Hash) && doc['success'] == false
78
+ code = doc['error']['code']
79
+ message = doc['error']['message']
70
80
  error = Crowdin::API::Errors::Error.new(code, message)
71
81
  raise(error)
72
82
  else
73
- # leave body as is
74
- return @response
83
+ return doc
75
84
  end
76
85
  end
77
86
 
@@ -1,4 +1,9 @@
1
1
  module Crowdin
2
+ # A wrapper and interface to the Crowdin api. Please visit the Crowdin developers
3
+ # site for a full explaination of what each of the Crowdin api methods
4
+ # expect and perform.
5
+ #
6
+ # http://crowdin.net/page/api
2
7
 
3
8
  class API
4
9
 
@@ -236,25 +241,23 @@ module Crowdin
236
241
  #
237
242
  # GET http://api.crowdin.net/api/supported-languages
238
243
  #
239
- def supported_languages(format = :xml)
244
+ def supported_languages
240
245
  request(
241
246
  :method => :get,
242
247
  :path => "/api/supported-languages",
243
- :query => { format => true },
244
248
  )
245
249
  end
246
250
 
247
- # Track your Crowdin project translation progress by language. Default response format is XML.
251
+ # Track your Crowdin project translation progress by language.
248
252
  #
249
253
  # == Request
250
254
  #
251
255
  # POST http://api.crowdin.net/api/project/{project-identifier}/status?key={project-key}
252
256
  #
253
- def translations_status(format = :xml)
257
+ def translations_status
254
258
  request(
255
259
  :method => :post,
256
260
  :path => "/api/project/#{@project_id}/status",
257
- :query => { format => true },
258
261
  )
259
262
  end
260
263
 
@@ -264,11 +267,10 @@ module Crowdin
264
267
  #
265
268
  # POST http://api.crowdin.net/api/project/{project-identifier}/info?key={project-key}
266
269
  #
267
- def project_info(format = :json)
270
+ def project_info
268
271
  request(
269
272
  :method => :post,
270
273
  :path => "/api/project/#{@project_id}/info",
271
- :query => { format => true },
272
274
  )
273
275
  end
274
276
 
@@ -1,5 +1,5 @@
1
1
  module Crowdin
2
2
  class API
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowdin-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
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-09-27 00:00:00.000000000 Z
12
+ date: 2012-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client