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,25 +3,10 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class Snapshot < Base
6
- ID_KEY = 'snapshot_id'
7
- supports :destroy
6
+ MAIN_PARAMS = %i[project_id snapshot_id].freeze
7
+ no_support_for %i[update reload_data]
8
8
 
9
- def restore
10
- self.class.restore @client, @path
11
- end
12
-
13
- class << self
14
- def restore(client, path, *_args)
15
- klass = RubyLokaliseApi::Resources::Project
16
- klass.new post(path, client),
17
- ->(project_id, *_ids) { klass.endpoint(project_id) }
18
- end
19
-
20
- def endpoint(project_id, snapshot_id = nil)
21
- path_from projects: project_id,
22
- snapshots: snapshot_id
23
- end
24
- end
9
+ delegate_call :restore, :restore_snapshot
25
10
  end
26
11
  end
27
12
  end
@@ -3,7 +3,8 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class SystemLanguage < Base
6
- DATA_KEY = 'Language'
6
+ MAIN_PARAMS = [].freeze
7
+ no_support_for %i[update destroy reload_data]
7
8
  end
8
9
  end
9
10
  end
@@ -3,15 +3,7 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class Task < Base
6
- ID_KEY = 'task_id'
7
- supports :update, :destroy, [:reload_data, '', :find]
8
-
9
- class << self
10
- def endpoint(project_id, task_id = nil)
11
- path_from projects: project_id,
12
- tasks: task_id
13
- end
14
- end
6
+ MAIN_PARAMS = %i[project_id task_id].freeze
15
7
  end
16
8
  end
17
9
  end
@@ -3,6 +3,8 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class Team < Base
6
+ MAIN_PARAMS = [].freeze
7
+ no_support_for %i[update destroy reload_data]
6
8
  end
7
9
  end
8
10
  end
@@ -3,15 +3,7 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class TeamUser < Base
6
- ID_KEY = 'user_id'
7
- supports :update, :destroy, [:reload_data, '', :find]
8
-
9
- class << self
10
- def endpoint(team_id, team_user_id = nil)
11
- path_from teams: team_id,
12
- users: team_user_id
13
- end
14
- end
6
+ MAIN_PARAMS = %i[team_id user_id].freeze
15
7
  end
16
8
  end
17
9
  end
@@ -3,11 +3,16 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class TeamUserBillingDetails < Base
6
- class << self
7
- def endpoint(team_id)
8
- path_from teams: team_id,
9
- billing_details: ''
10
- end
6
+ MAIN_PARAMS = %i[team_id].freeze
7
+ no_support_for %i[destroy]
8
+
9
+ def update(params)
10
+ response = reinit_endpoint(params).do_put
11
+
12
+ # We must patch content because the API does not return team_id and it's mandatory to build resource URL
13
+ response.patch_content_with 'team_id', @team_id
14
+
15
+ self.class.new response
11
16
  end
12
17
  end
13
18
  end
@@ -3,21 +3,13 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class TeamUserGroup < Base
6
- DATA_KEY = 'Group'
7
- ID_KEY = 'group_id'
8
- supports :update, :destroy,
9
- [:add_projects, '/projects/add', :update],
10
- [:remove_projects, '/projects/remove', :update],
11
- [:add_users, '/members/add', :update],
12
- [:remove_users, '/members/remove', :update],
13
- [:reload_data, '', :find]
6
+ MAIN_PARAMS = %i[team_id group_id].freeze
7
+ DATA_KEY = 'group'
14
8
 
15
- class << self
16
- def endpoint(team_id, team_user_group_id = nil, *actions)
17
- path_from teams: team_id,
18
- groups: [team_user_group_id, *actions]
19
- end
20
- end
9
+ delegate_call :add_projects, :add_projects_to_group
10
+ delegate_call :remove_projects, :remove_projects_from_group
11
+ delegate_call :add_members, :add_members_to_group
12
+ delegate_call :remove_members, :remove_members_from_group
21
13
  end
22
14
  end
23
15
  end
@@ -3,15 +3,8 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class Translation < Base
6
- ID_KEY = 'translation_id'
7
- supports :update, [:reload_data, '', :find]
8
-
9
- class << self
10
- def endpoint(project_id, translation_id = nil)
11
- path_from projects: project_id,
12
- translations: translation_id
13
- end
14
- end
6
+ MAIN_PARAMS = %i[project_id translation_id].freeze
7
+ no_support_for %i[destroy]
15
8
  end
