ruby-lokalise-api 2.1.1 → 2.2.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/CHANGELOG.md +5 -0
- data/README.md +168 -5
- data/lib/ruby-lokalise-api.rb +2 -0
- data/lib/ruby-lokalise-api/client.rb +1 -0
- data/lib/ruby-lokalise-api/collections/base.rb +1 -1
- data/lib/ruby-lokalise-api/collections/team_user_group.rb +13 -0
- data/lib/ruby-lokalise-api/data/attributes.json +10 -0
- data/lib/ruby-lokalise-api/request.rb +1 -1
- data/lib/ruby-lokalise-api/resources/base.rb +31 -13
- data/lib/ruby-lokalise-api/resources/team_user_group.rb +20 -0
- data/lib/ruby-lokalise-api/rest/team_user_group.rb +105 -0
- data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +6 -4
- data/lib/ruby-lokalise-api/version.rb +1 -1
- data/spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb +192 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9a5f36579a974c5603be3b92103e0aebce9284a26919cbfbe87ce50b4f99669f
|
4
|
+
data.tar.gz: a36515189ac1c9242c5e21417ac52bcd27a0b43616d23e0881f41096bd03a778
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d60b0a73b05773d852d4694e725e89e908045b6683f9c5611448f23368e490cdb05bb22a29c663671cf6e8f0294db186a198ac7e7bb2a67d94173ce1b98fd7f
|
7
|
+
data.tar.gz: 500835c3d7f8c4a49691958abc3a5bf36a9f15ddbe3694e2ec02174524f21918f145d28f328d7e17f32e0bed866e87626be7e14a3b844984f65599bb01cc07b8
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
# Changelog
|
2
|
+
## 2.2.0 (19-May-19)
|
3
|
+
|
4
|
+
* Added support for [`TeamUserGroup` endpoint](https://lokalise.co/api2docs/ruby/#resource-team-user-groups)
|
5
|
+
* Enhancements to method chaining
|
6
|
+
|
2
7
|
## 2.1.1 (17-May-19)
|
3
8
|
|
4
9
|
* Incorporate API updates (new attributes, mostly creation and update timestamps)
|
data/README.md
CHANGED
@@ -26,6 +26,7 @@ Official opinionated Ruby interface for the [Lokalise API](https://lokalise.co/a
|
|
26
26
|
+ [Tasks](#tasks)
|
27
27
|
+ [Teams](#teams)
|
28
28
|
+ [Team users](#team-users)
|
29
|
+
+ [Team user groups](#team-user-groups)
|
29
30
|
+ [Translations](#translations)
|
30
31
|
+ [Translation Providers](#translation-providers)
|
31
32
|
* [Additional Info](#additional-info)
|
@@ -1073,11 +1074,11 @@ task.destroy
|
|
1073
1074
|
[Doc](https://lokalise.co/api2docs/ruby/#transition-retrieve-a-team-user-get)
|
1074
1075
|
|
1075
1076
|
```ruby
|
1076
|
-
@client.team_user(team_id, user_id)
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1077
|
+
@client.team_user(team_id, user_id) # Input:
|
1078
|
+
## team_id (string, required)
|
1079
|
+
## user_id (string, required)
|
1080
|
+
# Output:
|
1081
|
+
## Team user
|
1081
1082
|
```
|
1082
1083
|
|
1083
1084
|
#### Update team user
|
@@ -1120,6 +1121,168 @@ user = @client.team_user('team_id', 'user_id')
|
|
1120
1121
|
user.destroy
|
1121
1122
|
```
|
1122
1123
|
|
1124
|
+
### Team user groups
|
1125
|
+
|
1126
|
+
[Team user group attributes](https://lokalise.co/api2docs/ruby/#object-team-user-groups)
|
1127
|
+
|
1128
|
+
#### Fetch team user groups
|
1129
|
+
|
1130
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-list-all-groups-get)
|
1131
|
+
|
1132
|
+
```ruby
|
1133
|
+
@client.team_user_groups(team_id, params = {}) # Input:
|
1134
|
+
## team_id (string, required)
|
1135
|
+
## params (hash)
|
1136
|
+
### :page and :limit
|
1137
|
+
# Output:
|
1138
|
+
## Collection of team user groups
|
1139
|
+
```
|
1140
|
+
|
1141
|
+
#### Fetch a single group
|
1142
|
+
|
1143
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-retrieve-a-group-get)
|
1144
|
+
|
1145
|
+
```ruby
|
1146
|
+
@client.team_user_group(team_id, group_id) # Input:
|
1147
|
+
## team_id (string, required)
|
1148
|
+
## group_id (string, required)
|
1149
|
+
# Output:
|
1150
|
+
## Group
|
1151
|
+
```
|
1152
|
+
|
1153
|
+
#### Create group
|
1154
|
+
|
1155
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-create-a-group-post)
|
1156
|
+
|
1157
|
+
```ruby
|
1158
|
+
@client.create_team_user_group(team_id, params) # Input:
|
1159
|
+
## team_id (string, required)
|
1160
|
+
## params (hash, required):
|
1161
|
+
### :name (string, required)
|
1162
|
+
### :is_reviewer (boolean, required)
|
1163
|
+
### :is_admin (boolean, required)
|
1164
|
+
### :admin_rights (array) - required only if is_admin is true
|
1165
|
+
### :languages (array of hashes) - required if is_admin is false
|
1166
|
+
# Output:
|
1167
|
+
## Updated group
|
1168
|
+
```
|
1169
|
+
|
1170
|
+
#### Update group
|
1171
|
+
|
1172
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-update-a-group-put)
|
1173
|
+
|
1174
|
+
```ruby
|
1175
|
+
@client.update_team_user_group(team_id, group_id, params) # Input:
|
1176
|
+
## team_id (string, required)
|
1177
|
+
## group_id (string, required)
|
1178
|
+
## params (hash, required):
|
1179
|
+
### :name (string, required)
|
1180
|
+
### :is_reviewer (boolean, required)
|
1181
|
+
### :is_admin (boolean, required)
|
1182
|
+
### :admin_rights (array) - required only if is_admin is true
|
1183
|
+
### :languages (array of hashes) - required if is_admin is false
|
1184
|
+
# Output:
|
1185
|
+
## Updated group
|
1186
|
+
```
|
1187
|
+
|
1188
|
+
Alternatively:
|
1189
|
+
|
1190
|
+
```ruby
|
1191
|
+
group = @client.team_user_group('team_id', 'group_id')
|
1192
|
+
group.update(params)
|
1193
|
+
```
|
1194
|
+
|
1195
|
+
#### Add projects to group
|
1196
|
+
|
1197
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-add-projects-to-group-put)
|
1198
|
+
|
1199
|
+
```ruby
|
1200
|
+
@client.add_projects_to_group(team_id, group_id, project_ids) # Input:
|
1201
|
+
## team_id (string, required)
|
1202
|
+
## group_id (string, required)
|
1203
|
+
## project_ids (string or array, required) - project ids that you would like to add to this group
|
1204
|
+
```
|
1205
|
+
|
1206
|
+
Alternatively:
|
1207
|
+
|
1208
|
+
```ruby
|
1209
|
+
group = @client.team_user_group('team_id', 'group_id')
|
1210
|
+
group.add_projects projects: [project_id1, project_id2]
|
1211
|
+
```
|
1212
|
+
|
1213
|
+
#### Remove projects from group
|
1214
|
+
|
1215
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-remove-projects-from-group-put)
|
1216
|
+
|
1217
|
+
```ruby
|
1218
|
+
@client.remove_projects_from_group(team_id, group_id, project_ids) # Input:
|
1219
|
+
## team_id (string, required)
|
1220
|
+
## group_id (string, required)
|
1221
|
+
## project_ids (string or array, required) - project ids that you would like to remove from this group
|
1222
|
+
```
|
1223
|
+
|
1224
|
+
Alternatively:
|
1225
|
+
|
1226
|
+
```ruby
|
1227
|
+
group = @client.team_user_group('team_id', 'group_id')
|
1228
|
+
group.remove_projects projects: [project_id1, project_id2]
|
1229
|
+
```
|
1230
|
+
|
1231
|
+
#### Add users (members) to group
|
1232
|
+
|
1233
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-add-members-to-group-put)
|
1234
|
+
|
1235
|
+
```ruby
|
1236
|
+
@client.add_users_to_group(team_id, group_id, user_ids) # Input:
|
1237
|
+
## team_id (string, required)
|
1238
|
+
## group_id (string, required)
|
1239
|
+
## user_ids (string or array, required) - user ids that you would like to add to this group
|
1240
|
+
```
|
1241
|
+
|
1242
|
+
Alternatively:
|
1243
|
+
|
1244
|
+
```ruby
|
1245
|
+
group = @client.team_user_group('team_id', 'group_id')
|
1246
|
+
group.add_users users: [user_id1, user_id2]
|
1247
|
+
```
|
1248
|
+
|
1249
|
+
#### Remove users (members) from group
|
1250
|
+
|
1251
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-remove-members-from-group-put)
|
1252
|
+
|
1253
|
+
```ruby
|
1254
|
+
@client.remove_users_from_group(team_id, group_id, user_ids) # Input:
|
1255
|
+
## team_id (string, required)
|
1256
|
+
## group_id (string, required)
|
1257
|
+
## user_ids (string or array, required) - user ids that you would like to add to this group
|
1258
|
+
```
|
1259
|
+
|
1260
|
+
Alternatively:
|
1261
|
+
|
1262
|
+
```ruby
|
1263
|
+
group = @client.team_user_group('team_id', 'group_id')
|
1264
|
+
group.remove_users users: [user_id1, user_id2]
|
1265
|
+
```
|
1266
|
+
|
1267
|
+
#### Destroy group
|
1268
|
+
|
1269
|
+
[Doc](https://lokalise.co/api2docs/ruby/#transition-delete-a-group-delete)
|
1270
|
+
|
1271
|
+
```ruby
|
1272
|
+
@client.destroy_team_user_group(team_id, group_id) # Input:
|
1273
|
+
## team_id (string, required)
|
1274
|
+
## group_id (string, required)
|
1275
|
+
# Output:
|
1276
|
+
## Hash with "team_id" and "group_deleted" set to "true"
|
1277
|
+
```
|
1278
|
+
|
1279
|
+
Alternatively:
|
1280
|
+
|
1281
|
+
```ruby
|
1282
|
+
group = @client.team_user_group('team_id', 'group_id')
|
1283
|
+
group.destroy
|
1284
|
+
```
|
1285
|
+
|
1123
1286
|
### Translations
|
1124
1287
|
|
1125
1288
|
[Translation attributes](https://lokalise.co/api2docs/ruby/#resource-translations)
|
data/lib/ruby-lokalise-api.rb
CHANGED
@@ -29,6 +29,7 @@ require 'ruby-lokalise-api/resources/team'
|
|
29
29
|
require 'ruby-lokalise-api/resources/order'
|
30
30
|
require 'ruby-lokalise-api/resources/payment_card'
|
31
31
|
require 'ruby-lokalise-api/resources/translation_provider'
|
32
|
+
require 'ruby-lokalise-api/resources/team_user_group'
|
32
33
|
|
33
34
|
require 'ruby-lokalise-api/collections/base'
|
34
35
|
require 'ruby-lokalise-api/collections/project'
|
@@ -48,6 +49,7 @@ require 'ruby-lokalise-api/collections/screenshot'
|
|
48
49
|
require 'ruby-lokalise-api/collections/order'
|
49
50
|
require 'ruby-lokalise-api/collections/payment_card'
|
50
51
|
require 'ruby-lokalise-api/collections/translation_provider'
|
52
|
+
require 'ruby-lokalise-api/collections/team_user_group'
|
51
53
|
|
52
54
|
require 'ruby-lokalise-api/client'
|
53
55
|
|
@@ -13,6 +13,7 @@ require 'ruby-lokalise-api/rest/screenshots'
|
|
13
13
|
require 'ruby-lokalise-api/rest/orders'
|
14
14
|
require 'ruby-lokalise-api/rest/payment_cards'
|
15
15
|
require 'ruby-lokalise-api/rest/translation_providers'
|
16
|
+
require 'ruby-lokalise-api/rest/team_user_group'
|
16
17
|
|
17
18
|
module Lokalise
|
18
19
|
class Client
|
@@ -84,7 +84,7 @@ module Lokalise
|
|
84
84
|
# Collection example: `{ "content": {"comments": [ ... ]} }`
|
85
85
|
def produce_collection_for(response)
|
86
86
|
model_class = self.class.name.base_class_name
|
87
|
-
data_key_plural = data_key_for model_class, true
|
87
|
+
data_key_plural = data_key_for model_class, true, true
|
88
88
|
|
89
89
|
# Fetch collection data and instantiate an individual resource for each object
|
90
90
|
# We also preserve the `client` to be able to chain API methods later
|
@@ -156,6 +156,16 @@
|
|
156
156
|
"role",
|
157
157
|
"created_at_timestamp"
|
158
158
|
],
|
159
|
+
"team_user_group": [
|
160
|
+
"group_id",
|
161
|
+
"name",
|
162
|
+
"permissions",
|
163
|
+
"created_at",
|
164
|
+
"created_at_timestamp",
|
165
|
+
"team_id",
|
166
|
+
"projects",
|
167
|
+
"members"
|
168
|
+
],
|
159
169
|
"translation": [
|
160
170
|
"translation_id",
|
161
171
|
"key_id",
|
@@ -41,7 +41,7 @@ module Lokalise
|
|
41
41
|
|
42
42
|
# Get rid of double slashes in the `path`, leading and trailing slash
|
43
43
|
def prepare(path)
|
44
|
-
path.gsub(%r{\A/}, '').gsub(%r{//}, '/').gsub(%r{
|
44
|
+
path.gsub(%r{\A/}, '').gsub(%r{//}, '/').gsub(%r{/+\z}, '')
|
45
45
|
end
|
46
46
|
|
47
47
|
def respond_with(response, client)
|
@@ -35,15 +35,19 @@ module Lokalise
|
|
35
35
|
super
|
36
36
|
end
|
37
37
|
|
38
|
-
# Defines
|
39
|
-
#
|
38
|
+
# Defines CRUD instance methods. In the simplest case it delegates work to the
|
39
|
+
# class method. In more complex case it is possible to specify sub-path and the
|
40
|
+
# class method name to call.
|
41
|
+
# Usage: `supports :update, :destroy, [:complex_method, '/sub/path', :update]`
|
40
42
|
def supports(*methods)
|
41
|
-
methods.each do |
|
43
|
+
methods.each do |m_data|
|
44
|
+
method_name, sub_path, c_method = m_data.is_a?(Array) ? m_data : [m_data, '', m_data]
|
42
45
|
define_method method_name do |params = {}|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
46
|
+
path = instance_variable_get(:@path)
|
47
|
+
# If there's a sub_path, preserve the initial path to allow further chaining
|
48
|
+
params = params.merge(_initial_path: path) if sub_path
|
49
|
+
self.class.send c_method, instance_variable_get(:@client),
|
50
|
+
path + sub_path, params
|
47
51
|
end
|
48
52
|
end
|
49
53
|
end
|
@@ -78,17 +82,31 @@ module Lokalise
|
|
78
82
|
def object_from(response, params)
|
79
83
|
model_class = name.base_class_name
|
80
84
|
data_key_plural = data_key_for model_class, true
|
85
|
+
# Preserve the initial path to allow chaining
|
86
|
+
response['path'] = params.delete(:_initial_path) if params.key?(:_initial_path)
|
81
87
|
|
82
|
-
if response['content'].key?
|
83
|
-
|
84
|
-
params
|
88
|
+
if response['content'].key?(data_key_plural)
|
89
|
+
produce_collection model_class, response, params
|
85
90
|
else
|
86
|
-
|
91
|
+
produce_resource model_class, response
|
87
92
|
end
|
88
93
|
end
|
89
|
-
end
|
90
94
|
|
91
|
-
|
95
|
+
def produce_resource(model_class, response)
|
96
|
+
data_key_singular = data_key_for model_class
|
97
|
+
|
98
|
+
if response['content'].key? data_key_singular
|
99
|
+
data = response['content'].delete data_key_singular
|
100
|
+
response['content'].merge! data
|
101
|
+
end
|
102
|
+
|
103
|
+
new response
|
104
|
+
end
|
105
|
+
|
106
|
+
def produce_collection(model_class, response, params)
|
107
|
+
Module.const_get("Lokalise::Collections::#{model_class}").new(response, params)
|
108
|
+
end
|
109
|
+
end
|
92
110
|
|
93
111
|
# Generates path for the individual resource based on the path for the collection
|
94
112
|
def infer_path_from(response)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Lokalise
|
2
|
+
module Resources
|
3
|
+
class TeamUserGroup < Base
|
4
|
+
DATA_KEY = 'Group'.freeze
|
5
|
+
ID_KEY = 'group'.freeze
|
6
|
+
supports :update, :destroy,
|
7
|
+
[:add_projects, '/projects/add', :update],
|
8
|
+
[:remove_projects, '/projects/remove', :update],
|
9
|
+
[:add_users, '/members/add', :update],
|
10
|
+
[:remove_users, '/members/remove', :update]
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def endpoint(team_id, team_user_group_id = nil, *actions)
|
14
|
+
path_from teams: team_id,
|
15
|
+
groups: [team_user_group_id, *actions]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
module Lokalise
|
2
|
+
class Client
|
3
|
+
# Returns all team user groups for the given team
|
4
|
+
#
|
5
|
+
# @see https://lokalise.co/api2docs/curl/#transition-list-all-groups-get
|
6
|
+
# @return [Lokalise::Collection::TeamUserGroup<Lokalise::Resources::TeamUserGroup>]
|
7
|
+
# @param team_id [String]
|
8
|
+
# @param params [Hash]
|
9
|
+
def team_user_groups(team_id, params = {})
|
10
|
+
c_r Lokalise::Collections::TeamUserGroup, :all, team_id, params
|
11
|
+
end
|
12
|
+
|
13
|
+
# Returns team user from the given team
|
14
|
+
#
|
15
|
+
# @see https://lokalise.co/api2docs/curl/#transition-retrieve-a-group-get
|
16
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
17
|
+
# @param team_id [String]
|
18
|
+
# @param group_id [String, Integer]
|
19
|
+
def team_user_group(team_id, group_id)
|
20
|
+
c_r Lokalise::Resources::TeamUserGroup, :find, [team_id, group_id]
|
21
|
+
end
|
22
|
+
|
23
|
+
# Creates team user group
|
24
|
+
#
|
25
|
+
# @see https://lokalise.co/api2docs/curl/#resource-team-user-groups
|
26
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
27
|
+
# @param params [Hash]
|
28
|
+
def create_team_user_group(team_id, params)
|
29
|
+
c_r Lokalise::Resources::TeamUserGroup, :create, team_id, params
|
30
|
+
end
|
31
|
+
|
32
|
+
# Updates team user group for the given team
|
33
|
+
#
|
34
|
+
# @see https://lokalise.co/api2docs/curl/#transition-update-a-group-put
|
35
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
36
|
+
# @param team_id [String]
|
37
|
+
# @param group_id [String, Integer]
|
38
|
+
# @param params [Hash]
|
39
|
+
def update_team_user_group(team_id, group_id, params)
|
40
|
+
c_r Lokalise::Resources::TeamUserGroup, :update, [team_id, group_id], params
|
41
|
+
end
|
42
|
+
|
43
|
+
# Deletes team user group from the given team
|
44
|
+
#
|
45
|
+
# @see https://lokalise.co/api2docs/curl/#transition-delete-a-group-delete
|
46
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
47
|
+
# @param team_id [String]
|
48
|
+
# @param group_id [String, Integer]
|
49
|
+
def destroy_team_user_group(team_id, group_id)
|
50
|
+
c_r Lokalise::Resources::TeamUserGroup, :destroy, [team_id, group_id]
|
51
|
+
end
|
52
|
+
|
53
|
+
# Adds projects to the given group
|
54
|
+
#
|
55
|
+
# @see https://lokalise.co/api2docs/curl/#transition-add-projects-to-group-put
|
56
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
57
|
+
# @param team_id [String]
|
58
|
+
# @param group_id [String, Integer]
|
59
|
+
# @param project_ids [String, Integer, Array<String>, Array<Integer>]
|
60
|
+
def add_projects_to_group(team_id, group_id, project_ids)
|
61
|
+
c_r Lokalise::Resources::TeamUserGroup, :update,
|
62
|
+
[team_id, group_id, 'projects', 'add'],
|
63
|
+
project_ids, :projects
|
64
|
+
end
|
65
|
+
|
66
|
+
# Removes projects from the given group
|
67
|
+
#
|
68
|
+
# @see https://lokalise.co/api2docs/curl/#transition-remove-projects-from-group-put
|
69
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
70
|
+
# @param team_id [String]
|
71
|
+
# @param group_id [String, Integer]
|
72
|
+
# @param project_ids [String, Integer, Array<String>, Array<Integer>]
|
73
|
+
def remove_projects_from_group(team_id, group_id, project_ids)
|
74
|
+
c_r Lokalise::Resources::TeamUserGroup, :update,
|
75
|
+
[team_id, group_id, 'projects', 'remove'],
|
76
|
+
project_ids, :projects
|
77
|
+
end
|
78
|
+
|
79
|
+
# Adds users to the given group
|
80
|
+
#
|
81
|
+
# @see https://lokalise.co/api2docs/curl/#transition-add-members-to-group-put
|
82
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
83
|
+
# @param team_id [String]
|
84
|
+
# @param group_id [String, Integer]
|
85
|
+
# @param users_ids [String, Integer, Array<String>, Array<Integer>]
|
86
|
+
def add_users_to_group(team_id, group_id, users_ids)
|
87
|
+
c_r Lokalise::Resources::TeamUserGroup, :update,
|
88
|
+
[team_id, group_id, 'members', 'add'],
|
89
|
+
users_ids, :users
|
90
|
+
end
|
91
|
+
|
92
|
+
# Removes users from the given group
|
93
|
+
#
|
94
|
+
# @see https://lokalise.co/api2docs/curl/#transition-remove-members-from-group-put
|
95
|
+
# @return [Lokalise::Resources::TeamUserGroup]
|
96
|
+
# @param team_id [String]
|
97
|
+
# @param group_id [String, Integer]
|
98
|
+
# @param users_ids [String, Integer, Array<String>, Array<Integer>]
|
99
|
+
def remove_users_from_group(team_id, group_id, users_ids)
|
100
|
+
c_r Lokalise::Resources::TeamUserGroup, :update,
|
101
|
+
[team_id, group_id, 'members', 'remove'],
|
102
|
+
users_ids, :users
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -11,8 +11,8 @@ module Lokalise
|
|
11
11
|
# @return [String]
|
12
12
|
# @param model_class [String]
|
13
13
|
# @param plural [Boolean] Should the returned value be pluralized?
|
14
|
-
def data_key_for(model_class, plural = false)
|
15
|
-
data_key = get_key 'DATA_KEY', model_class
|
14
|
+
def data_key_for(model_class, plural = false, collection = false)
|
15
|
+
data_key = get_key 'DATA_KEY', model_class, collection
|
16
16
|
|
17
17
|
return data_key unless plural
|
18
18
|
|
@@ -43,8 +43,10 @@ module Lokalise
|
|
43
43
|
|
44
44
|
private
|
45
45
|
|
46
|
-
def get_key(name, model_class)
|
47
|
-
if Module.const_defined?
|
46
|
+
def get_key(name, model_class, collection = false)
|
47
|
+
if collection && Module.const_defined?("Lokalise::Collections::#{model_class}::#{name}")
|
48
|
+
Module.const_get "Lokalise::Collections::#{model_class}::#{name}"
|
49
|
+
elsif Module.const_defined? "Lokalise::Resources::#{model_class}::#{name}"
|
48
50
|
Module.const_get "Lokalise::Resources::#{model_class}::#{name}"
|
49
51
|
else
|
50
52
|
model_class
|
@@ -0,0 +1,192 @@
|
|
1
|
+
RSpec.describe Lokalise::Client do
|
2
|
+
let(:team_id) { 176_692 }
|
3
|
+
let(:group_id) { 515 }
|
4
|
+
let(:second_group_id) { 690 }
|
5
|
+
let(:third_group_id) { 689 }
|
6
|
+
let(:project_id) { '605317925c13e4ecb36a79.94825279' }
|
7
|
+
let(:another_project_id) { '446952185c01a12b4d0b45.76217122' }
|
8
|
+
let(:user_id) { 35_554 }
|
9
|
+
|
10
|
+
describe '#team_user_groups' do
|
11
|
+
it 'should return all team_user_groups' do
|
12
|
+
team_user_groups = VCR.use_cassette('team_user_groups') do
|
13
|
+
test_client.team_user_groups team_id
|
14
|
+
end
|
15
|
+
|
16
|
+
expect(team_user_groups.collection.count).to eq(2)
|
17
|
+
expect(team_user_groups.team_id).to eq(team_id)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should support pagination' do
|
21
|
+
team_users = VCR.use_cassette('team_user_groups_pagination') do
|
22
|
+
test_client.team_user_groups team_id, limit: 1, page: 2
|
23
|
+
end
|
24
|
+
|
25
|
+
expect(team_users.collection.count).to eq(1)
|
26
|
+
expect(team_users.total_results).to eq(2)
|
27
|
+
expect(team_users.total_pages).to eq(2)
|
28
|
+
expect(team_users.results_per_page).to eq(1)
|
29
|
+
expect(team_users.current_page).to eq(2)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
specify '#team_user_group' do
|
34
|
+
group = VCR.use_cassette('team_user_group') do
|
35
|
+
test_client.team_user_group team_id, group_id
|
36
|
+
end
|
37
|
+
|
38
|
+
expect(group.group_id).to eq(group_id)
|
39
|
+
expect(group.name).to eq('Demo')
|
40
|
+
expect(group.permissions['is_admin']).to eq(true)
|
41
|
+
expect(group.created_at).to eq('2019-03-19 19:53:04 (Etc/UTC)')
|
42
|
+
expect(group.created_at_timestamp).to eq(1_553_025_184)
|
43
|
+
expect(group.team_id).to eq(team_id)
|
44
|
+
expect(group.projects.first).to eq('803826145ba90b42d5d860.46800099')
|
45
|
+
expect(group.members[1]).to eq(25_753)
|
46
|
+
end
|
47
|
+
|
48
|
+
specify '#create_team_user_group' do
|
49
|
+
group = VCR.use_cassette('create_team_user_group') do
|
50
|
+
test_client.create_team_user_group team_id, name: 'RSpec group',
|
51
|
+
is_reviewer: false,
|
52
|
+
is_admin: false,
|
53
|
+
languages: {
|
54
|
+
reference: [],
|
55
|
+
contributable: [640]
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
expect(group.name).to eq('RSpec group')
|
60
|
+
expect(group.team_id).to eq(team_id)
|
61
|
+
end
|
62
|
+
|
63
|
+
specify '#update_team_user_group' do
|
64
|
+
group = VCR.use_cassette('update_team_user_group') do
|
65
|
+
test_client.update_team_user_group team_id, second_group_id,
|
66
|
+
name: 'updated rspec', is_admin: true,
|
67
|
+
is_reviewer: true
|
68
|
+
end
|
69
|
+
|
70
|
+
expect(group.name).to eq('updated rspec')
|
71
|
+
expect(group.team_id).to eq(team_id)
|
72
|
+
expect(group.permissions['is_admin']).to eq(true)
|
73
|
+
expect(group.permissions['is_reviewer']).to eq(true)
|
74
|
+
end
|
75
|
+
|
76
|
+
specify '#destroy_team_user_group' do
|
77
|
+
response = VCR.use_cassette('destroy_team_user_group') do
|
78
|
+
test_client.destroy_team_user_group team_id, second_group_id
|
79
|
+
end
|
80
|
+
expect(response['team_id']).to eq(team_id)
|
81
|
+
expect(response['group_deleted']).to eq(true)
|
82
|
+
end
|
83
|
+
|
84
|
+
specify '#add_projects_to_group' do
|
85
|
+
group = VCR.use_cassette('add_projects_to_group') do
|
86
|
+
test_client.add_projects_to_group team_id, third_group_id, project_id
|
87
|
+
end
|
88
|
+
|
89
|
+
expect(group.team_id).to eq(team_id)
|
90
|
+
expect(group.group_id).to eq(third_group_id)
|
91
|
+
expect(group.projects).to include(project_id)
|
92
|
+
end
|
93
|
+
|
94
|
+
specify '#remove_projects_from_group' do
|
95
|
+
group = VCR.use_cassette('remove_projects_from_group') do
|
96
|
+
test_client.remove_projects_from_group team_id, third_group_id, another_project_id
|
97
|
+
end
|
98
|
+
|
99
|
+
expect(group.group_id).to eq(third_group_id)
|
100
|
+
expect(group.team_id).to eq(team_id)
|
101
|
+
expect(group.projects).to be_empty
|
102
|
+
end
|
103
|
+
|
104
|
+
specify '#add_users_to_group' do
|
105
|
+
group = VCR.use_cassette('add_users_to_group') do
|
106
|
+
test_client.add_users_to_group team_id, third_group_id, user_id
|
107
|
+
end
|
108
|
+
|
109
|
+
expect(group.team_id).to eq(team_id)
|
110
|
+
expect(group.group_id).to eq(third_group_id)
|
111
|
+
expect(group.members).to include(user_id)
|
112
|
+
end
|
113
|
+
|
114
|
+
specify '#remove_users_from_group' do
|
115
|
+
group = VCR.use_cassette('remove_users_from_group') do
|
116
|
+
test_client.remove_users_from_group team_id, third_group_id, user_id
|
117
|
+
end
|
118
|
+
|
119
|
+
expect(group.group_id).to eq(third_group_id)
|
120
|
+
expect(group.team_id).to eq(team_id)
|
121
|
+
expect(group.members).to be_empty
|
122
|
+
end
|
123
|
+
|
124
|
+
context 'team user group chained methods' do
|
125
|
+
it 'should support update and destroy' do
|
126
|
+
group = VCR.use_cassette('another_team_user_group') do
|
127
|
+
test_client.team_user_group team_id, third_group_id
|
128
|
+
end
|
129
|
+
|
130
|
+
expect(group.group_id).to eq(third_group_id)
|
131
|
+
|
132
|
+
group = VCR.use_cassette('update_another_team_user_group') do
|
133
|
+
group.update name: 'another group updated', is_admin: true, is_reviewer: true
|
134
|
+
end
|
135
|
+
|
136
|
+
expect(group.group_id).to eq(third_group_id)
|
137
|
+
expect(group.permissions['is_admin']).to eq(true)
|
138
|
+
expect(group.name).to eq('another group updated')
|
139
|
+
|
140
|
+
response = VCR.use_cassette('destroy_another_team_user_group') do
|
141
|
+
group.destroy
|
142
|
+
end
|
143
|
+
|
144
|
+
expect(response['team_id']).to eq(team_id)
|
145
|
+
expect(response['group_deleted']).to eq(true)
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'should support project management' do
|
149
|
+
group = VCR.use_cassette('team_user_group') do
|
150
|
+
test_client.team_user_group team_id, group_id
|
151
|
+
end
|
152
|
+
|
153
|
+
group = VCR.use_cassette('add_project_to_group_chained') do
|
154
|
+
group.add_projects(projects: [another_project_id])
|
155
|
+
end
|
156
|
+
|
157
|
+
expect(group.team_id).to eq(team_id)
|
158
|
+
expect(group.group_id).to eq(group_id)
|
159
|
+
expect(group.projects).to include(another_project_id)
|
160
|
+
|
161
|
+
group = VCR.use_cassette('remove_project_from_group_chained') do
|
162
|
+
group.remove_projects(projects: [another_project_id])
|
163
|
+
end
|
164
|
+
|
165
|
+
expect(group.team_id).to eq(team_id)
|
166
|
+
expect(group.group_id).to eq(group_id)
|
167
|
+
expect(group.projects).not_to include(another_project_id)
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'should support users management' do
|
171
|
+
group = VCR.use_cassette('team_user_group') do
|
172
|
+
test_client.team_user_group team_id, group_id
|
173
|
+
end
|
174
|
+
|
175
|
+
group = VCR.use_cassette('add_user_to_group_chained') do
|
176
|
+
group.add_users(users: [user_id])
|
177
|
+
end
|
178
|
+
|
179
|
+
expect(group.team_id).to eq(team_id)
|
180
|
+
expect(group.group_id).to eq(group_id)
|
181
|
+
expect(group.members).to include(user_id)
|
182
|
+
|
183
|
+
group = VCR.use_cassette('remove_user_from_group_chained') do
|
184
|
+
group.remove_users(users: [user_id])
|
185
|
+
end
|
186
|
+
|
187
|
+
expect(group.team_id).to eq(team_id)
|
188
|
+
expect(group.group_id).to eq(group_id)
|
189
|
+
expect(group.members).not_to include(user_id)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-lokalise-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya Bodrov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- lib/ruby-lokalise-api/collections/task.rb
|
187
187
|
- lib/ruby-lokalise-api/collections/team.rb
|
188
188
|
- lib/ruby-lokalise-api/collections/team_user.rb
|
189
|
+
- lib/ruby-lokalise-api/collections/team_user_group.rb
|
189
190
|
- lib/ruby-lokalise-api/collections/translation.rb
|
190
191
|
- lib/ruby-lokalise-api/collections/translation_provider.rb
|
191
192
|
- lib/ruby-lokalise-api/connection.rb
|
@@ -208,6 +209,7 @@ files:
|
|
208
209
|
- lib/ruby-lokalise-api/resources/task.rb
|
209
210
|
- lib/ruby-lokalise-api/resources/team.rb
|
210
211
|
- lib/ruby-lokalise-api/resources/team_user.rb
|
212
|
+
- lib/ruby-lokalise-api/resources/team_user_group.rb
|
211
213
|
- lib/ruby-lokalise-api/resources/translation.rb
|
212
214
|
- lib/ruby-lokalise-api/resources/translation_provider.rb
|
213
215
|
- lib/ruby-lokalise-api/rest/comments.rb
|
@@ -221,6 +223,7 @@ files:
|
|
221
223
|
- lib/ruby-lokalise-api/rest/screenshots.rb
|
222
224
|
- lib/ruby-lokalise-api/rest/snapshots.rb
|
223
225
|
- lib/ruby-lokalise-api/rest/tasks.rb
|
226
|
+
- lib/ruby-lokalise-api/rest/team_user_group.rb
|
224
227
|
- lib/ruby-lokalise-api/rest/team_users.rb
|
225
228
|
- lib/ruby-lokalise-api/rest/teams.rb
|
226
229
|
- lib/ruby-lokalise-api/rest/translation_providers.rb
|
@@ -242,6 +245,7 @@ files:
|
|
242
245
|
- spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb
|
243
246
|
- spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb
|
244
247
|
- spec/lib/ruby-lokalise-api/rest/tasks_spec.rb
|
248
|
+
- spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
|
245
249
|
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
246
250
|
- spec/lib/ruby-lokalise-api/rest/teams_spec.rb
|
247
251
|
- spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
|
@@ -289,6 +293,7 @@ test_files:
|
|
289
293
|
- spec/lib/ruby-lokalise-api/rest/tasks_spec.rb
|
290
294
|
- spec/lib/ruby-lokalise-api/rest/teams_spec.rb
|
291
295
|
- spec/lib/ruby-lokalise-api/rest/team_users_spec.rb
|
296
|
+
- spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb
|
292
297
|
- spec/lib/ruby-lokalise-api/rest/translations_spec.rb
|
293
298
|
- spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb
|
294
299
|
- spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb
|