ruby-lokalise-api 7.2.0 → 8.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ruby_lokalise_api/base_client.rb +2 -34
  3. data/lib/ruby_lokalise_api/client.rb +2 -31
  4. data/lib/ruby_lokalise_api/collections/base.rb +97 -70
  5. data/lib/ruby_lokalise_api/collections/branches.rb +11 -0
  6. data/lib/ruby_lokalise_api/collections/contributors.rb +10 -0
  7. data/lib/ruby_lokalise_api/collections/custom_translation_statuses.rb +10 -0
  8. data/lib/ruby_lokalise_api/collections/files.rb +10 -0
  9. data/lib/ruby_lokalise_api/collections/key_comments.rb +11 -0
  10. data/lib/ruby_lokalise_api/collections/keys.rb +10 -0
  11. data/lib/ruby_lokalise_api/collections/orders.rb +10 -0
  12. data/lib/ruby_lokalise_api/collections/payment_cards.rb +10 -0
  13. data/lib/ruby_lokalise_api/collections/project_comments.rb +12 -0
  14. data/lib/ruby_lokalise_api/collections/project_languages.rb +11 -0
  15. data/lib/ruby_lokalise_api/collections/projects.rb +10 -0
  16. data/lib/ruby_lokalise_api/collections/queued_processes.rb +11 -0
  17. data/lib/ruby_lokalise_api/collections/screenshots.rb +10 -0
  18. data/lib/ruby_lokalise_api/collections/segments.rb +10 -0
  19. data/lib/ruby_lokalise_api/collections/snapshots.rb +10 -0
  20. data/lib/ruby_lokalise_api/collections/system_languages.rb +11 -0
  21. data/lib/ruby_lokalise_api/collections/tasks.rb +10 -0
  22. data/lib/ruby_lokalise_api/collections/team_user_groups.rb +11 -0
  23. data/lib/ruby_lokalise_api/collections/team_users.rb +10 -0
  24. data/lib/ruby_lokalise_api/collections/teams.rb +10 -0
  25. data/lib/ruby_lokalise_api/collections/translation_providers.rb +10 -0
  26. data/lib/ruby_lokalise_api/collections/translations.rb +10 -0
  27. data/lib/ruby_lokalise_api/collections/webhooks.rb +10 -0
  28. data/lib/ruby_lokalise_api/concerns/attrs_loadable.rb +31 -0
  29. data/lib/ruby_lokalise_api/concerns/hash_accessible.rb +16 -0
  30. data/lib/ruby_lokalise_api/concerns/unsupportable.rb +16 -0
  31. data/lib/ruby_lokalise_api/connection.rb +18 -9
  32. data/lib/ruby_lokalise_api/data/collection_attributes.yml +52 -0
  33. data/lib/ruby_lokalise_api/data/{attributes.yml → resource_attributes.yml} +64 -6
  34. data/lib/ruby_lokalise_api/endpoints/base_endpoint.rb +66 -0
  35. data/lib/ruby_lokalise_api/endpoints/branches_endpoint.rb +16 -0
  36. data/lib/ruby_lokalise_api/endpoints/contributors_endpoint.rb +16 -0
  37. data/lib/ruby_lokalise_api/endpoints/custom_translation_statuses_endpoint.rb +16 -0
  38. data/lib/ruby_lokalise_api/endpoints/files_endpoint.rb +16 -0
  39. data/lib/ruby_lokalise_api/endpoints/jwts_endpoint.rb +15 -0
  40. data/lib/ruby_lokalise_api/endpoints/key_comments_endpoint.rb +17 -0
  41. data/lib/ruby_lokalise_api/endpoints/keys_endpoint.rb +16 -0
  42. data/lib/ruby_lokalise_api/endpoints/main_endpoint.rb +25 -0
  43. data/lib/ruby_lokalise_api/endpoints/oauth2/oauth2_endpoint.rb +33 -0
  44. data/lib/ruby_lokalise_api/endpoints/orders_endpoint.rb +16 -0
  45. data/lib/ruby_lokalise_api/endpoints/payment_cards_endpoint.rb +15 -0
  46. data/lib/ruby_lokalise_api/endpoints/project_comments_endpoint.rb +15 -0
  47. data/lib/ruby_lokalise_api/endpoints/project_languages_endpoint.rb +16 -0
  48. data/lib/ruby_lokalise_api/endpoints/projects_endpoint.rb +15 -0
  49. data/lib/ruby_lokalise_api/endpoints/queued_processes_endpoint.rb +16 -0
  50. data/lib/ruby_lokalise_api/endpoints/screenshots_endpoint.rb +16 -0
  51. data/lib/ruby_lokalise_api/endpoints/segments_endpoint.rb +17 -0
  52. data/lib/ruby_lokalise_api/endpoints/snapshots_endpoint.rb +16 -0
  53. data/lib/ruby_lokalise_api/endpoints/system_languages_endpoint.rb +15 -0
  54. data/lib/ruby_lokalise_api/endpoints/tasks_endpoint.rb +16 -0
  55. data/lib/ruby_lokalise_api/endpoints/team_user_billing_details_endpoint.rb +15 -0
  56. data/lib/ruby_lokalise_api/endpoints/team_user_groups_endpoint.rb +16 -0
  57. data/lib/ruby_lokalise_api/endpoints/team_users_endpoint.rb +16 -0
  58. data/lib/ruby_lokalise_api/endpoints/teams_endpoint.rb +13 -0
  59. data/lib/ruby_lokalise_api/endpoints/translation_providers_endpoint.rb +16 -0
  60. data/lib/ruby_lokalise_api/endpoints/translations_endpoint.rb +16 -0
  61. data/lib/ruby_lokalise_api/endpoints/webhooks_endpoint.rb +16 -0
  62. data/lib/ruby_lokalise_api/error.rb +1 -0
  63. data/lib/ruby_lokalise_api/generics.rb +25 -0
  64. data/lib/ruby_lokalise_api/json_handler.rb +1 -2
  65. data/lib/ruby_lokalise_api/oauth2/auth.rb +33 -39
  66. data/lib/ruby_lokalise_api/oauth2_client.rb +3 -0
  67. data/lib/ruby_lokalise_api/request.rb +66 -18
  68. data/lib/ruby_lokalise_api/resources/base.rb +41 -185
  69. data/lib/ruby_lokalise_api/resources/branch.rb +2 -21
  70. data/lib/ruby_lokalise_api/resources/comment.rb +11 -0
  71. data/lib/ruby_lokalise_api/resources/contributor.rb +1 -9
  72. data/lib/ruby_lokalise_api/resources/custom_translation_status.rb +1 -13
  73. data/lib/ruby_lokalise_api/resources/file.rb +2 -16
  74. data/lib/ruby_lokalise_api/resources/jwt.rb +2 -5
  75. data/lib/ruby_lokalise_api/resources/key.rb +5 -8
  76. data/lib/ruby_lokalise_api/resources/oauth2_refreshed_token.rb +9 -0
  77. data/lib/ruby_lokalise_api/resources/oauth2_token.rb +9 -0
  78. data/lib/ruby_lokalise_api/resources/order.rb +2 -9
  79. data/lib/ruby_lokalise_api/resources/payment_card.rb +2 -8
  80. data/lib/ruby_lokalise_api/resources/project.rb +85 -16
  81. data/lib/ruby_lokalise_api/resources/project_language.rb +2 -10
  82. data/lib/ruby_lokalise_api/resources/queued_process.rb +3 -10
  83. data/lib/ruby_lokalise_api/resources/screenshot.rb +1 -9
  84. data/lib/ruby_lokalise_api/resources/segment.rb +2 -11
  85. data/lib/ruby_lokalise_api/resources/snapshot.rb +3 -18
  86. data/lib/ruby_lokalise_api/resources/system_language.rb +2 -1
  87. data/lib/ruby_lokalise_api/resources/task.rb +1 -9
  88. data/lib/ruby_lokalise_api/resources/team.rb +2 -0
  89. data/lib/ruby_lokalise_api/resources/team_user.rb +1 -9
  90. data/lib/ruby_lokalise_api/resources/team_user_billing_details.rb +10 -5
  91. data/lib/ruby_lokalise_api/resources/team_user_group.rb +6 -14
  92. data/lib/ruby_lokalise_api/resources/translation.rb +2 -9
  93. data/lib/ruby_lokalise_api/resources/translation_provider.rb +2 -9
  94. data/lib/ruby_lokalise_api/resources/webhook.rb +2 -16
  95. data/lib/ruby_lokalise_api/response.rb +50 -0
  96. data/lib/ruby_lokalise_api/rest/branches.rb +52 -27
  97. data/lib/ruby_lokalise_api/rest/comments.rb +48 -23
  98. data/lib/ruby_lokalise_api/rest/contributors.rb +47 -23
  99. data/lib/ruby_lokalise_api/rest/custom_translation_statuses.rb +60 -36
  100. data/lib/ruby_lokalise_api/rest/files.rb +43 -24
  101. data/lib/ruby_lokalise_api/rest/jwts.rb +21 -0
  102. data/lib/ruby_lokalise_api/rest/keys.rb +67 -34
  103. data/lib/ruby_lokalise_api/rest/languages.rb +57 -28
  104. data/lib/ruby_lokalise_api/rest/orders.rb +36 -14
  105. data/lib/ruby_lokalise_api/rest/payment_cards.rb +29 -12
  106. data/lib/ruby_lokalise_api/rest/projects.rb +55 -32
  107. data/lib/ruby_lokalise_api/rest/queued_processes.rb +21 -13
  108. data/lib/ruby_lokalise_api/rest/screenshots.rb +45 -20
  109. data/lib/ruby_lokalise_api/rest/segments.rb +31 -18
  110. data/lib/ruby_lokalise_api/rest/snapshots.rb +34 -14
  111. data/lib/ruby_lokalise_api/rest/tasks.rb +41 -19
  112. data/lib/ruby_lokalise_api/rest/team_user_billing_details.rb +33 -12
  113. data/lib/ruby_lokalise_api/rest/team_user_groups.rb +82 -50
  114. data/lib/ruby_lokalise_api/rest/team_users.rb +35 -18
  115. data/lib/ruby_lokalise_api/rest/teams.rb +10 -5
  116. data/lib/ruby_lokalise_api/rest/translation_providers.rb +24 -9
  117. data/lib/ruby_lokalise_api/rest/translations.rb +28 -15
  118. data/lib/ruby_lokalise_api/rest/webhooks.rb +54 -30
  119. data/lib/ruby_lokalise_api/rest.rb +31 -0
  120. data/lib/ruby_lokalise_api/utils/attributes.rb +37 -0
  121. data/lib/ruby_lokalise_api/utils/classes.rb +24 -0
  122. data/lib/ruby_lokalise_api/utils/keys.rb +29 -0
  123. data/lib/ruby_lokalise_api/utils/loaders.rb +24 -0
  124. data/lib/ruby_lokalise_api/utils/strings.rb +20 -0
  125. data/lib/ruby_lokalise_api/version.rb +1 -1
  126. data/lib/ruby_lokalise_api.rb +6 -2
  127. data/ruby-lokalise-api.gemspec +2 -2
  128. metadata +76 -41
  129. data/lib/ruby_lokalise_api/base_request.rb +0 -73
  130. data/lib/ruby_lokalise_api/collections/branch.rb +0 -15
  131. data/lib/ruby_lokalise_api/collections/contributor.rb +0 -13
  132. data/lib/ruby_lokalise_api/collections/custom_translation_status.rb +0 -15
  133. data/lib/ruby_lokalise_api/collections/file.rb +0 -13
  134. data/lib/ruby_lokalise_api/collections/key.rb +0 -20
  135. data/lib/ruby_lokalise_api/collections/key_comment.rb +0 -14
  136. data/lib/ruby_lokalise_api/collections/order.rb +0 -13
  137. data/lib/ruby_lokalise_api/collections/payment_card.rb +0 -13
  138. data/lib/ruby_lokalise_api/collections/project.rb +0 -13
  139. data/lib/ruby_lokalise_api/collections/project_comment.rb +0 -13
  140. data/lib/ruby_lokalise_api/collections/project_language.rb +0 -13
  141. data/lib/ruby_lokalise_api/collections/queued_process.rb +0 -15
  142. data/lib/ruby_lokalise_api/collections/screenshot.rb +0 -13
  143. data/lib/ruby_lokalise_api/collections/segment.rb +0 -15
  144. data/lib/ruby_lokalise_api/collections/snapshot.rb +0 -13
  145. data/lib/ruby_lokalise_api/collections/system_language.rb +0 -13
  146. data/lib/ruby_lokalise_api/collections/task.rb +0 -13
  147. data/lib/ruby_lokalise_api/collections/team.rb +0 -13
  148. data/lib/ruby_lokalise_api/collections/team_user.rb +0 -13
  149. data/lib/ruby_lokalise_api/collections/team_user_group.rb +0 -15
  150. data/lib/ruby_lokalise_api/collections/translation.rb +0 -13
  151. data/lib/ruby_lokalise_api/collections/translation_provider.rb +0 -13
  152. data/lib/ruby_lokalise_api/collections/webhook.rb +0 -13
  153. data/lib/ruby_lokalise_api/oauth2/refresh.rb +0 -16
  154. data/lib/ruby_lokalise_api/oauth2/token.rb +0 -16
  155. data/lib/ruby_lokalise_api/resources/key_comment.rb +0 -19
  156. data/lib/ruby_lokalise_api/resources/project_comment.rb +0 -10
  157. data/lib/ruby_lokalise_api/rest/jwt.rb +0 -15
  158. data/lib/ruby_lokalise_api/utils/attribute_helpers.rb +0 -86
  159. data/lib/ruby_lokalise_api/utils/endpoint_helpers.rb +0 -14
  160. data/lib/ruby_lokalise_api/utils/string_utils.rb +0 -33
