crowdin-api 1.2.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +102 -43
  3. data/README.md +37 -6
  4. data/bin/crowdin-console +1 -1
  5. data/crowdin-api.gemspec +1 -2
  6. data/lib/crowdin-api/api_resources/bundles.rb +81 -0
  7. data/lib/crowdin-api/{api-resources → api_resources}/dictionaries.rb +8 -10
  8. data/lib/crowdin-api/{api-resources → api_resources}/distributions.rb +25 -32
  9. data/lib/crowdin-api/{api-resources → api_resources}/glossaries.rb +64 -82
  10. data/lib/crowdin-api/{api-resources → api_resources}/labels.rb +28 -47
  11. data/lib/crowdin-api/api_resources/languages.rb +61 -0
  12. data/lib/crowdin-api/api_resources/machine_translation_engines.rb +79 -0
  13. data/lib/crowdin-api/api_resources/projects.rb +124 -0
  14. data/lib/crowdin-api/api_resources/reports.rb +120 -0
  15. data/lib/crowdin-api/{api-resources → api_resources}/screenshots.rb +47 -61
  16. data/lib/crowdin-api/{api-resources → api_resources}/source_files.rb +68 -131
  17. data/lib/crowdin-api/{api-resources → api_resources}/source_strings.rb +19 -24
  18. data/lib/crowdin-api/api_resources/storages.rb +54 -0
  19. data/lib/crowdin-api/{api-resources → api_resources}/string_comments.rb +18 -23
  20. data/lib/crowdin-api/{api-resources → api_resources}/string_translations.rb +64 -91
  21. data/lib/crowdin-api/{api-resources → api_resources}/tasks.rb +30 -41
  22. data/lib/crowdin-api/api_resources/teams.rb +135 -0
  23. data/lib/crowdin-api/{api-resources → api_resources}/translation_memory.rb +38 -52
  24. data/lib/crowdin-api/{api-resources → api_resources}/translation_status.rb +24 -30
  25. data/lib/crowdin-api/{api-resources → api_resources}/translations.rb +41 -58
  26. data/lib/crowdin-api/api_resources/users.rb +161 -0
  27. data/lib/crowdin-api/api_resources/vendors.rb +21 -0
  28. data/lib/crowdin-api/{api-resources → api_resources}/webhooks.rb +19 -24
  29. data/lib/crowdin-api/api_resources/workflows.rb +59 -0
  30. data/lib/crowdin-api/client/client.rb +134 -39
  31. data/lib/crowdin-api/client/configuration.rb +12 -12
  32. data/lib/crowdin-api/client/version.rb +1 -1
  33. data/lib/crowdin-api/core/errors.rb +1 -0
  34. data/lib/crowdin-api/core/errors_raisers.rb +1 -1
  35. data/lib/crowdin-api/core/fetch_all_extensions.rb +14 -0
  36. data/lib/crowdin-api/core/request.rb +50 -90
  37. data/lib/crowdin-api/core/send_request.rb +67 -0
  38. data/lib/crowdin-api.rb +18 -24
  39. data/spec/api_resources/bundles_spec.rb +61 -0
  40. data/spec/api_resources/dictionaries_spec.rb +23 -0
  41. data/spec/api_resources/distributions_spec.rb +71 -0
  42. data/spec/api_resources/glossaries_spec.rb +167 -0
  43. data/spec/api_resources/labels_spec.rb +71 -0
  44. data/spec/api_resources/languages_spec.rb +51 -0
  45. data/spec/api_resources/machine_translation_engines_spec.rb +63 -0
  46. data/spec/api_resources/projects_spec.rb +215 -0
  47. data/spec/api_resources/reports_spec.rb +95 -0
  48. data/spec/api_resources/screenshots_spec.rb +134 -0
  49. data/spec/api_resources/source_files_spec.rb +184 -0
  50. data/spec/api_resources/source_strings_spec.rb +51 -0
  51. data/spec/api_resources/storages_spec.rb +41 -0
  52. data/spec/api_resources/string_comments_spec.rb +51 -0
  53. data/spec/api_resources/string_translations_spec.rb +141 -0
  54. data/spec/api_resources/tasks_spec.rb +79 -0
  55. data/spec/api_resources/teams_spec.rb +100 -0
  56. data/spec/api_resources/translation_memory_spec.rb +114 -0
  57. data/spec/api_resources/translation_status_spec.rb +61 -0
  58. data/spec/api_resources/translations_spec.rb +107 -0
  59. data/spec/api_resources/users_spec.rb +117 -0
  60. data/spec/api_resources/vendors_spec.rb +13 -0
  61. data/spec/api_resources/webhooks_spec.rb +51 -0
  62. data/spec/api_resources/workflows_spec.rb +41 -0
  63. data/spec/spec_helper.rb +23 -2
  64. data/spec/unit/client_spec.rb +85 -0
  65. metadata +67 -43
  66. data/bin/setup +0 -6
  67. data/lib/crowdin-api/api-resources/languages.rb +0 -82
  68. data/lib/crowdin-api/api-resources/machine_translation_engines.rb +0 -74
  69. data/lib/crowdin-api/api-resources/projects.rb +0 -148
  70. data/lib/crowdin-api/api-resources/reports.rb +0 -138
  71. data/lib/crowdin-api/api-resources/storages.rb +0 -106
  72. data/lib/crowdin-api/api-resources/teams.rb +0 -144
  73. data/lib/crowdin-api/api-resources/users.rb +0 -129
  74. data/lib/crowdin-api/api-resources/vendors.rb +0 -21
  75. data/lib/crowdin-api/api-resources/workflows.rb +0 -62
  76. data/lib/crowdin-api/core/utils.rb +0 -10
  77. data/spec/client/client-instance_spec.rb +0 -14
  78. data/spec/client/configuration-instance_spec.rb +0 -72
