crowdin-api 1.1.1 → 1.5.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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +31 -0
  3. data/.github/workflows/test-and-lint.yml +1 -1
  4. data/.gitignore +2 -2
  5. data/.rubocop_todo.yml +114 -48
  6. data/Gemfile +3 -0
  7. data/README.md +61 -17
  8. data/bin/crowdin-console +5 -5
  9. data/crowdin-api.gemspec +1 -2
  10. data/lib/crowdin-api/api_resources/bundles.rb +104 -0
  11. data/lib/crowdin-api/api_resources/dictionaries.rb +32 -0
  12. data/lib/crowdin-api/api_resources/distributions.rb +92 -0
  13. data/lib/crowdin-api/api_resources/glossaries.rb +248 -0
  14. data/lib/crowdin-api/api_resources/labels.rb +98 -0
  15. data/lib/crowdin-api/api_resources/languages.rb +61 -0
  16. data/lib/crowdin-api/api_resources/machine_translation_engines.rb +79 -0
  17. data/lib/crowdin-api/api_resources/projects.rb +151 -0
  18. data/lib/crowdin-api/api_resources/reports.rb +184 -0
  19. data/lib/crowdin-api/api_resources/screenshots.rb +172 -0
  20. data/lib/crowdin-api/api_resources/source_files.rb +305 -0
  21. data/lib/crowdin-api/{api-resources → api_resources}/source_strings.rb +19 -24
  22. data/lib/crowdin-api/api_resources/storages.rb +66 -0
  23. data/lib/crowdin-api/api_resources/string_comments.rb +68 -0
  24. data/lib/crowdin-api/api_resources/string_translations.rb +193 -0
  25. data/lib/crowdin-api/api_resources/tasks.rb +102 -0
  26. data/lib/crowdin-api/api_resources/teams.rb +135 -0
  27. data/lib/crowdin-api/api_resources/translation_memory.rb +131 -0
  28. data/lib/crowdin-api/{api-resources → api_resources}/translation_status.rb +24 -30
  29. data/lib/crowdin-api/{api-resources → api_resources}/translations.rb +41 -59
  30. data/lib/crowdin-api/api_resources/users.rb +161 -0
  31. data/lib/crowdin-api/api_resources/vendors.rb +21 -0
  32. data/lib/crowdin-api/api_resources/webhooks.rb +68 -0
  33. data/lib/crowdin-api/api_resources/workflows.rb +59 -0
  34. data/lib/crowdin-api/client/client.rb +155 -47
  35. data/lib/crowdin-api/client/configuration.rb +16 -12
  36. data/lib/crowdin-api/client/version.rb +1 -1
  37. data/lib/crowdin-api/core/errors.rb +3 -1
  38. data/lib/crowdin-api/core/{api_errors_raiser.rb → errors_raisers.rb} +21 -11
  39. data/lib/crowdin-api/core/fetch_all_extensions.rb +9 -0
  40. data/lib/crowdin-api/core/request.rb +50 -90
  41. data/lib/crowdin-api/core/send_request.rb +67 -0
  42. data/lib/crowdin-api.rb +21 -11
  43. data/spec/api_resources/bundles_spec.rb +61 -0
  44. data/spec/api_resources/dictionaries_spec.rb +23 -0
  45. data/spec/api_resources/distributions_spec.rb +71 -0
  46. data/spec/api_resources/glossaries_spec.rb +210 -0
  47. data/spec/api_resources/labels_spec.rb +71 -0
  48. data/spec/api_resources/languages_spec.rb +51 -0
  49. data/spec/api_resources/machine_translation_engines_spec.rb +63 -0
  50. data/spec/api_resources/projects_spec.rb +215 -0
  51. data/spec/api_resources/reports_spec.rb +145 -0
  52. data/spec/api_resources/screenshots_spec.rb +134 -0
  53. data/spec/api_resources/source_files_spec.rb +184 -0
  54. data/spec/api_resources/source_strings_spec.rb +51 -0
  55. data/spec/api_resources/storages_spec.rb +41 -0
  56. data/spec/api_resources/string_comments_spec.rb +51 -0
  57. data/spec/api_resources/string_translations_spec.rb +141 -0
  58. data/spec/api_resources/tasks_spec.rb +79 -0
  59. data/spec/api_resources/teams_spec.rb +100 -0
  60. data/spec/api_resources/translation_memory_spec.rb +114 -0
  61. data/spec/api_resources/translation_status_spec.rb +61 -0
  62. data/spec/api_resources/translations_spec.rb +107 -0
  63. data/spec/api_resources/users_spec.rb +117 -0
  64. data/spec/api_resources/vendors_spec.rb +13 -0
  65. data/spec/api_resources/webhooks_spec.rb +51 -0
  66. data/spec/api_resources/workflows_spec.rb +41 -0
  67. data/spec/spec_helper.rb +23 -2
  68. data/spec/unit/client_spec.rb +91 -0
  69. metadata +69 -28
  70. data/bin/setup +0 -6
  71. data/lib/crowdin-api/api-resources/languages.rb +0 -81
  72. data/lib/crowdin-api/api-resources/projects.rb +0 -134
  73. data/lib/crowdin-api/api-resources/source_files.rb +0 -303
  74. data/lib/crowdin-api/api-resources/storages.rb +0 -102
  75. data/lib/crowdin-api/api-resources/workflows.rb +0 -59
  76. data/spec/core/config-instance_spec.rb +0 -72
  77. data/spec/crowdin-api_spec.rb +0 -7