16
9
  end
17
10
  end
@@ -3,15 +3,8 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class TranslationProvider < Base
6
- supports [:reload_data, '', :find]
7
- ID_KEY = 'provider_id'
8
-
9
- class << self
10
- def endpoint(team_id, provider_id = nil)
11
- path_from teams: team_id,
12
- translation_providers: provider_id
13
- end
14
- end
6
+ MAIN_PARAMS = %i[team_id provider_id].freeze
7
+ no_support_for %i[update destroy]
15
8
  end
16
9
  end
17
10
  end
@@ -3,23 +3,9 @@
3
3
  module RubyLokaliseApi
4
4
  module Resources
5
5
  class Webhook < Base
6
- ID_KEY = 'webhook_id'
7
- supports :update, :destroy, [:reload_data, '', :find]
6
+ MAIN_PARAMS = %i[project_id webhook_id].freeze
8
7
 
9
- def regenerate_secret
10
- self.class.regenerate_secret @client, "#{@path}/secret/regenerate"
11
- end
12
-
13
- class << self
14
- def regenerate_secret(client, path, *_args)
15
- patch(path, client)['content']
16
- end
17
-
18
- def endpoint(project_id, webhook_id = nil, *actions)
19
- path_from projects: project_id,
20
- webhooks: [webhook_id, *actions]
21
- end
22
- end
8
+ delegate_call :regenerate_secret, :regenerate_webhook_secret
23
9
  end
24
10
  end
25
11
  end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyLokaliseApi
4
+ # This class is utilized to prepare Lokalise API response
5
+ class Response
6
+ # Lokalise returns pagination info in special headers
7
+ PAGINATION_HEADERS = %w[x-pagination-total-count x-pagination-page-count x-pagination-limit
8
+ x-pagination-page].freeze
9
+
10
+ attr_reader :content, :endpoint, :headers
11
+
12
+ def initialize(body, endpoint, raw_headers = {})
13
+ @content = body
14
+ @endpoint = endpoint
15
+ @headers = extract_headers_from raw_headers
16
+ end
17
+
18
+ # Adds attribute to the raw content returned by the API.
19
+ # Sometimes this is required to store important data like team_id or project_id
20
+ # that is not returned in the response but required to properly build resources URIs
21
+ def patch_content_with(attribute, value)
22
+ @content[attribute] = value
23
+ end
24
+
25
+ # Sets endpoint to a new value.
26
+ # This is required in rare cases when the response contains a resource of different kind.
27
+ # For example, when restoring a snapshot, it returns a new project which means that
28
+ # initially we were working with a snapshots endpoint but the response should contain
29
+ # the projects endpoint to properly preserve method chaining
30
+ def patch_endpoint_with(new_endpoint)
31
+ @endpoint = new_endpoint
32
+ end
33
+
34
+ # Returns an array of pagination headers
35
+ def pagination_headers
36
+ self.class.const_get(:PAGINATION_HEADERS)
37
+ end
38
+
39
+ private
40
+
41
+ # Keep only pagination headers
42
+ def extract_headers_from(raw_headers)
43
+ raw_headers.
44
+ to_h.
45
+ keep_if { |header, _value| pagination_headers.include?(header) }.
46
+ transform_keys(&:to_sym).
47
+ transform_values(&:to_i)
48
+ end
49
+ end
50
+ end
@@ -3,66 +3,91 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module Branches
6
- # Returns all branches for the given project
6
+ # Returns project branches
7
7
  #
8
8
  # @see https://developers.lokalise.com/reference/list-all-branches
9
- # @return [RubyLokaliseApi::Collection::Branch<RubyLokaliseApi::Resources::Branch>]
9
+ # @return [RubyLokaliseApi::Collections::Branches]
10
10
  # @param project_id [String]
11
- # @param params [Hash]
12
- def branches(project_id, params = {})
13
- c_r RubyLokaliseApi::Collections::Branch, :all, project_id, params
11
+ # @param req_params [Hash]
12
+ def branches(project_id, req_params = {})
13
+ name = 'Branches'
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
- # Creates a new branch inside the given project
21
+ # Returns a single branch
17
22
  #
18
- # @see https://developers.lokalise.com/reference/create-a-branch
23
+ # @see https://developers.lokalise.com/reference/retrieve-a-branch
19
24
  # @return [RubyLokaliseApi::Resources::Branch]
20
25
  # @param project_id [String]