@@ -7,26 +7,24 @@ module Crowdin
7
7
  project_id || raise_project_id_is_required_error
8
8
 
9
9
  request = Web::Request.new(
10
- self,
10
+ connection,
11
11
  :get,
12
- "/projects/#{project_id}/approvals",
13
- query
12
+ "#{config.target_api_url}/projects/#{project_id}/approvals",
13
+ { params: query }
14
14
  )
15
-
16
- request.perform
15
+ Web::SendRequest.new(request).perform
17
16
  end
18
17
 
19
18
  def add_approval(query = {}, project_id = config.project_id)
20
19
  project_id || raise_project_id_is_required_error
21
20
 
22
21
  request = Web::Request.new(
23
- self,
22
+ connection,
24
23
  :post,
25
- "/projects/#{project_id}/approvals",
26
- query
24
+ "#{config.target_api_url}/projects/#{project_id}/approvals",
25
+ { params: query }
27
26
  )
28
-
29
- request.perform
27
+ Web::SendRequest.new(request).perform
30
28
  end
31
29
 
32
30
  def get_approval(approval_id = nil, project_id = config.project_id)
@@ -34,12 +32,11 @@ module Crowdin
34
32
  project_id || raise_project_id_is_required_error
35
33
 
36
34
  request = Web::Request.new(
37
- self,
35
+ connection,
38
36
  :get,
39
- "/projects/#{project_id}/approvals/#{approval_id}"
37
+ "#{config.target_api_url}/projects/#{project_id}/approvals/#{approval_id}"
40
38
  )
41
-
42
- request.perform
39
+ Web::SendRequest.new(request).perform
43
40
  end
44
41
 
45
42
  def remove_approval(approval_id = nil, project_id = config.project_id)
@@ -47,12 +44,11 @@ module Crowdin
47
44
  project_id || raise_project_id_is_required_error
48
45
 
49
46
  request = Web::Request.new(
50
- self,
47
+ connection,
51
48
  :delete,
52
- "/projects/#{project_id}/approvals/#{approval_id}"
49
+ "#{config.target_api_url}/projects/#{project_id}/approvals/#{approval_id}"
53
50
  )
54
-
55
- request.perform
51
+ Web::SendRequest.new(request).perform
56
52
  end
57
53
 
58
54
  def list_language_translations(language_id = nil, query = {}, project_id = config.project_id)
@@ -60,54 +56,40 @@ module Crowdin
60
56
  project_id || raise_project_id_is_required_error
61
57
 