@@ -1,81 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Crowdin
4
- module ApiResources
5
- module Languages
6
- def list_languages(query = {})
7
- request = Web::Request.new(
8
- self,
9
- :get,
10
- '/languages',
11
- query
12
- )
13
-
14
- request.perform
15
- end
16
-
17
- # Add custom language.
18
- #
19
- # === Parameters
20
- #
21
- # * +:name+ [String] - Language name
22
- # * +:code+ [String] - Custom language code
23
- # * +:localeCode+ [String] - Custom language locale code
24
- # * +:textDirection+ [String ltr/rtl] - Text direction in custom language
25
- # * +:pluralCategoryNames+ [String] - Array with category names
26
- # * +:threeLettersCode+ [String] - Custom language 3 letters code. Format: ISO 6393 code
27
- #
28
- # === Example
29
- #
30
- # crowdin.add_custom_language(name: 'your_name', code: 'your_code' ..)
31
- #
32
- def add_custom_language(query = {})
33
- request = Web::Request.new(
34
- self,
35
- :post,
36
- '/languages',
37
- query
38
- )
39
-
40
- request.perform
41
- end
42
-
43
- def get_language(language_id = nil)
44
- language_id || raise_parameter_is_required_error(:language_id)
45
-
46
- request = Web::Request.new(
47
- self,
48
- :get,
49
- "/languages/#{language_id}"
50
- )
51
-
52
- request.perform
53
- end
54
-
55
- def delete_custom_language(language_id = nil)
56
- language_id || raise_parameter_is_required_error(:language_id)
57
-
58
- request = Web::Request.new(
59
- self,
60
- :delete,
61
- "/languages/#{language_id}"
62
- )
63
-
64
- request.perform
65
- end
66
-
67
- def edit_custom_language(language_id = nil)
68
- language_id || raise_parameter_is_required_error(:language_id)
69
-
70
- request = Web::Request.new(
71
- self,
72
- :patch,
73
- "/languages/#{language_id}",
74
- query
75
- )
76
-
77
- request.perform
78
- end
79
- end
80
- end
81
- end
@@ -1,134 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Crowdin
4
- module ApiResources
5
- module Projects
6
- def list_projects(query = {})
7
- request = Web::Request.new(
8
- self,
9
- :get,
10
- '/projects',
11
- query
12
- )
13
-
14
- request.perform
15
- end
16
-
17
- def add_project(query = {})
18
- request = Web::Request.new(
19
- self,
20
- :post,
21
- '/projects',
22
- query
23
- )
24
-
25
- request.perform
26
- end
27
-
28
- def get_project(project_id = nil)
29
- project_id || raise_parameter_is_required_error(:project_id)
30
-
31
- request = Web::Request.new(
32
- self,
33
- :get,
34
- "/projects/#{project_id}"
35
- )
36
-
37
- request.perform
38
- end
39
-
40
- def delete_project(project_id = nil)
41
- project_id || raise_parameter_is_required_error(:project_id)
42
-
43
- request = Web::Request.new(
44
- self,
45
- :delete,
46
- "/projects/#{project_id}"
47
- )
48
-
49
- request.perform
50
- end
51
-
52
- def edit_project(project_id = nil, query = {})
53
- project_id || raise_parameter_is_required_error(:project_id)
54
-
55
- request = Web::Request.new(
56
- self,
57
- :patch,
58
- "/projects/#{project_id}",
59
- query
60
- )
61
-
62
- request.perform
63
- end
64
-
65
- # For Enterprise mode only
66
-
67
- def list_groups(query = {})
68
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
69
-
70
- request = Web::Request.new(
71
- self,
72
- :get,
73
- '/groups',
74
- query
75
- )
76
-
77
- request.perform
78
- end
79
-
80
- def add_group(query = {})
81
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
82
-
83
- request = Web::Request.new(
84
- self,
85
- :post,
86
- '/groups',
87
- query
88
- )
89
-
90
- request.perform
91
- end
92
-
93
- def get_group(group_id = nil)
94
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
95
- group_id || raise_parameter_is_required_error(:group_id)
96
-
97
- request = Web::Request.new(
98
- self,
99
- :get,
100
- "/groups/#{group_id}"
101
- )
102
-
103
- request.perform
104
- end
105
-
106
- def delete_group(group_id = nil)
107
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
108
- group_id || raise_parameter_is_required_error(:group_id)
109
-
110
- request = Web::Request.new(
111
- self,
112
- :delete,
113
- "/groups/#{group_id}"
114
- )
115
-
116
- request.perform
117
- end
118
-
119
- def edit_group(group_id = nil, query = {})
120
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
121
- group_id || raise_parameter_is_required_error(:group_id)
122
-
123
- request = Web::Request.new(
124
- self,
125
- :patch,
126
- "/groups/#{group_id}",
127
- query
128
- )
129
-
130
- request.perform
131
- end
132
- end
133
- end
134
- end
@@ -1,303 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Crowdin
4
- module ApiResources
5
- module SourceFiles
6
- def list_branches(query = {}, project_id = config.project_id)
7
- project_id || raise_project_id_is_required_error
8
-
9
- request = Web::Request.new(
10
- self,
11
- :get,
12
- "/projects/#{project_id}/branches",
13
- query
14
- )
15
-
16
- request.perform
17
- end
18
-
19
- def add_branch(query = {}, project_id = config.project_id)
20
- project_id || raise_project_id_is_required_error
21
-
22
- request = Web::Request.new(
23
- self,
24
- :post,
25
- "/projects/#{project_id}/branches",
26
- query
27
- )
28
-
29
- request.perform
30
- end
31
-
32
- def get_branch(branch_id = nil, project_id = config.project_id)
33
- branch_id || raise_parameter_is_required_error(:branch_id)
34
- project_id || raise_project_id_is_required_error
35
-
36
- request = Web::Request.new(
37
- self,
38
- :get,
39
- "/projects/#{project_id}/branches/#{branch_id}"
40
- )
41
-
42
- request.perform
43
- end
44
-
45
- def delete_branch(branch_id = nil, project_id = config.project_id)
46
- branch_id || raise_parameter_is_required_error(:branch_id)
47
- project_id || raise_project_id_is_required_error
48
-
49
- request = Web::Request.new(
50
- self,
51
- :delete,
52
- "/projects/#{project_id}/branches/#{branch_id}"
53
- )
54
-
55
- request.perform
56
- end
57
-
58
- def edit_branch(branch_id = nil, query = {}, project_id = config.project_id)
59
- branch_id || raise_parameter_is_required_error(:branch_id)
60
- project_id || raise_project_id_is_required_error
61
-
62
- request = Web::Request.new(
63
- self,
64
- :patch,
65
- "/projects/#{project_id}/branches/#{branch_id}",
66
- query
67
- )
68
-
69
- request.perform
70
- end
71
-
72
- def list_directories(query = {}, project_id = config.project_id)
73
- project_id || raise_project_id_is_required_error
74
-
75
- request = Web::Request.new(
76
- self,
77
- :get,
78
- "/projects/#{project_id}/directories",
79
- query
80
- )
81
-
82
- request.perform
83
- end
84
-
85
- def add_directory(query = {}, project_id = config.project_id)
86
- project_id || raise_project_id_is_required_error
87
-
88
- request = Web::Request.new(
89
- self,
90
- :post,
91
- "/projects/#{project_id}/directories",
92
- query
93
- )
94
-
95
- request.perform
96
- end
97
-
98
- def get_directory(directory_id = nil, project_id = config.project_id)
99
- directory_id || raise_parameter_is_required_error(:directory_id)
100
- project_id || raise_project_id_is_required_error
101
-
102
- request = Web::Request.new(
103
- self,
104
- :get,
105
- "/projects/#{project_id}/directories/#{directory_id}"
106
- )
107
-
108
- request.perform
109
- end
110
-
111
- def delete_directory(directory_id = nil, project_id = config.project_id)
112
- directory_id || raise_parameter_is_required_error(:directory_id)
113
- project_id || raise_project_id_is_required_error
114
-
115
- request = Web::Request.new(
116
- self,
117
- :delete,
118
- "/projects/#{project_id}/directories/#{directory_id}"
119
- )
120
-
121
- request.perform
122
- end
123
-
124
- def edit_directory(directory_id = nil, query = {}, project_id = config.project_id)
125
- directory_id || raise_parameter_is_required_error(:directory_id)
126
- project_id || raise_project_id_is_required_error
127
-
128
- request = Web::Request.new(
129
- self,
130
- :patch,
131
- "/projects/#{project_id}/directories/#{directory_id}",
132
- query
133
- )
134
-
135
- request.perform
136
- end
137
-
138
- def list_files(query = {}, project_id = config.project_id)
139
- project_id || raise_project_id_is_required_error
140
-
141
- request = Web::Request.new(
142
- self,
143
- :get,
144
- "/projects/#{project_id}/files",
145
- query
146
- )
147
-
148
- request.perform
149
- end
150
-
151
- # Add custom language.
152
- #
153
- # === Parameters
154
- #
155
- # * +:projectId+ [Integer] - Project Identifier. Get via list_projects. Can be initialized with the Crowdin Client
156
- # * +:storageId+ [Integer] - Storage Identifier. Get via list_storages
157
- # * +:name+ [String] - File name. Note: Can't contain \ / : * ? " < > | symbols. ZIP files are not allowed.
158
- #
159
- # === Example
160
- #
161
- # when you're initialized Crowdin Client with a project_id
162
- #
163
- # crowdin.add_file(storage_id: your_storage_id, name: 'your_filename')
164
- #
165
- # or you can specify project_id
166
- #
167
- # crowdin.add_file({ storage_id: your_storage_id, name: 'your_filename' }, your_project_id)
168
- #
169
- def add_file(query = {}, project_id = config.project_id)
170
- project_id || raise_project_id_is_required_error
171
-
172
- request = Web::Request.new(
173
- self,
174
- :post,
175
- "/projects/#{project_id}/files",
176
- query
177
- )
178
-
179
- request.perform
180
- end
181
-
182
- def get_file(file_id = nil, project_id = config.project_id)
183
- file_id || raise_parameter_is_required_error(:file_id)
184
- project_id || raise_project_id_is_required_error
185
-
186
- request = Web::Request.new(
187
- self,
188
- :get,
189
- "/projects/#{project_id}/files/#{file_id}"
190
- )
191
-
192
- request.perform
193
- end
194
-
195
- def update_or_restore_file(file_id = nil, query = {}, project_id = config.project_id)
196
- file_id || raise_parameter_is_required_error(:file_id)
197
- project_id || raise_project_id_is_required_error
198
-
199
- request = Web::Request.new(
200
- self,
201
- :put,
202
- "/projects/#{project_id}/files/#{file_id}",
203
- query
204
- )
205
-
206
- request.perform
207
- end
208
-
209
- def delete_file(file_id = nil, project_id = config.project_id)
210
- file_id || raise_parameter_is_required_error(:file_id)
211
- project_id || raise_project_id_is_required_error
212
-
213
- request = Web::Request.new(
214
- self,
215
- :delete,
216
- "/projects/#{project_id}/files/#{file_id}"
217
- )
218
-
219
- request.perform
220
- end
221
-
222
- def edit_file(file_id = nil, query = {}, project_id = config.project_id)
223
- file_id || raise_parameter_is_required_error(:file_id)
224
- project_id || raise_project_id_is_required_error
225
-
226
- request = Web::Request.new(
227
- self,
228
- :patch,
229
- "/projects/#{project_id}/files/#{file_id}",
230
- query
231
- )
232
-
233
- request.perform
234
- end
235
-
236
- def download_file(file_id = nil, destination = nil, project_id = config.project_id)
237
- destination || raise_parameter_is_required_error(:destination)
238
- file_id || raise_parameter_is_required_error(:file_id)
239
- project_id || raise_project_id_is_required_error
240
-
241
- request = Web::Request.new(
242
- self,
243
- :get,
244
- "/projects/#{project_id}/files/#{file_id}/download",
245
- {},
246
- {},
247
- destination
248
- )
249
-
250
- request.perform
251
- end
252
-
253
- # List file revisions.
254
- #
255
- # === Parameters
256
- #
257
- # * +:projectId+ [Integer] - Project Identifier. Get via list_projects. Can be initialized with the Crowdin Client
258
- # * +:fileId+ [Integer] - File Identifier. Get via list_files
259
- #
260
- # Optional:
261
- # * +:limit+ [Integer 1..500] - A maximum number of items to retrieve, default - 25
262
- # * +:offset+ [Integer >= 0] - A starting offset in the collection, default - 0
263
- #
264
- # === Example
265
- #
266
- # when you're initialized Crowdin Client with a project_id
267
- #
268
- # crowdin.list_file_revisions(your_file_id, limit: your_value)
269
- #
270
- # or you can specify project_id
271
- #
272
- # crowdin.list_file_revisions(your_file_id, { limit: your_value }, your_project_id)
273
- #
274
- def list_file_revisions(file_id = nil, query = {}, project_id = config.project_id)
275
- file_id || raise_parameter_is_required_error(:file_id)
276
- project_id || raise_project_id_is_required_error
277
-
278
- request = Web::Request.new(
279
- self,
280
- :get,
281
- "/projects/#{project_id}/files/#{file_id}/revisions",
282
- query
283
- )
284
-
285
- request.perform
286
- end
287
-
288
- def get_file_revision(file_id = nil, revision_id = nil, project_id = config.project_id)
289
- file_id || raise_parameter_is_required_error(:file_id)
290
- revision_id || raise_parameter_is_required_error(:revision_id)
291
- project_id || raise_project_id_is_required_error
292
-
293
- request = Web::Request.new(
294
- self,
295
- :get,
296
- "/projects/#{project_id}/files/#{file_id}/revisions/#{revision_id}"
297
- )
298
-
299
- request.perform
300
- end
301
- end
302
- end
303
- end
@@ -1,102 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Crowdin
4
- module ApiResources
5
- module Storages
6
- # Get storages list.
7
- #
8
- # === Parameters
9
- #
10
- # Optional:
11
- # * +:limit+ [Integer 1..500] - A maximum number of items to retrieve, default - 25
12
- # * +:offset+ [Integer >= 0] - A starting offset in the collection, default - 0
13
- #
14
- # === Example
15
- #
16
- # crowdin.list_projects(limit: your_value)
17
- #
18
- def list_storages(query = {})
19
- request = Web::Request.new(
20
- self,
21
- :get,
22
- '/storages',
23
- query
24
- )
25
-
26
- request.perform
27
- end
28
-
29
- # Add storage.
30
- #
31
- # === Parameters
32
- #
33
- # * +File+ - File class object or path to file
34
- #
35
- # === Example
36
- #
37
- # crowdin.add_storage(File.open('your_filename.extension', 'r'))
38
- # or
39
- # crowdin.add_storage('your_filename.extension')
40
- #
41
- def add_storage(file = nil)
42
- file || raise_parameter_is_required_error(:file)
43
-
44
- file = file.is_a?(File) ? file : File.open(file, 'r')
45
-
46
- request = Web::Request.new(
47
- self,
48
- :post,
49
- '/storages',
50
- file,
51
- { 'Content-Type' => 'application/octet-stream', 'Crowdin-API-FileName' => File.basename(file) }
52
- )
53
-
54
- request.perform
55
- end
56
-
57
- # Get storage information.
58
- #
59
- # === Parameters
60
- #
61
- # * +:storage_id+ [Integer] - Storage Identifier. Get via list_storages
62
- #
63
- # === Example
64
- #
65
- # crowdin.get_storage(your_storage_id)
66
- #
67
- def get_storage(storage_id = nil)
68
- storage_id || raise_parameter_is_required_error(:storage_id)
69
-
70
- request = Web::Request.new(
71
- self,
72
- :get,
73
- "/storages/#{storage_id}"
74
- )
75
-
76
- request.perform
77
- end
78
-
79
- # Delete storage.
80
- #
81
- # === Parameters
82
- #
83
- # * +:storage_id+ [Integer] - Storage Identifier. Get via list_storages
84
- #
85
- # === Example
86
- #
87
- # crowdin.delete_storage(your_storage_id)
88
- #
89
- def delete_storage(storage_id = nil)
90
- storage_id || raise_parameter_is_required_error(:storage_id)
91
-
92
- request = Web::Request.new(
93
- self,
94
- :delete,
95
- "/storages/#{storage_id}"
96
- )
97
-
98
- request.perform
99
- end
100
- end
101
- end
102
- end
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Crowdin
4
- module ApiResources
5
- module Workflows
6
- def list_workflow_steps(query = {}, project_id = config.project_id)
7
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
8
- project_id || raise_project_id_is_required_error
9
-
10
- request = Web::Request.new(
11
- self,
12
- :get,
13
- "/projects/#{project_id}/workflow-steps",
14
- query
15
- )
16
-
17
- request.perform
18
- end
19
-
20
- def get_workflow_step(step_id = nil, project_id = config.project_id)
21
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
22
- step_id || raise_parameter_is_required_error(:step_id)
23
- project_id || raise_project_id_is_required_error
24
-
25
- request = Web::Request.new(
26
- self,
27
- :get,
28
- "/projects/#{project_id}/workflow-steps/#{step_id}"
29
- )
30
-
31
- request.perform
32
- end
33
-
34
- def list_workflow_templates(query = {})
35
- request = Web::Request.new(
36
- self,
37
- :get,
38
- '/workflow-templates',
39
- query
40
- )
41
-
42
- request.perform
43
- end
44
-
45
- def get_workflow_template(template_id = nil)
46
- config.enterprise_mode? || raise_only_for_enterprise_mode_error
47
- template_id || raise_parameter_is_required_error(:template_id)
48
-
49
- request = Web::Request.new(
50
- self,
51
- :get,
52
- "/workflow-templates/#{template_id}"
53
- )
54
-
55
- request.perform
56
- end
57
- end
58
- end
59
- end