21
- # @param params [Hash]
22
- def create_branch(project_id, params)
23
- c_r RubyLokaliseApi::Resources::Branch, :create, project_id, params
26
+ # @param branch_id [String, Integer]
27
+ def branch(project_id, branch_id)
28
+ params = { query: [project_id, branch_id] }
29
+
30
+ data = endpoint(name: 'Branches', params: params).do_get
31
+
32
+ resource 'Branch', data
24
33
  end
25
34
 
26
- # Returns a single branch for the given project
35
+ # Creates a branch
27
36
  #
28
- # @see https://developers.lokalise.com/reference/retrieve-a-branch
37
+ # @see https://developers.lokalise.com/reference/create-a-branch
29
38
  # @return [RubyLokaliseApi::Resources::Branch]
30
39
  # @param project_id [String]
31
- # @param branch_id [String, Integer]
32
- def branch(project_id, branch_id)
33
- c_r RubyLokaliseApi::Resources::Branch, :find, [project_id, branch_id]
40
+ # @param req_params [Hash]
41
+ def create_branch(project_id, req_params)
42
+ params = { query: project_id, req: req_params }
43
+
44
+ data = endpoint(name: 'Branches', params: params).do_post
45
+
46
+ resource 'Branch', data
34
47
  end
35
48
 
36
- # Updates the given branch inside the given project
49
+ # Updates a branch
37
50
  #
38
51
  # @see https://developers.lokalise.com/reference/update-a-branch
39
52
  # @return [RubyLokaliseApi::Resources::Branch]
40
53
  # @param project_id [String]
41
54
  # @param branch_id [String, Integer]
42
- # @param params [Hash]
43
- def update_branch(project_id, branch_id, params)
44
- c_r RubyLokaliseApi::Resources::Branch, :update, [project_id, branch_id], params
55
+ # @param req_params [Hash]
56
+ def update_branch(project_id, branch_id, req_params = {})
57
+ params = { query: [project_id, branch_id], req: req_params }
58
+
59
+ data = endpoint(name: 'Branches', params: params).do_put
60
+
61
+ resource 'Branch', data
45
62
  end
46
63
 
47
- # Deletes branch inside the given project
64
+ # Deletes a branch
48
65
  #
49
66
  # @see https://developers.lokalise.com/reference/delete-a-branch
50
- # @return [Hash]
67
+ # @return [RubyLokaliseApi::Generics::DeletedResource]
51
68
  # @param project_id [String]
52
69
  # @param branch_id [String, Integer]
53
70
  def destroy_branch(project_id, branch_id)
54
- c_r RubyLokaliseApi::Resources::Branch, :destroy, [project_id, branch_id]
71
+ params = { query: [project_id, branch_id] }
72
+
73
+ data = endpoint(name: 'Branches', params: params).do_delete
74
+
75
+ RubyLokaliseApi::Generics::DeletedResource.new data.content
55
76
  end
56
77
 
57
- # Merges a branch in the project
78
+ # Merges two branches
58
79
  #
59
80
  # @see https://developers.lokalise.com/reference/merge-a-branch
60
- # @return [Hash]
81
+ # @return [RubyLokaliseApi::Generics::MergedBranches]
61
82
  # @param project_id [String]
62
83
  # @param branch_id [String, Integer]
63
- # @param params [Hash]
64
- def merge_branch(project_id, branch_id, params = {})
65
- c_r RubyLokaliseApi::Resources::Branch, :merge, [project_id, branch_id, :merge], params
84
+ # @param req_params [Hash]
85
+ def merge_branch(project_id, branch_id, req_params)
86
+ params = { query: [project_id, branch_id, :merge], req: req_params }
87
+
88
+ data = endpoint(name: 'Branches', params: params).do_post
89
+
90
+ RubyLokaliseApi::Generics::MergedBranches.new data.content
66
91
  end
67
92
  end
68
93
  end
@@ -3,7 +3,9 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module Comments
6
- # Returns a single comment for the given key
6
+ using RubyLokaliseApi::Utils::Classes
7
+
8
+ # Returns a single key comment
7
9
  #
8
10
  # @see https://developers.lokalise.com/reference/retrieve-a-comment
9
11
  # @return [RubyLokaliseApi::Resources::Comment]
@@ -11,50 +13,73 @@ module RubyLokaliseApi
11
13
  # @param key_id [String, Integer]
12
14
  # @param comment_id [String, Integer]
13
15
  def comment(project_id, key_id, comment_id)