62
58
  request = Web::Request.new(
63
- self,
59
+ connection,
64
60
  :get,
65
- "/projects/#{project_id}/languages/#{language_id}/translations",
66
- query
61
+ "#{config.target_api_url}/projects/#{project_id}/languages/#{language_id}/translations",
62
+ { params: query }
67
63
  )
68
-
69
- request.perform
64
+ Web::SendRequest.new(request).perform
70
65
  end
71
66
 
72
67
  def list_string_translations(query = {}, project_id = config.project_id)
73
68
  project_id || raise_project_id_is_required_error
74
69
 
75
70
  request = Web::Request.new(
76
- self,
71
+ connection,
77
72
  :get,
78
- "/projects/#{project_id}/translations",
79
- query
73
+ "#{config.target_api_url}/projects/#{project_id}/translations",
74
+ { params: query }
80
75
  )
81
-
82
- request.perform
76
+ Web::SendRequest.new(request).perform
83
77
  end
84
78
 
85
79
  def add_translation(query = {}, project_id = config.project_id)
86
80
  project_id || raise_project_id_is_required_error
87
81
 
88
82
  request = Web::Request.new(
89
- self,
83
+ connection,
90
84
  :post,
91
- "/projects/#{project_id}/translations",
92
- query
85
+ "#{config.target_api_url}/projects/#{project_id}/translations",
86
+ { params: query }
93
87
  )
94
-
95
- request.perform
88
+ Web::SendRequest.new(request).perform
96
89
  end
97
90
 
98
- # For now Rest Client Resource aren't support payload for DELETE requests.
99
- # So we have workaround through Rest Client Execute for this case
100
91
  def delete_string_translations(query = {}, project_id = config.project_id)
101
- # project_id || raise_project_id_is_required_error
102
- #
103
- # request = Web::Request.new(
104
- # self,
105
- # :delete,
106
- # "/projects/#{project_id}/translations",
107
- # query
108
- # )
109
- #
110
- # request.perform
92
+ project_id || raise_project_id_is_required_error
111
93
 
112
94
  response = ::RestClient::Request.execute(
113
95
  {
@@ -117,77 +99,70 @@ module Crowdin
117
99
  }.merge(@options)
118
100
  )
119
101
 
120
- begin
121
- JSON.parse(response)
122
- rescue
123
- {}
124
- end
102
+ response.body.empty? ? response.code : JSON.parse(response.body)
103
+ rescue StandardError => e
104
+ e.message
125
105
  end
126
106
 
127
- def get_translation(trnslation_id = nil, query = {}, project_id = config.project_id)
128
- trnslation_id || raise_parameter_is_required_error(:trnslation_id)
129
- project_id || raise_project_id_is_required_error
107
+ def get_translation(translation_id = nil, query = {}, project_id = config.project_id)
108
+ translation_id || raise_parameter_is_required_error(:translation_id)
109
+ project_id || raise_project_id_is_required_error
130
110
 
131
111
  request = Web::Request.new(
132
- self,
112
+ connection,
133
113
  :get,
134
- "/projects/#{project_id}/translations/#{trnslation_id}",
135
- query
114
+ "#{config.target_api_url}/projects/#{project_id}/translations/#{translation_id}",
115
+ { params: query }
136
116
  )
137
-
138
- request.perform
117
+ Web::SendRequest.new(request).perform
139
118
  end
140
119
 
141
- def restore_translation(trnslation_id = nil, project_id = config.project_id)
142
- trnslation_id || raise_parameter_is_required_error(:trnslation_id)
143
- project_id || raise_project_id_is_required_error
120
+ def restore_translation(translation_id = nil, project_id = config.project_id)
121
+ translation_id || raise_parameter_is_required_error(:translation_id)
122
+ project_id || raise_project_id_is_required_error
144
123
 
145
124
  request = Web::Request.new(
146
- self,
125
+ connection,
147
126
  :put,
148
- "/projects/#{project_id}/translations/#{trnslation_id}"
127
+ "#{config.target_api_url}/projects/#{project_id}/translations/#{translation_id}"
149
128
  )
150
-
151
- request.perform
129
+ Web::SendRequest.new(request).perform
152
130
  end