@@ -3,106 +3,138 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module TeamUserGroups
6
- # Returns all team user groups for the given team
6
+ using RubyLokaliseApi::Utils::Classes
7
+
8
+ # Returns team user groups
7
9
  #
8
- # @see https://developers.lokalise.com/reference/list-all-team-users
9
- # @return [RubyLokaliseApi::Collection::TeamUserGroup<RubyLokaliseApi::Resources::TeamUserGroup>]
10
- # @param team_id [String]
11
- # @param params [Hash]
12
- def team_user_groups(team_id, params = {})
13
- c_r RubyLokaliseApi::Collections::TeamUserGroup, :all, team_id, params
10
+ # @see https://developers.lokalise.com/reference/list-all-groups
11
+ # @return [RubyLokaliseApi::Collections::TeamUserGroups]
12
+ # @param team_id [Integer, String]
13
+ # @param req_params [Hash]
14
+ def team_user_groups(team_id, req_params = {})
15
+ name = 'TeamUserGroups'
16
+ params = { query: team_id, req: req_params }
17
+
18
+ data = endpoint(name: name, params: params).do_get
19
+
20
+ collection name, data
14
21
  end
15
22
 
16
- # Returns team user from the given team
23
+ # Returns a single team user group
17
24
  #
18
- # @see https://developers.lokalise.com/reference/retrieve-a-team-user
25
+ # @see https://developers.lokalise.com/reference/retrieve-a-group
19
26
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
20
- # @param team_id [String]
27
+ # @param team_id [String, Integer]
21
28
  # @param group_id [String, Integer]