14
- c_r RubyLokaliseApi::Resources::KeyComment, :find, [project_id, key_id, comment_id]
16
+ params = { query: [project_id, key_id, comment_id] }
17
+
18
+ data = endpoint(name: 'KeyComments', params: params).do_get
19
+
20
+ resource 'Comment', data
15
21
  end
16
22
 
17
- # Returns all comments for all keys inside the given project
23
+ # Returns all comments for a key
18
24
  #
19
- # @see https://developers.lokalise.com/reference/list-project-comments
20
- # @return [RubyLokaliseApi::Collection::Comment<RubyLokaliseApi::Resources::Comment>]
25
+ # @see https://developers.lokalise.com/reference/list-key-comments
26
+ # @return [RubyLokaliseApi::Collections::KeyComments]
21
27
  # @param project_id [String]
22
- # @param params [Hash]
23
- def project_comments(project_id, params = {})
24
- c_r RubyLokaliseApi::Collections::ProjectComment, :all, project_id, params
28
+ # @param key_id [String, Integer]
29
+ # @param req_params [Hash]
30
+ def comments(project_id, key_id, req_params = {})
31
+ name = 'KeyComments'
32
+ params = { query: [project_id, key_id], req: req_params }
33
+
34
+ data = endpoint(name: name, params: params).do_get
35
+
36
+ collection name, data
25
37
  end
26
38
 
27
- # Returns all comments for the given key inside the given project
39
+ # Returns all comments for a project
28
40
  #
29
- # @see https://developers.lokalise.com/reference/list-key-comments
30
- # @return [RubyLokaliseApi::Collection::Comment<RubyLokaliseApi::Resources::Comment>]
41
+ # @see https://developers.lokalise.com/reference/list-project-comments
42
+ # @return [RubyLokaliseApi::Collections::ProjectComments]
31
43
  # @param project_id [String]
32
- # @param key_id [String, Integer]
33
- # @param params [Hash]
34
- def comments(project_id, key_id, params = {})
35
- c_r RubyLokaliseApi::Collections::KeyComment, :all, [project_id, key_id], params
44
+ # @param req_params [Hash]
45
+ def project_comments(project_id, req_params = {})
46
+ name = 'ProjectComments'
47
+ params = { query: project_id, req: req_params }
48
+
49
+ data = endpoint(name: name, params: params).do_get
50
+
51
+ collection name, data
36
52
  end
37
53
 
38
- # Creates one or more comments for the given key inside the given project
54
+ # Creates one or multiple comments for a key
39
55
  #
40
56
  # @see https://developers.lokalise.com/reference/create-comments
41
- # @return [RubyLokaliseApi::Collection::Comment<RubyLokaliseApi::Resources::Comment>]
57
+ # @return [RubyLokaliseApi::Collections::KeyComments]
42
58
  # @param project_id [String]
43
59
  # @param key_id [String, Integer]
44
- # @param params [Hash, Array<Hash>]
45
- def create_comments(project_id, key_id, params)
46
- c_r RubyLokaliseApi::Resources::KeyComment, :create, [project_id, key_id], params, :comments
60
+ # @param req_params [Hash, Array]
61
+ def create_comments(project_id, key_id, req_params)
62
+ name = 'KeyComments'
63
+ params = { query: [project_id, key_id], req: req_params.to_array_obj(:comments) }
64
+
65
+ data = endpoint(name: name, params: params).do_post
66
+
67
+ collection name, data
47
68
  end
48
69
 
49
- # Deletes comment for the given key inside the given project
70
+ # Deletes a single key comment
50
71
  #
51
72
  # @see https://developers.lokalise.com/reference/delete-a-comment
52
- # @return [Hash]
73
+ # @return [RubyLokaliseApi::Generics::DeletedResource]
53
74
  # @param project_id [String]
54
75
  # @param key_id [String, Integer]
55
76
  # @param comment_id [String, Integer]
56
77
  def destroy_comment(project_id, key_id, comment_id)
57
- c_r RubyLokaliseApi::Resources::KeyComment, :destroy, [project_id, key_id, comment_id]
78
+ params = { query: [project_id, key_id, comment_id] }
79
+
80
+ data = endpoint(name: 'KeyComments', params: params).do_delete
81
+
82
+ RubyLokaliseApi::Generics::DeletedResource.new data.content
58
83
  end
59
84
  end
60
85
  end
@@ -3,55 +3,79 @@
3
3
  module RubyLokaliseApi
4
4
  module Rest
5
5
  module Contributors