153
131
 
154
- def delete_translation(trnslation_id = nil, project_id = config.project_id)
155
- trnslation_id || raise_parameter_is_required_error(:trnslation_id)
156
- project_id || raise_project_id_is_required_error
132
+ def delete_translation(translation_id = nil, project_id = config.project_id)
133
+ translation_id || raise_parameter_is_required_error(:translation_id)
134
+ project_id || raise_project_id_is_required_error
157
135
 
158
136
  request = Web::Request.new(
159
- self,
137
+ connection,
160
138
  :delete,
161
- "/projects/#{project_id}/translations/#{trnslation_id}"
139
+ "#{config.target_api_url}/projects/#{project_id}/translations/#{translation_id}"
162
140
  )
163
-
164
- request.perform
141
+ Web::SendRequest.new(request).perform
165
142
  end
166
143
 
167
144
  def list_translation_votes(query = {}, project_id = config.project_id)
168
145
  project_id || raise_project_id_is_required_error
169
146
 
170
147
  request = Web::Request.new(
171
- self,
148
+ connection,
172
149
  :get,
173
- "/projects/#{project_id}/votes",
174
- query
150
+ "#{config.target_api_url}/projects/#{project_id}/votes",
151
+ { params: query }
175
152
  )
176
-
177
- request.perform
153
+ Web::SendRequest.new(request).perform
178
154
  end
179
155
 
180
156
  def add_vote(query = {}, project_id = config.project_id)
181
157
  project_id || raise_project_id_is_required_error
182
158
 
183
159
  request = Web::Request.new(
184
- self,
160
+ connection,
185
161
  :post,
186
- "/projects/#{project_id}/votes",
187
- query
162
+ "#{config.target_api_url}/projects/#{project_id}/votes",
163
+ { params: query }
188
164
  )
189
-
190
- request.perform
165
+ Web::SendRequest.new(request).perform
191
166
  end
192
167
 
193
168
  def get_vote(vote_id = nil, project_id = config.project_id)
@@ -195,25 +170,23 @@ module Crowdin
195
170
  project_id || raise_project_id_is_required_error
196
171
 
197
172
  request = Web::Request.new(
198
- self,
173
+ connection,
199
174
  :get,
200
- "/projects/#{project_id}/votes/#{vote_id}"
175
+ "#{config.target_api_url}/projects/#{project_id}/votes/#{vote_id}"
201
176
  )
202
-
203
- request.perform
177
+ Web::SendRequest.new(request).perform
204
178
  end
205
179
 
206
- def edit_screenshot(vote_id = nil, project_id = config.project_id)
180
+ def cancel_vote(vote_id = nil, project_id = config.project_id)
207
181
  vote_id || raise_parameter_is_required_error(:vote_id)
208
182
  project_id || raise_project_id_is_required_error
209
183
 
210
184
  request = Web::Request.new(
211
- self,
185
+ connection,
212
186
  :delete,
213
- "/projects/#{project_id}/votes/#{vote_id}"
187
+ "#{config.target_api_url}/projects/#{project_id}/votes/#{vote_id}"
214
188
  )
215
-
216
- request.perform
189
+ Web::SendRequest.new(request).perform
217
190
  end
218
191
  end
219
192
  end
@@ -7,26 +7,24 @@ module Crowdin
7
7
  project_id || raise_project_id_is_required_error
8
8
 
9
9
  request = Web::Request.new(
10
- self,
10
+ connection,
11
11
  :get,
12
- "/projects/#{project_id}/tasks",
13
- query
12
+ "#{config.target_api_url}/projects/#{project_id}/tasks",
13
+ { params: query }
14
14
  )
15
-
16
- request.perform
15
+ Web::SendRequest.new(request).perform
17
16
  end
18
17
 
19
18
  def add_task(query = {}, project_id = config.project_id)
20
19
  project_id || raise_project_id_is_required_error
21
20
 
22
21
  request = Web::Request.new(
23
- self,
22
+ connection,
24
23
  :post,
25
- "/projects/#{project_id}/tasks",
26
- query
24
+ "#{config.target_api_url}/projects/#{project_id}/tasks",
25
+ { params: query }
27
26
  )