22
29
  def team_user_group(team_id, group_id)
23
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :find, [team_id, group_id]
30
+ params = { query: [team_id, group_id] }
31
+
32
+ response = endpoint(name: 'TeamUserGroups', params: params).do_get
33
+
34
+ resource 'TeamUserGroup', response
24
35
  end
25
36
 
26
- # Creates team user group
37
+ # Creates a team user group
27
38
  #
28
39
  # @see https://developers.lokalise.com/reference/create-a-group
29
40
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
30
- # @param params [Hash]
31
- def create_team_user_group(team_id, params)
32
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :create, team_id, params
41
+ # @param team_id [String, Integer]
42
+ # @param req_params [Hash]
43
+ def create_team_user_group(team_id, req_params)
44
+ params = { query: team_id, req: req_params }
45
+
46
+ response = endpoint(name: 'TeamUserGroups', params: params).do_post
47
+
48
+ resource 'TeamUserGroup', response
33
49
  end
34
50
 
35
- # Updates team user group for the given team
51
+ # Updates a team user group
36
52
  #
37
53
  # @see https://developers.lokalise.com/reference/update-a-group
38
54
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
39
- # @param team_id [String]
55
+ # @param team_id [String, Integer]
40
56
  # @param group_id [String, Integer]
41
- # @param params [Hash]
42
- def update_team_user_group(team_id, group_id, params)
43
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :update, [team_id, group_id], params
57
+ # @param req_params [Hash]
58
+ def update_team_user_group(team_id, group_id, req_params = {})
59
+ params = { query: [team_id, group_id], req: req_params }
60
+
61
+ data = endpoint(name: 'TeamUserGroups', params: params).do_put
62
+
63
+ resource 'TeamUserGroup', data
44
64
  end