6
- # Returns all contributors for the given project
7
- #
8
- # @see https://developers.lokalise.com/reference/list-all-contributors
9
- # @return [RubyLokaliseApi::Collection::Contributor<RubyLokaliseApi::Resources::Contributor>]
10
- # @param project_id [String]
11
- # @param params [Hash]
12
- def contributors(project_id, params = {})
13
- c_r RubyLokaliseApi::Collections::Contributor, :all, project_id, params
14
- end
6
+ using RubyLokaliseApi::Utils::Classes
15
7
 
16
- # Returns a single contributor for the given project
8
+ # Returns a single contributor
17
9
  #
18
10
  # @see https://developers.lokalise.com/reference/retrieve-a-contributor
19
11
  # @return [RubyLokaliseApi::Resources::Contributor]
20
12
  # @param project_id [String]
21
13
  # @param contributor_id [String, Integer]
22
14
  def contributor(project_id, contributor_id)
23
- c_r RubyLokaliseApi::Resources::Contributor, :find, [project_id, contributor_id]
15
+ params = { query: [project_id, contributor_id] }
16
+
17
+ data = endpoint(name: 'Contributors', params: params).do_get
18
+
19
+ resource 'Contributor', data
24
20
  end
25
21
 
26
- # Creates one or more contributors inside the given project
22
+ # Returns project contributors
23
+ #
24
+ # @see https://developers.lokalise.com/reference/list-all-contributors
25
+ # @return [RubyLokaliseApi::Collections::Contributors]
26
+ # @param project_id [String]
27
+ # @param req_params [Hash]
28
+ def contributors(project_id, req_params = {})
29
+ name = 'Contributors'
30
+ params = { query: project_id, req: req_params }
31
+
32
+ data = endpoint(name: name, params: params).do_get
33
+
34
+ collection name, data
35
+ end
36
+
37
+ # Creates one or multiple contributors for a project
27
38
  #
28
39
  # @see https://developers.lokalise.com/reference/create-contributors
29
- # @return [RubyLokaliseApi::Collection::Contributor<RubyLokaliseApi::Resources::Contributor>]
40
+ # @return [RubyLokaliseApi::Collections::Contributors]
30
41
  # @param project_id [String]
31
- # @param params [Hash, Array<Hash>]
32
- def create_contributors(project_id, params)
33
- c_r RubyLokaliseApi::Resources::Contributor, :create, project_id, params, :contributors
42
+ # @param req_params [Hash, Array]
43
+ def create_contributors(project_id, req_params)
44
+ name = 'Contributors'
45
+ params = { query: project_id, req: req_params.to_array_obj(:contributors) }
46
+
47
+ data = endpoint(name: name, params: params).do_post
48
+
49
+ collection name, data
34
50
  end
35
51
 
36
- # Updates the given contributor inside the given project
52
+ # Updates a contributor for a project
37
53
  #
38
54
  # @see https://developers.lokalise.com/reference/update-a-contributor
39
55
  # @return [RubyLokaliseApi::Resources::Contributor]
40
56
  # @param project_id [String]
41
57
  # @param contributor_id [String, Integer]
42
- # @param params [Hash]
43
- def update_contributor(project_id, contributor_id, params)
44
- c_r RubyLokaliseApi::Resources::Contributor, :update, [project_id, contributor_id], params
58
+ # @param req_params [Hash]
59
+ def update_contributor(project_id, contributor_id, req_params)
60
+ params = { query: [project_id, contributor_id], req: req_params }
61
+
62
+ data = endpoint(name: 'Contributors', params: params).do_put
63
+
64
+ resource 'Contributor', data
45
65
  end
46
66
 
47
- # Deletes contributor inside the given project
67
+ # Deletes a single contributor from the project
48
68
  #
49
69
  # @see https://developers.lokalise.com/reference/delete-a-contributor
50
- # @return [Hash]
70
+ # @return [RubyLokaliseApi::Generics::DeletedResource]
51
71
  # @param project_id [String]
52
72
  # @param contributor_id [String, Integer]
53
73
  def destroy_contributor(project_id, contributor_id)
54
- c_r RubyLokaliseApi::Resources::Contributor, :destroy, [project_id, contributor_id]
74
+ params = { query: [project_id, contributor_id] }
75
+
76
+ data = endpoint(name: 'Contributors', params: params).do_delete
77
+
78
+ RubyLokaliseApi::Generics::DeletedResource.new data.content
55
79
  end
56
80
  end
57
81
  end