crowdin-api 1.4.0 → 1.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/.github/workflows/build-and-publish.yml +5 -2
- data/.github/workflows/docs.yml +33 -0
- data/.github/workflows/lint-pr-title.yml +18 -0
- data/.github/workflows/test-and-lint.yml +5 -2
- data/.rubocop.yml +3 -0
- data/.rubocop_todo.yml +1 -1
- data/CONTRIBUTING.md +4 -1
- data/Gemfile +3 -0
- data/README.md +9 -29
- data/lib/crowdin-api/api_resources/bundles.rb +72 -0
- data/lib/crowdin-api/api_resources/glossaries.rb +65 -0
- data/lib/crowdin-api/api_resources/projects.rb +27 -0
- data/lib/crowdin-api/api_resources/reports.rb +64 -0
- data/lib/crowdin-api/api_resources/source_files.rb +64 -0
- data/lib/crowdin-api/api_resources/storages.rb +12 -0
- data/lib/crowdin-api/api_resources/string_translations.rb +16 -0
- data/lib/crowdin-api/api_resources/translation_memory.rb +16 -0
- data/lib/crowdin-api/client/client.rb +1 -1
- data/lib/crowdin-api/client/version.rb +1 -1
- data/lib/crowdin-api/core/fetch_all_extensions.rb +0 -5
- data/spec/api_resources/bundles_spec.rb +32 -1
- data/spec/api_resources/glossaries_spec.rb +182 -118
- data/spec/api_resources/reports_spec.rb +50 -0
- data/spec/api_resources/string_translations_spec.rb +19 -0
- data/spec/api_resources/translation_memory_spec.rb +21 -0
- data/spec/unit/client_spec.rb +12 -0
- metadata +4 -2
@@ -3,6 +3,9 @@
|
|
3
3
|
module Crowdin
|
4
4
|
module ApiResources
|
5
5
|
module SourceFiles
|
6
|
+
# @param query [Hash] Request Body
|
7
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.branches.getMany API Documentation}
|
8
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.branches.getMany Enterprise API Documentation}
|
6
9
|
def list_branches(query = {}, project_id = config.project_id)
|
7
10
|
project_id || raise_project_id_is_required_error
|
8
11
|
|
@@ -15,6 +18,9 @@ module Crowdin
|
|
15
18
|
Web::SendRequest.new(request).perform
|
16
19
|
end
|
17
20
|
|
21
|
+
# @param query [Hash] Request Body
|
22
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.branches.post API Documentation}
|
23
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.branches.post Enterprise API Documentation}
|
18
24
|
def add_branch(query = {}, project_id = config.project_id)
|
19
25
|
project_id || raise_project_id_is_required_error
|
20
26
|
|
@@ -27,6 +33,9 @@ module Crowdin
|
|
27
33
|
Web::SendRequest.new(request).perform
|
28
34
|
end
|
29
35
|
|
36
|
+
# @param branch_id [Integer] Branch ID
|
37
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.branches.get API Documentation}
|
38
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.branches.get Enterprise API Documentation}
|
30
39
|
def get_branch(branch_id = nil, project_id = config.project_id)
|
31
40
|
branch_id || raise_parameter_is_required_error(:branch_id)
|
32
41
|
project_id || raise_project_id_is_required_error
|
@@ -39,6 +48,9 @@ module Crowdin
|
|
39
48
|
Web::SendRequest.new(request).perform
|
40
49
|
end
|
41
50
|
|
51
|
+
# @param branch_id [Hash] Branch ID
|
52
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.branches.delete API Documentation}
|
53
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.branches.delete Enterprise API Documentation}
|
42
54
|
def delete_branch(branch_id = nil, project_id = config.project_id)
|
43
55
|
branch_id || raise_parameter_is_required_error(:branch_id)
|
44
56
|
project_id || raise_project_id_is_required_error
|
@@ -51,6 +63,10 @@ module Crowdin
|
|
51
63
|
Web::SendRequest.new(request).perform
|
52
64
|
end
|
53
65
|
|
66
|
+
# @param query [Hash] Request Body
|
67
|
+
# @param branch_id [Integer] Branch ID
|
68
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.branches.patch API Documentation}
|
69
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.branches.patch Enterprise API Documentation}
|
54
70
|
def edit_branch(branch_id = nil, query = {}, project_id = config.project_id)
|
55
71
|
branch_id || raise_parameter_is_required_error(:branch_id)
|
56
72
|
project_id || raise_project_id_is_required_error
|
@@ -64,6 +80,9 @@ module Crowdin
|
|
64
80
|
Web::SendRequest.new(request).perform
|
65
81
|
end
|
66
82
|
|
83
|
+
# @param query [Hash] Request Body
|
84
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.directories.getMany API Documentation}
|
85
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.directories.getMany Enterprise API Documentation}
|
67
86
|
def list_directories(query = {}, project_id = config.project_id)
|
68
87
|
project_id || raise_project_id_is_required_error
|
69
88
|
|
@@ -76,6 +95,9 @@ module Crowdin
|
|
76
95
|
Web::SendRequest.new(request).perform
|
77
96
|
end
|
78
97
|
|
98
|
+
# @param query [Hash] Request Body
|
99
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.directories.post API Documentation}
|
100
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.directories.post Enterprise API Documentation}
|
79
101
|
def add_directory(query = {}, project_id = config.project_id)
|
80
102
|
project_id || raise_project_id_is_required_error
|
81
103
|
|
@@ -88,6 +110,9 @@ module Crowdin
|
|
88
110
|
Web::SendRequest.new(request).perform
|
89
111
|
end
|
90
112
|
|
113
|
+
# @param directory_id [Integer] Directory ID
|
114
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.directories.get API Documentation}
|
115
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.directories.get Enterprise API Documentation}
|
91
116
|
def get_directory(directory_id = nil, project_id = config.project_id)
|
92
117
|
directory_id || raise_parameter_is_required_error(:directory_id)
|
93
118
|
project_id || raise_project_id_is_required_error
|
@@ -100,6 +125,9 @@ module Crowdin
|
|
100
125
|
Web::SendRequest.new(request).perform
|
101
126
|
end
|
102
127
|
|
128
|
+
# @param directory_id [Integer] Directory ID
|
129
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.directories.delete API Documentation}
|
130
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.directories.delete Enterprise API Documentation}
|
103
131
|
def delete_directory(directory_id = nil, project_id = config.project_id)
|
104
132
|
directory_id || raise_parameter_is_required_error(:directory_id)
|
105
133
|
project_id || raise_project_id_is_required_error
|
@@ -112,6 +140,10 @@ module Crowdin
|
|
112
140
|
Web::SendRequest.new(request).perform
|
113
141
|
end
|
114
142
|
|
143
|
+
# @param query [Hash] Request Body
|
144
|
+
# @param directory_id [Integer] Directory ID
|
145
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.directories.patch API Documentation}
|
146
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.directories.patch Enterprise API Documentation}
|
115
147
|
def edit_directory(directory_id = nil, query = {}, project_id = config.project_id)
|
116
148
|
directory_id || raise_parameter_is_required_error(:directory_id)
|
117
149
|
project_id || raise_project_id_is_required_error
|
@@ -125,6 +157,9 @@ module Crowdin
|
|
125
157
|
Web::SendRequest.new(request).perform
|
126
158
|
end
|
127
159
|
|
160
|
+
# @param query [Hash] Request Body
|
161
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.getMany API Documentation}
|
162
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.getMany Enterprise API Documentation}
|
128
163
|
def list_files(query = {}, project_id = config.project_id)
|
129
164
|
project_id || raise_project_id_is_required_error
|
130
165
|
|
@@ -137,6 +172,9 @@ module Crowdin
|
|
137
172
|
Web::SendRequest.new(request).perform
|
138
173
|
end
|
139
174
|
|
175
|
+
# @param query [Hash] Request Body
|
176
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.post API Documentation}
|
177
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.post Enterprise API Documentation}
|
140
178
|
def add_file(query = {}, project_id = config.project_id)
|
141
179
|
project_id || raise_project_id_is_required_error
|
142
180
|
|
@@ -149,6 +187,9 @@ module Crowdin
|
|
149
187
|
Web::SendRequest.new(request).perform
|
150
188
|
end
|
151
189
|
|
190
|
+
# @param file_id [Integer] File ID
|
191
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.get API Documentation}
|
192
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.get Enterprise API Documentation}
|
152
193
|
def get_file(file_id = nil, project_id = config.project_id)
|
153
194
|
file_id || raise_parameter_is_required_error(:file_id)
|
154
195
|
project_id || raise_project_id_is_required_error
|
@@ -161,6 +202,10 @@ module Crowdin
|
|
161
202
|
Web::SendRequest.new(request).perform
|
162
203
|
end
|
163
204
|
|
205
|
+
# @param query [Hash] Request Body
|
206
|
+
# @param file_id [Integer] File ID
|
207
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.put API Documentation}
|
208
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.put Enterprise API Documentation}
|
164
209
|
def update_or_restore_file(file_id = nil, query = {}, project_id = config.project_id)
|
165
210
|
file_id || raise_parameter_is_required_error(:file_id)
|
166
211
|
project_id || raise_project_id_is_required_error
|
@@ -174,6 +219,9 @@ module Crowdin
|
|
174
219
|
Web::SendRequest.new(request).perform
|
175
220
|
end
|
176
221
|
|
222
|
+
# @param file_id [Integer] File ID
|
223
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.delete API Documentation}
|
224
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.delete Enterprise API Documentation}
|
177
225
|
def delete_file(file_id = nil, project_id = config.project_id)
|
178
226
|
file_id || raise_parameter_is_required_error(:file_id)
|
179
227
|
project_id || raise_project_id_is_required_error
|
@@ -186,6 +234,10 @@ module Crowdin
|
|
186
234
|
Web::SendRequest.new(request).perform
|
187
235
|
end
|
188
236
|
|
237
|
+
# @param query [Hash] Request Body
|
238
|
+
# @param file_id [Integer] File ID
|
239
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.patch API Documentation}
|
240
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.patch Enterprise API Documentation}
|
189
241
|
def edit_file(file_id = nil, query = {}, project_id = config.project_id)
|
190
242
|
file_id || raise_parameter_is_required_error(:file_id)
|
191
243
|
project_id || raise_project_id_is_required_error
|
@@ -199,6 +251,10 @@ module Crowdin
|
|
199
251
|
Web::SendRequest.new(request).perform
|
200
252
|
end
|
201
253
|
|
254
|
+
# @param file_id [Integer] File ID
|
255
|
+
# @param destination [String] Destination of File
|
256
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.download.get API Documentation}
|
257
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.download.get Enterprise API Documentation}
|
202
258
|
def download_file(file_id = nil, destination = nil, project_id = config.project_id)
|
203
259
|
file_id || raise_parameter_is_required_error(:file_id)
|
204
260
|
project_id || raise_project_id_is_required_error
|
@@ -211,6 +267,10 @@ module Crowdin
|
|
211
267
|
Web::SendRequest.new(request, destination).perform
|
212
268
|
end
|
213
269
|
|
270
|
+
# @param query [Hash] Request Body
|
271
|
+
# @param file_id [Integer] File ID
|
272
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.revisions.getMany API Documentation}
|
273
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.revisions.getMany Enterprise API Documentation}
|
214
274
|
def list_file_revisions(file_id = nil, query = {}, project_id = config.project_id)
|
215
275
|
file_id || raise_parameter_is_required_error(:file_id)
|
216
276
|
project_id || raise_project_id_is_required_error
|
@@ -224,6 +284,10 @@ module Crowdin
|
|
224
284
|
Web::SendRequest.new(request).perform
|
225
285
|
end
|
226
286
|
|
287
|
+
# @param revision_id [Integer] Revision ID
|
288
|
+
# @param file_id [Integer] File ID
|
289
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.projects.files.revisions.get API Documentation}
|
290
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.projects.files.revisions.get Enterprise API Documentation}
|
227
291
|
def get_file_revision(file_id = nil, revision_id = nil, project_id = config.project_id)
|
228
292
|
file_id || raise_parameter_is_required_error(:file_id)
|
229
293
|
revision_id || raise_parameter_is_required_error(:revision_id)
|
@@ -3,6 +3,9 @@
|
|
3
3
|
module Crowdin
|
4
4
|
module ApiResources
|
5
5
|
module Storages
|
6
|
+
# @param query [Hash] Request Body
|
7
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.storages.getMany API Documentation}
|
8
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.storages.getMany Enterprise API Documentation}
|
6
9
|
def list_storages(query = {})
|
7
10
|
request = Web::Request.new(
|
8
11
|
connection,
|
@@ -13,6 +16,9 @@ module Crowdin
|
|
13
16
|
Web::SendRequest.new(request).perform
|
14
17
|
end
|
15
18
|
|
19
|
+
# @param file [string] File path
|
20
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.storages.post API Documentation}
|
21
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.storages.post Enterprise API Documentation}
|
16
22
|
def add_storage(file = nil)
|
17
23
|
file || raise_parameter_is_required_error(:file)
|
18
24
|
|
@@ -28,6 +34,9 @@ module Crowdin
|
|
28
34
|
Web::SendRequest.new(request).perform
|
29
35
|
end
|
30
36
|
|
37
|
+
# @param storage_id [Integer] Storage ID
|
38
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.storages.get API Documentation}
|
39
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.storages.get Enterprise API Documentation}
|
31
40
|
def get_storage(storage_id = nil)
|
32
41
|
storage_id || raise_parameter_is_required_error(:storage_id)
|
33
42
|
|
@@ -39,6 +48,9 @@ module Crowdin
|
|
39
48
|
Web::SendRequest.new(request).perform
|
40
49
|
end
|
41
50
|
|
51
|
+
# @param storage_id [Integer] Storage ID
|
52
|
+
# * {https://developer.crowdin.com/api/v2/#operation/api.storages.delete API Documentation}
|
53
|
+
# * {https://developer.crowdin.com/enterprise/api/v2/#operation/api.storages.delete Enterprise API Documentation}
|
42
54
|
def delete_storage(storage_id = nil)
|
43
55
|
storage_id || raise_parameter_is_required_error(:storage_id)
|
44
56
|
|
@@ -188,6 +188,22 @@ module Crowdin
|
|
188
188
|
)
|
189
189
|
Web::SendRequest.new(request).perform
|
190
190
|
end
|
191
|
+
|
192
|
+
def add_translation_alignment(project_id = nil, query = {})
|
193
|
+
project_id || raise_project_id_is_required_error
|
194
|
+
|
195
|
+
%i[source_language_id target_language_id text].each do |param|
|
196
|
+
query[param] || raise_parameter_is_required_error(param)
|
197
|
+
end
|
198
|
+
|
199
|
+
request = Web::Request.new(
|
200
|
+
connection,
|
201
|
+
:post,
|
202
|
+
"#{config.target_api_url}/projects/#{project_id}/translations/alignment",
|
203
|
+
{ params: query }
|
204
|
+
)
|
205
|
+
Web::SendRequest.new(request).perform
|
206
|
+
end
|
191
207
|
end
|
192
208
|
end
|
193
209
|
end
|
@@ -126,6 +126,22 @@ module Crowdin
|
|
126
126
|
)
|
127
127
|
Web::SendRequest.new(request).perform
|
128
128
|
end
|
129
|
+
|
130
|
+
def search_tms_concordance(project_id = nil, query = {})
|
131
|
+
project_id || raise_project_id_is_required_error
|
132
|
+
|
133
|
+
%i[source_language_id target_language_id expression auto_substitution min_relevant].each do |param|
|
134
|
+
query[param] || raise_parameter_is_required_error(param)
|
135
|
+
end
|
136
|
+
|
137
|
+
request = Web::Request.new(
|
138
|
+
connection,
|
139
|
+
:post,
|
140
|
+
"#{config.target_api_url}/projects/#{project_id}/tms/concordance",
|
141
|
+
{ params: query }
|
142
|
+
)
|
143
|
+
Web::SendRequest.new(request).perform
|
144
|
+
end
|
129
145
|
end
|
130
146
|
end
|
131
147
|
end
|
@@ -103,7 +103,7 @@ module Crowdin
|
|
103
103
|
# otherwise system will retry so many times, as indicated at tries_count
|
104
104
|
#
|
105
105
|
def fetch_all(api_resource, opts = {}, retry_opts = {})
|
106
|
-
unless
|
106
|
+
unless api_resource.to_s.start_with?('list_')
|
107
107
|
raise(Errors::FetchAllProcessingError, "#{api_resource} method aren't supported for FetchAll")
|
108
108
|
end
|
109
109
|
|
@@ -4,11 +4,6 @@ module Crowdin
|
|
4
4
|
module Web
|
5
5
|
module FetchAllExtensions
|
6
6
|
MAX_ITEMS_COUNT_PER_REQUEST = 500.freeze
|
7
|
-
API_RESOURCES_FOR_FETCH_ALL = %i[list_vendors list_dictionaries list_directories list_distributions
|
8
|
-
list_workflow_templates list_languages list_labels list_mts list_files
|
9
|
-
list_projects list_groups list_branches list_strings list_storages
|
10
|
-
list_string_comments list_tasks list_user_tasks list_webhooks
|
11
|
-
list_terms list_file_revisions list_bundles].freeze
|
12
7
|
end
|
13
8
|
end
|
14
9
|
end
|
@@ -13,11 +13,42 @@ describe Crowdin::ApiResources::Bundles do
|
|
13
13
|
describe '#add_bundle' do
|
14
14
|
it 'when request are valid', :default do
|
15
15
|
stub_request(:post, "https://api.crowdin.com/#{target_api_url}/projects/#{project_id}/bundles")
|
16
|
-
add_bundle = @crowdin.add_bundle({}, project_id)
|
16
|
+
add_bundle = @crowdin.add_bundle({ name: '', format: '', sourcePatterns: [], exportPattern: '' }, project_id)
|
17
17
|
expect(add_bundle).to eq(200)
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
describe '#export_bundle' do
|
22
|
+
let(:bundle_id) { 1 }
|
23
|
+
it 'when request are valid', :default do
|
24
|
+
stub_request(:post, "https://api.crowdin.com/#{target_api_url}/projects/#{project_id}/bundles/#{bundle_id}/exports")
|
25
|
+
export_bundle = @crowdin.export_bundle(bundle_id, project_id)
|
26
|
+
expect(export_bundle).to eq(200)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#check_bundle_export_status' do
|
31
|
+
let(:bundle_id) { 1 }
|
32
|
+
let(:export_id) { 1 }
|
33
|
+
|
34
|
+
it 'when request are valid', :default do
|
35
|
+
stub_request(:get, "https://api.crowdin.com/#{target_api_url}/projects/#{project_id}/bundles/#{bundle_id}/exports/#{export_id}")
|
36
|
+
check_bundle_export_status = @crowdin.check_bundle_export_status(bundle_id, export_id, project_id)
|
37
|
+
expect(check_bundle_export_status).to eq(200)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe '#download_bundle' do
|
42
|
+
let(:bundle_id) { 1 }
|
43
|
+
let(:export_id) { 1 }
|
44
|
+
|
45
|
+
it 'when request are valid', :default do
|
46
|
+
stub_request(:get, "https://api.crowdin.com/#{target_api_url}/projects/#{project_id}/bundles/#{bundle_id}/exports/#{export_id}/download")
|
47
|
+
download_bundle = @crowdin.download_bundle(bundle_id, export_id, project_id)
|
48
|
+
expect(download_bundle).to eq(200)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
21
52
|
describe '#get_bundle' do
|
22
53
|
let(:bundle_id) { 1 }
|
23
54
|
|