45
65
 
46
- # Deletes team user group from the given team
66
+ # Deletes a team user group
47
67
  #
48
68
  # @see https://developers.lokalise.com/reference/delete-a-group
49
- # @return [RubyLokaliseApi::Resources::TeamUserGroup]
50
- # @param team_id [String]
69
+ # @return [RubyLokaliseApi::Generics::DeletedResource]
70
+ # @param team_id [String, Integer]
51
71
  # @param group_id [String, Integer]
52
72
  def destroy_team_user_group(team_id, group_id)
53
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :destroy, [team_id, group_id]
73
+ params = { query: [team_id, group_id] }
74
+
75
+ data = endpoint(name: 'TeamUserGroups', params: params).do_delete
76
+
77
+ RubyLokaliseApi::Generics::DeletedResource.new data.content
54
78
  end
55
79
 
56
- # Adds projects to the given group
80
+ # Adds projects to the group
57
81
  #
58
82
  # @see https://developers.lokalise.com/reference/add-projects-to-group
59
83
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
60
- # @param team_id [String]
84
+ # @param team_id [String, Integer]
61
85
  # @param group_id [String, Integer]
62
- # @param project_ids [String, Integer, Array<String>, Array<Integer>]
86
+ # @param project_ids [Array, String]
63
87
  def add_projects_to_group(team_id, group_id, project_ids)
64
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :update,
65
- [team_id, group_id, 'projects', 'add'],
66
- project_ids, :projects, [team_id, group_id]
88
+ params = { query: [team_id, group_id, :projects, :add], req: project_ids.to_array_obj(:projects) }
89
+
90
+ data = endpoint(name: 'TeamUserGroups', params: params).do_put
91
+
92
+ resource 'TeamUserGroup', data
67
93
  end
68
94
 
69
- # Removes projects from the given group
95
+ # Removes projects from the group
70
96
  #
71
97
  # @see https://developers.lokalise.com/reference/remove-projects-from-group
72
98
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
73
- # @param team_id [String]
99
+ # @param team_id [String, Integer]
74
100
  # @param group_id [String, Integer]
75
- # @param project_ids [String, Integer, Array<String>, Array<Integer>]
101
+ # @param project_ids [Array, String]
76
102
  def remove_projects_from_group(team_id, group_id, project_ids)
77
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :update,
78
- [team_id, group_id, 'projects', 'remove'],
79
- project_ids, :projects, [team_id, group_id]
103
+ params = { query: [team_id, group_id, :projects, :remove], req: project_ids.to_array_obj(:projects) }
104
+
105
+ data = endpoint(name: 'TeamUserGroups', params: params).do_put
106
+
107
+ resource 'TeamUserGroup', data
80
108
  end
