ruby-lokalise-api 2.9.0 → 4.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.
- checksums.yaml +4 -4
- data/.github/CODE_OF_CONDUCT.md +1 -1
- data/.github/CONTRIBUTING.md +9 -2
- data/CHANGELOG.md +1 -75
- data/LICENSE +9 -18
- data/README.md +18 -1734
- data/lib/ruby-lokalise-api.rb +2 -0
- data/lib/ruby-lokalise-api/client.rb +16 -4
- data/lib/ruby-lokalise-api/collections/base.rb +5 -3
- data/lib/ruby-lokalise-api/collections/queued_process.rb +15 -0
- data/lib/ruby-lokalise-api/connection.rb +1 -1
- data/lib/ruby-lokalise-api/data/attributes.json +29 -13
- data/lib/ruby-lokalise-api/request.rb +8 -1
- data/lib/ruby-lokalise-api/resources/base.rb +55 -25
- data/lib/ruby-lokalise-api/resources/branch.rb +1 -1
- data/lib/ruby-lokalise-api/resources/contributor.rb +1 -1
- data/lib/ruby-lokalise-api/resources/custom_translation_status.rb +1 -1
- data/lib/ruby-lokalise-api/resources/file.rb +3 -1
- data/lib/ruby-lokalise-api/resources/key.rb +1 -1
- data/lib/ruby-lokalise-api/resources/key_comment.rb +1 -1
- data/lib/ruby-lokalise-api/resources/order.rb +2 -0
- data/lib/ruby-lokalise-api/resources/payment_card.rb +1 -1
- data/lib/ruby-lokalise-api/resources/project.rb +2 -2
- data/lib/ruby-lokalise-api/resources/project_language.rb +1 -1
- data/lib/ruby-lokalise-api/resources/queued_process.rb +18 -0
- data/lib/ruby-lokalise-api/resources/screenshot.rb +1 -1
- data/lib/ruby-lokalise-api/resources/snapshot.rb +3 -1
- data/lib/ruby-lokalise-api/resources/task.rb +1 -1
- data/lib/ruby-lokalise-api/resources/team_user.rb +1 -1
- data/lib/ruby-lokalise-api/resources/team_user_group.rb +2 -1
- data/lib/ruby-lokalise-api/resources/translation.rb +1 -1
- data/lib/ruby-lokalise-api/resources/translation_provider.rb +3 -0
- data/lib/ruby-lokalise-api/resources/webhook.rb +11 -3
- data/lib/ruby-lokalise-api/rest/comments.rb +5 -5
- data/lib/ruby-lokalise-api/rest/contributors.rb +5 -5
- data/lib/ruby-lokalise-api/rest/custom_translation_statuses.rb +6 -6
- data/lib/ruby-lokalise-api/rest/files.rb +3 -3
- data/lib/ruby-lokalise-api/rest/keys.rb +7 -7
- data/lib/ruby-lokalise-api/rest/languages.rb +6 -6
- data/lib/ruby-lokalise-api/rest/payment_cards.rb +3 -3
- data/lib/ruby-lokalise-api/rest/projects.rb +6 -6
- data/lib/ruby-lokalise-api/rest/queued_processes.rb +26 -0
- data/lib/ruby-lokalise-api/rest/screenshots.rb +5 -5
- data/lib/ruby-lokalise-api/rest/snapshots.rb +4 -4
- data/lib/ruby-lokalise-api/rest/tasks.rb +5 -5
- data/lib/ruby-lokalise-api/rest/team_user_group.rb +4 -4
- data/lib/ruby-lokalise-api/rest/team_users.rb +4 -4
- data/lib/ruby-lokalise-api/rest/teams.rb +1 -1
- data/lib/ruby-lokalise-api/rest/translation_providers.rb +2 -2
- data/lib/ruby-lokalise-api/rest/translations.rb +3 -3
- data/lib/ruby-lokalise-api/rest/webhooks.rb +16 -5
- data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +11 -6
- data/lib/ruby-lokalise-api/version.rb +1 -1
- data/ruby-lokalise-api.gemspec +7 -7
- data/spec/lib/ruby-lokalise-api/custom_json_parser_spec.rb +4 -4
- data/spec/lib/ruby-lokalise-api/error_spec.rb +8 -0
- data/spec/lib/ruby-lokalise-api/rest/branches_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/custom_translation_statuses_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/files_spec.rb +17 -9
- data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +38 -20
- data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/orders_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/payment_cards_spec.rb +19 -5
- data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb +57 -0
- data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +25 -0
- data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +20 -7
- data/spec/lib/ruby-lokalise-api/rest/team_user_groups_spec.rb +84 -0
- data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +13 -0
- data/spec/lib/ruby-lokalise-api/rest/translation_providers_spec.rb +5 -0
- data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb +50 -0
- metadata +25 -20
data/lib/ruby-lokalise-api.rb
CHANGED
@@ -17,6 +17,7 @@ require 'ruby-lokalise-api/resources/base'
|
|
17
17
|
require 'ruby-lokalise-api/resources/branch'
|
18
18
|
require 'ruby-lokalise-api/resources/project'
|
19
19
|
require 'ruby-lokalise-api/resources/project_language'
|
20
|
+
require 'ruby-lokalise-api/resources/queued_process'
|
20
21
|
require 'ruby-lokalise-api/resources/key_comment'
|
21
22
|
require 'ruby-lokalise-api/resources/contributor'
|
22
23
|
require 'ruby-lokalise-api/resources/file'
|
@@ -43,6 +44,7 @@ require 'ruby-lokalise-api/collections/team'
|
|
43
44
|
require 'ruby-lokalise-api/collections/system_language'
|
44
45
|
require 'ruby-lokalise-api/collections/project_language'
|
45
46
|
require 'ruby-lokalise-api/collections/project_comment'
|
47
|
+
require 'ruby-lokalise-api/collections/queued_process'
|
46
48
|
require 'ruby-lokalise-api/collections/key_comment'
|
47
49
|
require 'ruby-lokalise-api/collections/key'
|
48
50
|
require 'ruby-lokalise-api/collections/contributor'
|
@@ -4,6 +4,7 @@ require 'ruby-lokalise-api/rest/branches'
|
|
4
4
|
require 'ruby-lokalise-api/rest/languages'
|
5
5
|
require 'ruby-lokalise-api/rest/teams'
|
6
6
|
require 'ruby-lokalise-api/rest/projects'
|
7
|
+
require 'ruby-lokalise-api/rest/queued_processes'
|
7
8
|
require 'ruby-lokalise-api/rest/comments'
|
8
9
|
require 'ruby-lokalise-api/rest/keys'
|
9
10
|
require 'ruby-lokalise-api/rest/contributors'
|
@@ -27,14 +28,25 @@ module Lokalise
|
|
27
28
|
|
28
29
|
def initialize(token, params = {})
|
29
30
|
@token = token
|
30
|
-
@timeout = params.fetch(:timeout
|
31
|
-
@open_timeout = params.fetch(:open_timeout
|
31
|
+
@timeout = params.fetch(:timeout, nil)
|
32
|
+
@open_timeout = params.fetch(:open_timeout, nil)
|
32
33
|
end
|
33
34
|
|
34
|
-
|
35
|
+
# rubocop:disable Metrics/ParameterLists
|
36
|
+
# Constructs request to perform the specified action
|
37
|
+
# @param klass The actual class to call the method upon
|
38
|
+
# @param method [Symbol] The method to call (:new, :update, :create etc)
|
39
|
+
# @param endpoint_ids [Array, Hash] IDs that are used to generate the proper path to the endpoint
|
40
|
+
# @param params [Array, Hash] Request parameters
|
41
|
+
# @param object_key [String, Symbol] Key that should be used to wrap parameters into
|
42
|
+
# @param initial_ids [Array] IDs that should be used to generate base endpoint path. The base path is used for method chaining
|
43
|
+
def construct_request(klass, method, endpoint_ids, params = {}, object_key = nil, initial_ids = nil)
|
35
44
|
path = klass.endpoint(*endpoint_ids)
|
36
|
-
|
45
|
+
formatted_params = format_params(params, object_key)
|
46
|
+
formatted_params[:_initial_path] = klass.endpoint(*initial_ids) if initial_ids
|
47
|
+
klass.send method, self, path, formatted_params
|
37
48
|
end
|
49
|
+
# rubocop:enable Metrics/ParameterLists
|
38
50
|
|
39
51
|
# Converts `params` to hash with arrays under the `object_key` key.
|
40
52
|
# Used in bulk operations
|
@@ -9,7 +9,7 @@ module Lokalise
|
|
9
9
|
extend Lokalise::Utils::EndpointHelpers
|
10
10
|
|
11
11
|
attr_reader :total_pages, :total_results, :results_per_page, :current_page, :collection,
|
12
|
-
:project_id, :team_id, :request_params, :client, :path
|
12
|
+
:project_id, :team_id, :request_params, :client, :path, :branch, :user_id
|
13
13
|
|
14
14
|
# Initializes a new collection based on the response
|
15
15
|
#
|
@@ -19,9 +19,11 @@ module Lokalise
|
|
19
19
|
def initialize(response, params = {})
|
20
20
|
produce_collection_for response
|
21
21
|
populate_pagination_data_for response
|
22
|
-
# Project
|
22
|
+
# Project, team id, user id, and branch may not be present in some cases
|
23
23
|
@project_id = response['content']['project_id']
|
24
24
|
@team_id = response['content']['team_id']
|
25
|
+
@user_id = response['content']['user_id']
|
26
|
+
@branch = response['content']['branch']
|
25
27
|
@request_params = params
|
26
28
|
@client = response['client']
|
27
29
|
@path = response['path']
|
@@ -89,7 +91,7 @@ module Lokalise
|
|
89
91
|
# Collection example: `{ "content": {"comments": [ ... ]} }`
|
90
92
|
def produce_collection_for(response)
|
91
93
|
model_class = self.class.name.base_class_name
|
92
|
-
data_key_plural = data_key_for model_class, true, true
|
94
|
+
data_key_plural = data_key_for model_class: model_class, plural: true, collection: true
|
93
95
|
|
94
96
|
# Fetch collection data and instantiate an individual resource for each object
|
95
97
|
# We also preserve the `client` to be able to chain API methods later
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lokalise
|
4
|
+
module Collections
|
5
|
+
class QueuedProcess < Base
|
6
|
+
DATA_KEY_PLURAL = 'Processes'
|
7
|
+
|
8
|
+
class << self
|
9
|
+
def endpoint(project_id, *_args)
|
10
|
+
path_from projects: [project_id, 'processes']
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -21,11 +21,11 @@
|
|
21
21
|
"email",
|
22
22
|
"fullname",
|
23
23
|
"created_at",
|
24
|
+
"created_at_timestamp",
|
24
25
|
"is_admin",
|
25
26
|
"is_reviewer",
|
26
27
|
"languages",
|
27
|
-
"admin_rights"
|
28
|
-
"created_at_timestamp"
|
28
|
+
"admin_rights"
|
29
29
|
],
|
30
30
|
"custom_translation_status": [
|
31
31
|
"status_id",
|
@@ -39,6 +39,7 @@
|
|
39
39
|
"key": [
|
40
40
|
"key_id",
|
41
41
|
"created_at",
|
42
|
+
"created_at_timestamp",
|
42
43
|
"key_name",
|
43
44
|
"filenames",
|
44
45
|
"description",
|
@@ -55,7 +56,10 @@
|
|
55
56
|
"base_words",
|
56
57
|
"char_limit",
|
57
58
|
"custom_attributes",
|
58
|
-
"
|
59
|
+
"modified_at",
|
60
|
+
"modified_at_timestamp",
|
61
|
+
"translations_modified_at",
|
62
|
+
"translations_modified_at_timestamp"
|
59
63
|
],
|
60
64
|
"language": [
|
61
65
|
"lang_id",
|
@@ -70,6 +74,7 @@
|
|
70
74
|
"card_id",
|
71
75
|
"status",
|
72
76
|
"created_at",
|
77
|
+
"created_at_timestamp",
|
73
78
|
"created_by",
|
74
79
|
"created_by_email",
|
75
80
|
"source_language_iso",
|
@@ -81,8 +86,7 @@
|
|
81
86
|
"translation_tier",
|
82
87
|
"translation_tier_name",
|
83
88
|
"briefing",
|
84
|
-
"total"
|
85
|
-
"created_at_timestamp"
|
89
|
+
"total"
|
86
90
|
],
|
87
91
|
"payment_card": [
|
88
92
|
"card_id",
|
@@ -96,15 +100,26 @@
|
|
96
100
|
"name",
|
97
101
|
"description",
|
98
102
|
"created_at",
|
103
|
+
"created_at_timestamp",
|
99
104
|
"created_by",
|
100
105
|
"created_by_email",
|
101
106
|
"team_id",
|
102
|
-
"created_at_timestamp",
|
103
107
|
"base_language_id",
|
104
108
|
"base_language_iso",
|
105
109
|
"settings",
|
106
110
|
"statistics"
|
107
111
|
],
|
112
|
+
"queued_process": [
|
113
|
+
"process_id",
|
114
|
+
"type",
|
115
|
+
"status",
|
116
|
+
"message",
|
117
|
+
"created_by",
|
118
|
+
"created_by_email",
|
119
|
+
"created_at",
|
120
|
+
"created_at_timestamp",
|
121
|
+
"details"
|
122
|
+
],
|
108
123
|
"screenshot": [
|
109
124
|
"screenshot_id",
|
110
125
|
"key_ids",
|
@@ -121,9 +136,9 @@
|
|
121
136
|
"snapshot_id",
|
122
137
|
"title",
|
123
138
|
"created_at",
|
139
|
+
"created_at_timestamp",
|
124
140
|
"created_by",
|
125
|
-
"created_by_email"
|
126
|
-
"created_at_timestamp"
|
141
|
+
"created_by_email"
|
127
142
|
],
|
128
143
|
"task": [
|
129
144
|
"task_id",
|
@@ -147,6 +162,7 @@
|
|
147
162
|
"languages",
|
148
163
|
"auto_close_languages",
|
149
164
|
"auto_close_task",
|
165
|
+
"auto_close_items",
|
150
166
|
"completed_at",
|
151
167
|
"completed_at_timestamp",
|
152
168
|
"completed_by",
|
@@ -157,18 +173,18 @@
|
|
157
173
|
"team_id",
|
158
174
|
"name",
|
159
175
|
"created_at",
|
176
|
+
"created_at_timestamp",
|
160
177
|
"plan",
|
161
178
|
"quota_usage",
|
162
|
-
"quota_allowed"
|
163
|
-
"created_at_timestamp"
|
179
|
+
"quota_allowed"
|
164
180
|
],
|
165
181
|
"team_user": [
|
166
182
|
"user_id",
|
167
183
|
"email",
|
168
184
|
"fullname",
|
169
185
|
"created_at",
|
170
|
-
"
|
171
|
-
"
|
186
|
+
"created_at_timestamp",
|
187
|
+
"role"
|
172
188
|
],
|
173
189
|
"team_user_group": [
|
174
190
|
"group_id",
|
@@ -211,4 +227,4 @@
|
|
211
227
|
"events",
|
212
228
|
"event_lang_map"
|
213
229
|
]
|
214
|
-
}
|
230
|
+
}
|
@@ -29,6 +29,13 @@ module Lokalise
|
|
29
29
|
)
|
30
30
|
end
|
31
31
|
|
32
|
+
def patch(path, client, params = {})
|
33
|
+
respond_with(
|
34
|
+
connection(client).patch(prepare(path), params.any? ? custom_dump(params) : nil),
|
35
|
+
client
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
32
39
|
def delete(path, client, params = {})
|
33
40
|
respond_with(
|
34
41
|
# Rubocop tries to replace `delete` with `gsub` but that's a different method here!
|
@@ -45,7 +52,7 @@ module Lokalise
|
|
45
52
|
|
46
53
|
# Get rid of double slashes in the `path`, leading and trailing slash
|
47
54
|
def prepare(path)
|
48
|
-
path.
|
55
|
+
path.delete_prefix('/').gsub(%r{//}, '/').gsub(%r{/+\z}, '')
|
49
56
|
end
|
50
57
|
|
51
58
|
def respond_with(response, client)
|
@@ -8,25 +8,27 @@ module Lokalise
|
|
8
8
|
include Lokalise::Utils::AttributeHelpers
|
9
9
|
extend Lokalise::Utils::EndpointHelpers
|
10
10
|
|
11
|
-
attr_reader :raw_data, :project_id, :client, :path
|
11
|
+
attr_reader :raw_data, :project_id, :client, :path, :branch, :user_id, :team_id
|
12
12
|
|
13
|
-
# Initializes a new resource based on the response
|
13
|
+
# Initializes a new resource based on the response.
|
14
|
+
# `endpoint_generator` is used in cases when a new instance is generated
|
15
|
+
# from a different resource. For example, restoring from a snapshot
|
16
|
+
# creates a totally different project which should have a new path.
|
14
17
|
#
|
15
18
|
# @param response [Hash]
|
19
|
+
# @param endpoint_generator [Proc] Generate proper paths for certain resources
|
16
20
|
# @return [Lokalise::Resources::Base]
|
17
|
-
def initialize(response)
|
21
|
+
def initialize(response, endpoint_generator = nil)
|
18
22
|
populate_attributes_for response['content']
|
19
|
-
|
20
|
-
@raw_data = response['content']
|
21
|
-
@project_id = response['content']['project_id']
|
23
|
+
extract_common_attributes_for response['content']
|
22
24
|
@client = response['client']
|
23
|
-
@path = infer_path_from response
|
25
|
+
@path = infer_path_from response, endpoint_generator
|
24
26
|
end
|
25
27
|
|
26
28
|
class << self
|
27
|
-
# Dynamically
|
29
|
+
# Dynamically adds attribute readers for each inherited class.
|
28
30
|
# Attributes are defined in the `data/attributes.json` file.
|
29
|
-
# Also
|
31
|
+
# Also sets the `ATTRIBUTES` constant to assign values to each attribute later when
|
30
32
|
# the response arrives from the API
|
31
33
|
def inherited(subclass)
|
32
34
|
klass_attributes = attributes_for subclass
|
@@ -43,10 +45,16 @@ module Lokalise
|
|
43
45
|
# Usage: `supports :update, :destroy, [:complex_method, '/sub/path', :update]`
|
44
46
|
def supports(*methods)
|
45
47
|
methods.each do |m_data|
|
46
|
-
method_name
|
48
|
+
# `method_name` - the method that the resource should support
|
49
|
+
# `sub_path` - a string that has to be appended to a base path
|
50
|
+
# `c_method` - method name to delegate the work to
|
51
|
+
method_name, sub_path, c_method =
|
52
|
+
m_data.is_a?(Array) ? m_data : [m_data, '', m_data]
|
53
|
+
|
47
54
|
define_method method_name do |params = {}|
|
48
55
|
path = instance_variable_get(:@path)
|
49
|
-
# If there's a sub_path
|
56
|
+
# If there's a sub_path which is a string,
|
57
|
+
# preserve the initial path to allow further chaining
|
50
58
|
params = params.merge(_initial_path: path) if sub_path
|
51
59
|
self.class.send c_method, instance_variable_get(:@client),
|
52
60
|
path + sub_path, params
|
@@ -56,34 +64,38 @@ module Lokalise
|
|
56
64
|
|
57
65
|
# Fetches a single record
|
58
66
|
def find(client, path, params = {})
|
59
|
-
new get(path, client, params)
|
67
|
+
new get(path, client, prepare_params(params))
|
60
68
|
end
|
61
69
|
|
62
70
|
# Creates one or multiple records
|
63
71
|
def create(client, path, params)
|
64
|
-
response = post path, client, params
|
65
|
-
|
72
|
+
response = post path, client, prepare_params(params)
|
66
73
|
object_from response, params
|
67
74
|
end
|
68
75
|
|
69
76
|
# Updates one or multiple records
|
70
77
|
def update(client, path, params)
|
71
|
-
response = put path, client, params
|
72
|
-
|
78
|
+
response = put path, client, prepare_params(params)
|
73
79
|
object_from response, params
|
74
80
|
end
|
75
81
|
|
76
82
|
# Destroys records by given ids
|
77
83
|
def destroy(client, path, params = {})
|
78
|
-
delete(path, client, params)['content']
|
84
|
+
delete(path, client, prepare_params(params))['content']
|
79
85
|
end
|
80
86
|
|
81
87
|
private
|
82
88
|
|
89
|
+
# Filters out internal attributes that should not be sent to Lokalise
|
90
|
+
def prepare_params(params)
|
91
|
+
filter_attrs = %i[_initial_path]
|
92
|
+
params.reject { |key, _v| filter_attrs.include?(key) }
|
93
|
+
end
|
94
|
+
|
83
95
|
# Instantiates a new resource or collection based on the given response
|
84
96
|
def object_from(response, params)
|
85
97
|
model_class = name.base_class_name
|
86
|
-
data_key_plural = data_key_for model_class, true
|
98
|
+
data_key_plural = data_key_for model_class: model_class, plural: true
|
87
99
|
# Preserve the initial path to allow chaining
|
88
100
|
response['path'] = params.delete(:_initial_path) if params.key?(:_initial_path)
|
89
101
|
|
@@ -95,8 +107,7 @@ module Lokalise
|
|
95
107
|
end
|
96
108
|
|
97
109
|
def produce_resource(model_class, response)
|
98
|
-
data_key_singular = data_key_for model_class
|
99
|
-
|
110
|
+
data_key_singular = data_key_for model_class: model_class
|
100
111
|
if response['content'].key? data_key_singular
|
101
112
|
data = response['content'].delete data_key_singular
|
102
113
|
response['content'].merge! data
|
@@ -111,20 +122,27 @@ module Lokalise
|
|
111
122
|
end
|
112
123
|
|
113
124
|
# Generates path for the individual resource based on the path for the collection
|
114
|
-
def infer_path_from(response)
|
125
|
+
def infer_path_from(response, endpoint_generator = nil)
|
115
126
|
id_key = id_key_for self.class.name.base_class_name
|
116
|
-
data_key = data_key_for self.class.name.base_class_name
|
127
|
+
data_key = data_key_for model_class: self.class.name.base_class_name
|
117
128
|
|
118
|
-
path_with_id response, id_key, data_key
|
129
|
+
path_with_id response, id_key, data_key, endpoint_generator
|
119
130
|
end
|
120
131
|
|
121
|
-
def path_with_id(response, id_key, data_key)
|
132
|
+
def path_with_id(response, id_key, data_key, endpoint_generator = nil)
|
122
133
|
# Some resources do not have ids at all
|
123
134
|
return nil unless response['content'].key?(id_key) || response['content'].key?(data_key)
|
124
135
|
|
125
136
|
# ID of the resource
|
126
137
|
id = id_from response, id_key, data_key
|
127
138
|
|
139
|
+
# If `endpoint_generator` is present, generate a new path
|
140
|
+
# based on the fetched id
|
141
|
+
if endpoint_generator
|
142
|
+
path = endpoint_generator.call project_id, id
|
143
|
+
return path.remove_trailing_slash
|
144
|
+
end
|
145
|
+
|
128
146
|
path = response['path'] || response['base_path']
|
129
147
|
# If path already has id - just return it
|
130
148
|
return path if path.match?(/#{id}\z/)
|
@@ -146,7 +164,7 @@ module Lokalise
|
|
146
164
|
# Store all resources attributes under the corresponding instance variables.
|
147
165
|
# `ATTRIBUTES` is defined inside resource-specific classes
|
148
166
|
def populate_attributes_for(content)
|
149
|
-
data_key = data_key_for self.class.name.base_class_name
|
167
|
+
data_key = data_key_for model_class: self.class.name.base_class_name
|
150
168
|
|
151
169
|
self.class.const_get(:ATTRIBUTES).each do |attr|
|
152
170
|
value = if content.key?(data_key) && content[data_key].is_a?(Hash)
|
@@ -158,6 +176,18 @@ module Lokalise
|
|
158
176
|
instance_variable_set "@#{attr}", value
|
159
177
|
end
|
160
178
|
end
|
179
|
+
|
180
|
+
# Extracts all common attributes that resources have.
|
181
|
+
# Some of them may be absent in certain cases.
|
182
|
+
# rubocop:disable Naming/MemoizedInstanceVariableName
|
183
|
+
def extract_common_attributes_for(content)
|
184
|
+
@raw_data = content
|
185
|
+
@project_id ||= content['project_id']
|
186
|
+
@user_id ||= content['user_id']
|
187
|
+
@team_id ||= content['team_id']
|
188
|
+
@branch ||= content['branch']
|
189
|
+
end
|
190
|
+
# rubocop:enable Naming/MemoizedInstanceVariableName
|
161
191
|
end
|
162
192
|
end
|
163
193
|
end
|