ruby-lokalise-api 7.2.0 → 8.0.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 (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 +32 -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 +17 -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 +48 -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 +28 -0
  122. data/lib/ruby_lokalise_api/utils/keys.rb +33 -0
  123. data/lib/ruby_lokalise_api/utils/loaders.rb +27 -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 +3 -3
  128. metadata +76 -47
  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,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ # Basic utilitiy methods
5
+ module Utils
6
+ module Classes
7
+ refine Object do
8
+ # Turn `Module::Nested::ClassName` to just `ClassName`
9
+ def base_name
10
+ name.split('::').last
11
+ end
12
+
13
+ # Converts object to array unless it is already an array
14
+ def to_array
15
+ is_a?(Array) ? self : [self]
16
+ end
17
+
18
+ # Converts object to array and then places this array
19
+ # inside hash under the provided key
20
+ def to_array_obj(key)
21
+ return self if is_a?(Hash) && (key?(key) || key?(key.to_s))
22
+
23
+ { key => to_array }
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ module Utils
5
+ module Keys
6
+ using RubyLokaliseApi::Utils::Strings
7
+
8
+ # Reads DATA_KEY for resources. DATA_KEY specifies the name of the key
9
+ # in the API response that contains the actual data
10
+ def data_key_for(klass:)
11
+ key = if Module.const_defined? "RubyLokaliseApi::Resources::#{klass}::DATA_KEY"
12
+ Module.const_get "RubyLokaliseApi::Resources::#{klass}::DATA_KEY"
13
+ else
14
+ klass
15
+ end
16
+
17
+ key.snakecase
18
+ end
19
+
20
+ # Reads DATA_KEY for collections. DATA_KEY specifies the name of the key
21
+ # in the API response that contains the actual data
22
+ def collection_key_for(klass:)
23
+ key = if Module.const_defined?("RubyLokaliseApi::Collections::#{klass}::DATA_KEY")
24
+ Module.const_get("RubyLokaliseApi::Collections::#{klass}::DATA_KEY")
25
+ else
26
+ klass
27
+ end
28
+
29
+ key.snakecase
30
+ end
31
+ end
32
+ end
33
+ end