81
109
 
82
- # Adds users to the given group
110
+ # Adds members to the group
83
111
  #
84
112
  # @see https://developers.lokalise.com/reference/add-members-to-group
85
113
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
86
- # @param team_id [String]
114
+ # @param team_id [String, Integer]
87
115
  # @param group_id [String, Integer]
88
- # @param users_ids [String, Integer, Array<String>, Array<Integer>]
89
- def add_users_to_group(team_id, group_id, users_ids)
90
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :update,
91
- [team_id, group_id, 'members', 'add'],
92
- users_ids, :users, [team_id, group_id]
116
+ # @param user_ids [Array, String]
117
+ def add_members_to_group(team_id, group_id, user_ids)
118
+ params = { query: [team_id, group_id, :members, :add], req: user_ids.to_array_obj(:users) }
119
+
120
+ data = endpoint(name: 'TeamUserGroups', params: params).do_put
121
+
122
+ resource 'TeamUserGroup', data
93
123
  end
94
124
 
95
- # Removes users from the given group
125
+ # Removes members from the group
96
126
  #
97
127
  # @see https://developers.lokalise.com/reference/remove-members-from-group
98
128
  # @return [RubyLokaliseApi::Resources::TeamUserGroup]
99
- # @param team_id [String]
129
+ # @param team_id [String, Integer]
100
130
  # @param group_id [String, Integer]
101
- # @param users_ids [String, Integer, Array<String>, Array<Integer>]
102
- def remove_users_from_group(team_id, group_id, users_ids)
103
- c_r RubyLokaliseApi::Resources::TeamUserGroup, :update,
104
- [team_id, group_id, 'members', 'remove'],
105
- users_ids, :users, [team_id, group_id]
131
+ # @param user_ids [Array, String]
132
+ def remove_members_from_group(team_id, group_id, user_ids)
133
+ params = { query: [team_id, group_id, :members, :remove], req: user_ids.to_array_obj(:users) }
134
+
135
+ data = endpoint(name: 'TeamUserGroups', params: params).do_put
136
+
137
+ resource 'TeamUserGroup', data
106
138
  end
107
139
  end
108
140
  end
@@ -3,45 +3,62 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module TeamUsers
6
- # Returns all team users for the given team
6
+ # Returns team users
7
7
  #
8
8
  # @see https://developers.lokalise.com/reference/list-all-team-users
9
- # @return [RubyLokaliseApi::Collection::TeamUser<RubyLokaliseApi::Resources::TeamUser>]
10
- # @param team_id [String]
11
- # @param params [Hash]
12
- def team_users(team_id, params = {})
13
- c_r RubyLokaliseApi::Collections::TeamUser, :all, team_id, params
9
+ # @return [RubyLokaliseApi::Collections::TeamUsers]
10
+ # @param team_id [Integer, String]
11
+ # @param req_params [Hash]
12
+ def team_users(team_id, req_params = {})
13
+ name = 'TeamUsers'
14
+ params = { query: team_id, req: req_params }
15
+
16
+ data = endpoint(name: name, params: params).do_get
17
+
18
+ collection name, data
14
19
  end
15
20
 
16
- # Returns team user from the given team
21
+ # Returns a single team user
17
22
  #
18
23
  # @see https://developers.lokalise.com/reference/retrieve-a-team-user
19
24
  # @return [RubyLokaliseApi::Resources::TeamUser]
20
- # @param team_id [String]
25
+ # @param team_id [String, Integer]
21
26
  # @param user_id [String, Integer]
22
27
  def team_user(team_id, user_id)
23
- c_r RubyLokaliseApi::Resources::TeamUser, :find, [team_id, user_id]
28
+ params = { query: [team_id, user_id] }
29
+
30
+ response = endpoint(name: 'TeamUsers', params: params).do_get
31
+
32
+ resource 'TeamUser', response
24
33
  end
25
34
 
26
- # Updates team user for the given team
35
+ # Updates a team user
27
36
  #
28
37
  # @see https://developers.lokalise.com/reference/update-a-team-user
29
38
  # @return [RubyLokaliseApi::Resources::TeamUser]
30
- # @param team_id [String]
39
+ # @param team_id [String, Integer]
31
40
  # @param user_id [String, Integer]
32
- # @param params [Hash]
33
- def update_team_user(team_id, user_id, params)
34
- c_r RubyLokaliseApi::Resources::TeamUser, :update, [team_id, user_id], params
41
+ # @param req_params [Hash]
42
+ def update_team_user(team_id, user_id, req_params = {})
43
+ params = { query: [team_id, user_id], req: req_params }
44
+
45
+ data = endpoint(name: 'TeamUsers', params: params).do_put
46
+
47
+ resource 'TeamUser', data
35
48
  end
36
49
 
37
- # Deletes team user from the given team
50
+ # Deletes a team user
38
51
  #
39
52
  # @see https://developers.lokalise.com/reference/delete-a-team-user