28
-
29
- request.perform
27
+ Web::SendRequest.new(request).perform
30
28
  end
31
29
 
32
30
  def export_task_strings(task_id = nil, destination = nil, project_id = config.project_id)
@@ -34,15 +32,11 @@ module Crowdin
34
32
  project_id || raise_project_id_is_required_error
35
33
 
36
34
  request = Web::Request.new(
37
- self,
35
+ connection,
38
36
  :post,
39
- "/projects/#{project_id}/tasks/#{task_id}/exports",
40
- {},
41
- {},
42
- destination
37
+ "#{config.target_api_url}/projects/#{project_id}/tasks/#{task_id}/exports"
43
38
  )
44
-
45
- request.perform
39
+ Web::SendRequest.new(request, destination).perform
46
40
  end
47
41
 
48
42
  def get_task(task_id = nil, project_id = config.project_id)
@@ -50,12 +44,11 @@ module Crowdin
50
44
  project_id || raise_project_id_is_required_error
51
45
 
52
46
  request = Web::Request.new(
53
- self,
47
+ connection,
54
48
  :get,
55
- "/projects/#{project_id}/tasks/#{task_id}"
49
+ "#{config.target_api_url}/projects/#{project_id}/tasks/#{task_id}"
56
50
  )
57
-
58
- request.perform
51
+ Web::SendRequest.new(request).perform
59
52
  end
60
53
 
61
54
  def delete_task(task_id = nil, project_id = config.project_id)
@@ -63,12 +56,11 @@ module Crowdin
63
56
  project_id || raise_project_id_is_required_error
64
57
 
65
58
  request = Web::Request.new(
66
- self,
59
+ connection,
67
60
  :delete,
68
- "/projects/#{project_id}/tasks/#{task_id}"
61
+ "#{config.target_api_url}/projects/#{project_id}/tasks/#{task_id}"
69
62
  )
70
-
71
- request.perform
63
+ Web::SendRequest.new(request).perform
72
64
  end
73
65
 
74
66
  def edit_task(task_id = nil, query = {}, project_id = config.project_id)
@@ -76,37 +68,34 @@ module Crowdin
76
68
  project_id || raise_project_id_is_required_error
77
69
 
78
70
  request = Web::Request.new(
79
- self,
71
+ connection,
80
72
  :patch,
81
- "/projects/#{project_id}/tasks/#{task_id}",
82
- query
73
+ "#{config.target_api_url}/projects/#{project_id}/tasks/#{task_id}",
74
+ { params: query }
83
75
  )
84
-
85
- request.perform
76
+ Web::SendRequest.new(request).perform
86
77
  end
87
78
 
88
79
  def list_user_tasks(query = {})
89
80
  request = Web::Request.new(
90
- self,
81
+ connection,
91
82
  :get,
92
- '/user/tasks',
93
- query
83
+ "#{config.target_api_url}/user/tasks",
84
+ { params: query }
94
85
  )
95
-
96
- request.perform
86
+ Web::SendRequest.new(request).perform
97
87
  end
98
88
 
99
89
  def edit_task_archived_status(task_id = nil, query = {})
100
90
  task_id || raise_parameter_is_required_error(:task_id)
101
91
 
102
92
  request = Web::Request.new(
103
- self,
104
- :get,
105
- "/user/tasks/#{task_id}",
106
- query
93
+ connection,
94
+ :patch,
95
+ "#{config.target_api_url}/user/tasks/#{task_id}",
96
+ { params: query }
107
97
  )
108
-
109
- request.perform
98
+ Web::SendRequest.new(request).perform
110
99
  end
111
100
  end
112
101
  end