40
- # @return [RubyLokaliseApi::Resources::TeamUser]
41
- # @param team_id [String]
53
+ # @return [RubyLokaliseApi::Generics::DeletedResource]
54
+ # @param team_id [String, Integer]
42
55
  # @param user_id [String, Integer]
43
56
  def destroy_team_user(team_id, user_id)
44
- c_r RubyLokaliseApi::Resources::TeamUser, :destroy, [team_id, user_id]
57
+ params = { query: [team_id, user_id] }
58
+
59
+ data = endpoint(name: 'TeamUsers', params: params).do_delete
60
+
61
+ RubyLokaliseApi::Generics::DeletedResource.new data.content
45
62
  end
46
63
  end
47
64
  end
@@ -3,13 +3,18 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module Teams
6
- # Returns all teams available to the user
6
+ # Returns teams
7
7
  #
8
8
  # @see https://developers.lokalise.com/reference/list-all-teams
9
- # @return [RubyLokaliseApi::Collection::Team<RubyLokaliseApi::Resources::Team>]
10
- # @param params [Hash]
11
- def teams(params = {})
12
- c_r RubyLokaliseApi::Collections::Team, :all, nil, params
9
+ # @return [RubyLokaliseApi::Collections::Teams]
10
+ # @param req_params [Hash]
11
+ def teams(req_params = {})
12
+ name = 'Teams'
13
+ params = { req: req_params }
14
+
15
+ data = endpoint(name: name, params: params).do_get
16
+
17
+ collection name, data
13
18
  end
14
19
  end
15
20
  end
@@ -3,24 +3,39 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module TranslationProviders
6
- # Returns all translation providers for the given team
6
+ # Returns translation providers
7
7
  #
8
8
  # @see https://developers.lokalise.com/reference/list-all-providers
9
- # @return [RubyLokaliseApi::Collection::TranslationProvider<RubyLokaliseApi::Resources::TranslationProvider>]
10
- # @param team_id [String]
11
- # @param params [Hash]
12
- def translation_providers(team_id, params = {})
13
- c_r RubyLokaliseApi::Collections::TranslationProvider, :all, team_id, params
9
+ # @return [RubyLokaliseApi::Collections::TranslationProviders]
10
+ # @param team_id [String, Integer]
11
+ # @param req_params [Hash]
12
+ def translation_providers(team_id, req_params = {})
13
+ name = 'TranslationProviders'
14
+ params = { query: team_id, req: req_params }
15
+
16
+ response = endpoint(name: name, params: params).do_get
17
+
18
+ # We must patch content because the API does not return team_id and it's mandatory to build resource URLs
19
+ response.patch_content_with 'team_id', team_id
20
+
21
+ collection name, response
14
22
  end
15
23
 
16
- # Returns a single translation provider for the given team
24
+ # Returns a single translation provider
17
25
  #
18
26
  # @see https://developers.lokalise.com/reference/retrieve-a-provider
19
27
  # @return [RubyLokaliseApi::Resources::TranslationProvider]
20
- # @param team_id [String]
28
+ # @param team_id [String, Integer]
21
29
  # @param provider_id [String, Integer]
22
30
  def translation_provider(team_id, provider_id)
23
- c_r RubyLokaliseApi::Resources::TranslationProvider, :find, [team_id, provider_id]
31
+ params = { query: [team_id, provider_id] }
32
+
33
+ response = endpoint(name: 'TranslationProviders', params: params).do_get
34
+
35
+ # We must patch content because the API does not return team_id and it's mandatory to build resource URLs
36
+ response.patch_content_with 'team_id', team_id
37
+
38
+ resource 'TranslationProvider', response
24
39
  end
25
40
  end
26
41
  end
@@ -3,36 +3,49 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module Translations
6
- # Returns all translations for the given project (ungrouped)
6
+ # Returns translations
7
7
  #
8
8
  # @see https://developers.lokalise.com/reference/list-all-translations
9
- # @return [RubyLokaliseApi::Collection::Translation<RubyLokaliseApi::Resources::Translation>]
9
+ # @return [RubyLokaliseApi::Collections::Translations]
10
10
  # @param project_id [String]
11
- # @param params [Hash]
12
- def translations(project_id, params = {})
13
- c_r RubyLokaliseApi::Collections::Translation, :all, project_id, params
11
+ # @param req_params [Hash]
12
+ def translations(project_id, req_params = {})
13
+ name = 'Translations'
14
+ params = { query: project_id, req: req_params }
15
+
16
+ data = endpoint(name: name, params: params).do_get
17
+
18
+ collection name, data
14
19
  end
15
20
 
16
- # Returns translation of the given project
21
+ # Returns a single translation
17
22
  #
18
23
  # @see https://developers.lokalise.com/reference/retrieve-a-translation
19
24
  # @return [RubyLokaliseApi::Resources::Translation]
20
25
  # @param project_id [String]
21
- # @param translation_id [String, Integer]
22
- # @param params [Hash]
23
- def translation(project_id, translation_id, params = {})
24
- c_r RubyLokaliseApi::Resources::Translation, :find, [project_id, translation_id], params
26
+ # @param translation_id [String]
27
+ # @param req_params[Hash]
28
+ def translation(project_id, translation_id, req_params = {})
29
+ params = { query: [project_id, translation_id], req: req_params }
30
+
31
+ data = endpoint(name: 'Translations', params: params).do_get
32
+
33
+ resource 'Translation', data
25
34
  end
26
35
 
27
- # Updates translation of the given project
36
+ # Updates a translation
28
37
  #
29
38
  # @see https://developers.lokalise.com/reference/update-a-translation
30
39
  # @return [RubyLokaliseApi::Resources::Translation]
31
40
  # @param project_id [String]
32
- # @param translation_id [String, Integer]
33
- # @param params [Hash]
34
- def update_translation(project_id, translation_id, params)
35
- c_r RubyLokaliseApi::Resources::Translation, :update, [project_id, translation_id], params
41
+ # @param translation_id [String]
42
+ # @param req_params [Hash]
43
+ def update_translation(project_id, translation_id, req_params)
44
+ params = { query: [project_id, translation_id], req: req_params }
45
+
46
+ data = endpoint(name: 'Translations', params: params).do_put
47
+
48
+ resource 'Translation', data
36
49
  end
37
50
  end
38
51
  end
@@ -3,66 +3,90 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module Webhooks
6
- # Returns all webhooks for the given project
6
+ # Returns project webhooks
7
7
  #
8
8
  # @see https://developers.lokalise.com/reference/list-all-webhooks
9
- # @return [RubyLokaliseApi::Collection::Webhook<RubyLokaliseApi::Resources::Webhook>]
9
+ # @return [RubyLokaliseApi::Collections::Webhooks]
10
10
  # @param project_id [String]
11
- # @param params [Hash]
12
- def webhooks(project_id, params = {})
13
- c_r RubyLokaliseApi::Collections::Webhook, :all, project_id, params
11
+ # @param req_params [Hash]
12
+ def webhooks(project_id, req_params = {})
13
+ name = 'Webhooks'
14
+ params = { query: project_id, req: req_params }
15
+
16
+ data = endpoint(name: name, params: params).do_get
17
+
18
+ collection name, data
14
19
  end
15
20
 
16
- # Returns a single webhook for the given project
21
+ # Returns a single webhook
17
22
  #
18
23
  # @see https://developers.lokalise.com/reference/retrieve-a-webhook
19
24
  # @return [RubyLokaliseApi::Resources::Webhook]
20
25
  # @param project_id [String]
21
- # @param webhook_id [String, Integer]
26
+ # @param webhook_id [String]
22
27
  def webhook(project_id, webhook_id)
23
- c_r RubyLokaliseApi::Resources::Webhook, :find, [project_id, webhook_id]
28
+ params = { query: [project_id, webhook_id] }
29
+
30
+ data = endpoint(name: 'Webhooks', params: params).do_get
31
+
32
+ resource 'Webhook', data
24
33
  end
25
34
 
26
- # Creates webhook for the given project
35
+ # Creates a webhook
27
36
  #
28
37
  # @see https://developers.lokalise.com/reference/create-a-webhook
29
38
  # @return [RubyLokaliseApi::Resources::Webhook]
30
39
  # @param project_id [String]
31
- # @param params [Hash]
32
- def create_webhook(project_id, params)
33
- c_r RubyLokaliseApi::Resources::Webhook, :create, project_id, params
40
+ # @param req_params [Hash]
41
+ def create_webhook(project_id, req_params)
42
+ params = { query: project_id, req: req_params }
43
+
44
+ data = endpoint(name: 'Webhooks', params: params).do_post
45
+
46
+ resource 'Webhook', data
34
47
  end
35
48
 
36
- # Updates webhook for the given project
49
+ # Updates a webhook
37
50
  #
38
51
  # @see https://developers.lokalise.com/reference/update-a-webhook
39
52
  # @return [RubyLokaliseApi::Resources::Webhook]
40
53
  # @param project_id [String]
41
- # @param webhook_id [String, Integer]
42
- # @param params [Hash]
43
- def update_webhook(project_id, webhook_id, params = {})
44
- c_r RubyLokaliseApi::Resources::Webhook, :update, [project_id, webhook_id], params
54
+ # @param webhook_id [String]
55
+ # @param req_params [Hash]
56
+ def update_webhook(project_id, webhook_id, req_params)
57
+ params = { query: [project_id, webhook_id], req: req_params }
58
+
59
+ data = endpoint(name: 'Webhooks', params: params).do_put
60
+
61
+ resource 'Webhook', data
45
62
  end
46
63
 
47
- # Deletes webhook for the given project
64
+ # Regenerates webhook secret
48
65
  #
49
- # @see https://developers.lokalise.com/reference/delete-a-webhook
50
- # @return [Hash]
66
+ # @see https://developers.lokalise.com/reference/regenerate-a-webhook-secret
67
+ # @return [RubyLokaliseApi::Generics::RegeneratedWebhookSecret]
51
68
  # @param project_id [String]