@@ -0,0 +1,135 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Crowdin
4
+ module ApiResources
5
+ module Teams
6
+ # -- For Enterprise mode only --
7
+
8
+ def add_team_to_project(query = {}, project_id = config.project_id)
9
+ enterprise_mode? || raise_only_for_enterprise_mode_error
10
+ project_id || raise_project_id_is_required_error
11
+
12
+ request = Web::Request.new(
13
+ connection,
14
+ :post,
15
+ "#{config.target_api_url}/projects/#{project_id}/teams",
16
+ { params: query }
17
+ )
18
+ Web::SendRequest.new(request).perform
19
+ end
20
+
21
+ def list_teams(query = {})
22
+ enterprise_mode? || raise_only_for_enterprise_mode_error
23
+
24
+ request = Web::Request.new(
25
+ connection,
26
+ :get,
27
+ "#{config.target_api_url}/teams",
28
+ { params: query }
29
+ )
30
+ Web::SendRequest.new(request).perform
31
+ end
32
+
33
+ def add_team(query = {})
34
+ enterprise_mode? || raise_only_for_enterprise_mode_error
35
+
36
+ request = Web::Request.new(
37
+ connection,
38
+ :post,
39
+ "#{config.target_api_url}/teams",
40
+ { params: query }
41
+ )
42
+ Web::SendRequest.new(request).perform
43
+ end
44
+
45
+ def get_team(team_id = nil, query = {})
46
+ enterprise_mode? || raise_only_for_enterprise_mode_error
47
+ team_id || raise_parameter_is_required_error(:team_id)
48
+
49
+ request = Web::Request.new(
50
+ connection,
51
+ :get,
52
+ "#{config.target_api_url}/teams/#{team_id}",
53
+ { params: query }
54
+ )
55
+ Web::SendRequest.new(request).perform
56
+ end
57
+
58
+ def delete_team(team_id = nil)
59
+ enterprise_mode? || raise_only_for_enterprise_mode_error
60
+ team_id || raise_parameter_is_required_error(:team_id)
61
+
62
+ request = Web::Request.new(
63
+ connection,
64
+ :delete,
65
+ "#{config.target_api_url}/teams/#{team_id}"
66
+ )
67
+ Web::SendRequest.new(request).perform
68
+ end
69
+
70
+ def edit_team(team_id = nil, query = {})
71
+ enterprise_mode? || raise_only_for_enterprise_mode_error
72
+ team_id || raise_parameter_is_required_error(:team_id)
73
+
74
+ request = Web::Request.new(
75
+ connection,
76
+ :patch,
77
+ "#{config.target_api_url}/teams/#{team_id}",
78
+ { params: query }
79
+ )
80
+ Web::SendRequest.new(request).perform
81
+ end
82
+
83
+ def team_members_list(team_id = nil, query = {})
84
+ enterprise_mode? || raise_only_for_enterprise_mode_error
85
+ team_id || raise_parameter_is_required_error(:team_id)
86
+
87
+ request = Web::Request.new(
88
+ connection,
89
+ :get,
90
+ "#{config.target_api_url}/teams/#{team_id}/members",
91
+ { params: query }
92
+ )
93
+ Web::SendRequest.new(request).perform
94
+ end
95
+
96
+ def add_team_members(team_id = nil, query = {})
97
+ enterprise_mode? || raise_only_for_enterprise_mode_error
98
+ team_id || raise_parameter_is_required_error(:team_id)
99
+
100
+ request = Web::Request.new(
101
+ connection,
102
+ :post,
103
+ "#{config.target_api_url}/teams/#{team_id}/members",
104
+ { params: query }
105
+ )
106
+ Web::SendRequest.new(request).perform
107
+ end
108
+
109
+ def delete_all_team_members(team_id = nil)
110
+ enterprise_mode? || raise_only_for_enterprise_mode_error
111
+ team_id || raise_parameter_is_required_error(:team_id)
112
+
113
+ request = Web::Request.new(
114
+ connection,
115
+ :delete,
116
+ "#{config.target_api_url}/teams/#{team_id}/members"
117
+ )
118
+ Web::SendRequest.new(request).perform
119
+ end
120
+
121
+ def delete_team_member(team_id = nil, member_id = nil)
122
+ enterprise_mode? || raise_only_for_enterprise_mode_error
123
+ team_id || raise_parameter_is_required_error(:team_id)
124
+ member_id || raise_parameter_is_required_error(:member_id)
125
+
126
+ request = Web::Request.new(
127
+ connection,
128
+ :delete,
129
+ "#{config.target_api_url}/teams/#{team_id}/members/#{member_id}"
130
+ )
131
+ Web::SendRequest.new(request).perform
132
+ end
133
+ end
134
+ end
135
+ end