52
- # @param webhook_id [String, Integer]
53
- def destroy_webhook(project_id, webhook_id)
54
- c_r RubyLokaliseApi::Resources::Webhook, :destroy, [project_id, webhook_id]
69
+ # @param webhook_id [String]
70
+ def regenerate_webhook_secret(project_id, webhook_id)
71
+ params = { query: [project_id, webhook_id, :secret, :regenerate] }
72
+
73
+ data = endpoint(name: 'Webhooks', params: params).do_patch
74
+
75
+ RubyLokaliseApi::Generics::RegeneratedWebhookSecret.new data.content
55
76
  end
56
77
 
57
- # Regenerates secret for the given webhook
78
+ # Deletes a webhook
58
79
  #
59
- # @see https://developers.lokalise.com/reference/regenerate-a-webhook-secret
60
- # @return [Hash]
80
+ # @see https://developers.lokalise.com/reference/delete-a-webhook
81
+ # @return [RubyLokaliseApi::Generics::DeletedResource]
61
82
  # @param project_id [String]
62
- # @param webhook_id [String, Integer]
63
- def regenerate_webhook_secret(project_id, webhook_id)
64
- c_r RubyLokaliseApi::Resources::Webhook, :regenerate_secret,
65
- [project_id, webhook_id, 'secret', 'regenerate']
83
+ # @param webhook_id [String]
84
+ def destroy_webhook(project_id, webhook_id)
85
+ params = { query: [project_id, webhook_id] }
86
+
87
+ data = endpoint(name: 'Webhooks', params: params).do_delete
88
+
89
+ RubyLokaliseApi::Generics::DeletedResource.new data.content
66
90
  end
67
91
  end
68
92
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ module Rest
5
+ include Utils::Loaders
6
+
7
+ include Rest::Branches
8
+ include Rest::Comments
9
+ include Rest::Contributors
10
+ include Rest::CustomTranslationStatuses
11
+ include Rest::Files
12
+ include Rest::Jwts
13
+ include Rest::Keys
14
+ include Rest::Languages
15
+ include Rest::Orders
16
+ include Rest::PaymentCards
17
+ include Rest::Projects
18
+ include Rest::QueuedProcesses
19
+ include Rest::Segments
20
+ include Rest::Screenshots
21
+ include Rest::Snapshots
22
+ include Rest::Tasks
23
+ include Rest::TeamUserBillingDetails
24
+ include Rest::Teams
25
+ include Rest::TeamUsers
26
+ include Rest::TeamUserGroups
27
+ include Rest::TranslationProviders
28
+ include Rest::Translations
29
+ include Rest::Webhooks
30
+ end
31
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ module Utils
5
+ module Attributes
6
+ using RubyLokaliseApi::Utils::Strings
7
+ using RubyLokaliseApi::Utils::Classes
8
+
9
+ private
10
+
11
+ UNIFIED_RESOURCES = %w[comment].freeze
12
+
13
+ # Loads attributes for the given resource based on its name
14
+ #
15
+ # @return [Array<String>]
16
+ def attributes_for(klass, filename)
17
+ @attributes ||= YAML.load_file(File.expand_path("../data/#{filename}", __dir__)).freeze
18
+
19
+ name = unify klass.base_name.snakecase
20
+
21
+ @attributes.key?(name) ? @attributes[name] : @attributes["#{name}s"]
22
+ end
23
+
24
+ # Unify some resources' names (eg, `ProjectComment` and `KeyComment` have the same
25
+ # attributes which are stored under `comment`)
26
+ #
27
+ # @return [String]
28
+ def unify(name)
29
+ UNIFIED_RESOURCES.each do |u_a|
30
+ return u_a if name.match?(/#{u_a}/)
31
+ end
32
+
33
+ name
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ module Utils
5
+ module Classes
6
+ refine Object do
7
+ # Turn `Module::Nested::ClassName` to just `ClassName`
8
+ def base_name
9
+ name.split('::').last
10
+ end
11
+
12
+ def to_array
13
+ is_a?(Array) ? self : [self]
14
+ end
15
+
16
+ def to_array_obj(key)
17
+ return self if is_a?(Hash) && (key?(key) || key?(key.to_s))
18
+
19
+ { key => to_array }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ module Utils
5
+ module Keys
6
+ using RubyLokaliseApi::Utils::Strings
7
+
8
+ def data_key_for(klass:)
9
+ key = if Module.const_defined? "RubyLokaliseApi::Resources::#{klass}::DATA_KEY"
10
+ Module.const_get "RubyLokaliseApi::Resources::#{klass}::DATA_KEY"
11
+ else
12
+ klass
13
+ end
14
+
15
+ key.snakecase
16
+ end
17
+
18
+ def collection_key_for(klass:)
19
+ key = if Module.const_defined?("RubyLokaliseApi::Collections::#{klass}::DATA_KEY")
20
+ Module.const_get("RubyLokaliseApi::Collections::#{klass}::DATA_KEY")
21
+ else
22
+ klass
23
+ end
24
+
25
+ key.snakecase
26
+ end
27
+ end
28
+ end
29
+ end