ruby-lokalise-api 2.10.0 → 3.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 +2 -2
- data/CHANGELOG.md +23 -0
- data/README.md +275 -180
- data/lib/ruby-lokalise-api.rb +2 -0
- data/lib/ruby-lokalise-api/client.rb +1 -0
- data/lib/ruby-lokalise-api/collections/base.rb +3 -2
- data/lib/ruby-lokalise-api/collections/queued_process.rb +15 -0
- data/lib/ruby-lokalise-api/data/attributes.json +12 -1
- data/lib/ruby-lokalise-api/resources/base.rb +33 -17
- 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 +4 -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 +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/translation.rb +1 -1
- data/lib/ruby-lokalise-api/resources/webhook.rb +1 -1
- 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_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 +5 -5
- data/lib/ruby-lokalise-api/version.rb +1 -1
- data/ruby-lokalise-api.gemspec +1 -2
- 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 +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 +12 -0
- data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/queued_processes_spec.rb +58 -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 +12 -0
- data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +12 -0
- data/spec/lib/ruby-lokalise-api/rest/webhooks_spec.rb +13 -0
- metadata +11 -6
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'
|
@@ -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
|
13
13
|
|
14
14
|
# Initializes a new collection based on the response
|
15
15
|
#
|
@@ -19,9 +19,10 @@ 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 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
|
+
@branch = response['content']['branch']
|
25
26
|
@request_params = params
|
26
27
|
@client = response['client']
|
27
28
|
@path = response['path']
|
@@ -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
|
@@ -105,6 +105,17 @@
|
|
105
105
|
"settings",
|
106
106
|
"statistics"
|
107
107
|
],
|
108
|
+
"queued_process": [
|
109
|
+
"process_id",
|
110
|
+
"type",
|
111
|
+
"status",
|
112
|
+
"message",
|
113
|
+
"created_by",
|
114
|
+
"created_by_email",
|
115
|
+
"created_at",
|
116
|
+
"created_at_timestamp",
|
117
|
+
"details"
|
118
|
+
],
|
108
119
|
"screenshot": [
|
109
120
|
"screenshot_id",
|
110
121
|
"key_ids",
|
@@ -211,4 +222,4 @@
|
|
211
222
|
"events",
|
212
223
|
"event_lang_map"
|
213
224
|
]
|
214
|
-
}
|
225
|
+
}
|
@@ -8,25 +8,30 @@ 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
|
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
23
|
|
20
24
|
@raw_data = response['content']
|
21
25
|
@project_id = response['content']['project_id']
|
26
|
+
@branch = response['content']['branch']
|
22
27
|
@client = response['client']
|
23
|
-
@path = infer_path_from response
|
28
|
+
@path = infer_path_from response, endpoint_generator
|
24
29
|
end
|
25
30
|
|
26
31
|
class << self
|
27
|
-
# Dynamically
|
32
|
+
# Dynamically adds attribute readers for each inherited class.
|
28
33
|
# Attributes are defined in the `data/attributes.json` file.
|
29
|
-
# Also
|
34
|
+
# Also sets the `ATTRIBUTES` constant to assign values to each attribute later when
|
30
35
|
# the response arrives from the API
|
31
36
|
def inherited(subclass)
|
32
37
|
klass_attributes = attributes_for subclass
|
@@ -43,7 +48,8 @@ module Lokalise
|
|
43
48
|
# Usage: `supports :update, :destroy, [:complex_method, '/sub/path', :update]`
|
44
49
|
def supports(*methods)
|
45
50
|
methods.each do |m_data|
|
46
|
-
method_name, sub_path, c_method =
|
51
|
+
method_name, sub_path, c_method =
|
52
|
+
m_data.is_a?(Array) ? m_data : [m_data, '', m_data]
|
47
53
|
define_method method_name do |params = {}|
|
48
54
|
path = instance_variable_get(:@path)
|
49
55
|
# If there's a sub_path, preserve the initial path to allow further chaining
|
@@ -56,30 +62,34 @@ module Lokalise
|
|
56
62
|
|
57
63
|
# Fetches a single record
|
58
64
|
def find(client, path, params = {})
|
59
|
-
new get(path, client, params)
|
65
|
+
new get(path, client, prepare_params(params))
|
60
66
|
end
|
61
67
|
|
62
68
|
# Creates one or multiple records
|
63
69
|
def create(client, path, params)
|
64
|
-
response = post path, client, params
|
65
|
-
|
70
|
+
response = post path, client, prepare_params(params)
|
66
71
|
object_from response, params
|
67
72
|
end
|
68
73
|
|
69
74
|
# Updates one or multiple records
|
70
75
|
def update(client, path, params)
|
71
|
-
response = put path, client, params
|
72
|
-
|
76
|
+
response = put path, client, prepare_params(params)
|
73
77
|
object_from response, params
|
74
78
|
end
|
75
79
|
|
76
80
|
# Destroys records by given ids
|
77
81
|
def destroy(client, path, params = {})
|
78
|
-
delete(path, client, params)['content']
|
82
|
+
delete(path, client, prepare_params(params))['content']
|
79
83
|
end
|
80
84
|
|
81
85
|
private
|
82
86
|
|
87
|
+
# Filters out internal attributes that should not be sent to Lokalise
|
88
|
+
def prepare_params(params)
|
89
|
+
filter_attrs = %i[_initial_path]
|
90
|
+
params.reject { |key, _v| filter_attrs.include?(key) }
|
91
|
+
end
|
92
|
+
|
83
93
|
# Instantiates a new resource or collection based on the given response
|
84
94
|
def object_from(response, params)
|
85
95
|
model_class = name.base_class_name
|
@@ -96,7 +106,6 @@ module Lokalise
|
|
96
106
|
|
97
107
|
def produce_resource(model_class, response)
|
98
108
|
data_key_singular = data_key_for model_class
|
99
|
-
|
100
109
|
if response['content'].key? data_key_singular
|
101
110
|
data = response['content'].delete data_key_singular
|
102
111
|
response['content'].merge! data
|
@@ -111,20 +120,27 @@ module Lokalise
|
|
111
120
|
end
|
112
121
|
|
113
122
|
# Generates path for the individual resource based on the path for the collection
|
114
|
-
def infer_path_from(response)
|
123
|
+
def infer_path_from(response, endpoint_generator = nil)
|
115
124
|
id_key = id_key_for self.class.name.base_class_name
|
116
125
|
data_key = data_key_for self.class.name.base_class_name
|
117
126
|
|
118
|
-
path_with_id response, id_key, data_key
|
127
|
+
path_with_id response, id_key, data_key, endpoint_generator
|
119
128
|
end
|
120
129
|
|
121
|
-
def path_with_id(response, id_key, data_key)
|
130
|
+
def path_with_id(response, id_key, data_key, endpoint_generator = nil)
|
122
131
|
# Some resources do not have ids at all
|
123
132
|
return nil unless response['content'].key?(id_key) || response['content'].key?(data_key)
|
124
133
|
|
125
134
|
# ID of the resource
|
126
135
|
id = id_from response, id_key, data_key
|
127
136
|
|
137
|
+
# If `endpoint_generator` is present, generate a new path
|
138
|
+
# based on the fetched id
|
139
|
+
if endpoint_generator
|
140
|
+
path = endpoint_generator.call project_id, id
|
141
|
+
return path.remove_trailing_slash
|
142
|
+
end
|
143
|
+
|
128
144
|
path = response['path'] || response['base_path']
|
129
145
|
# If path already has id - just return it
|
130
146
|
return path if path.match?(/#{id}\z/)
|
@@ -9,7 +9,10 @@ module Lokalise
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def upload(client, path, params)
|
12
|
-
|
12
|
+
params[:queue] = true
|
13
|
+
klass = Lokalise::Resources::QueuedProcess
|
14
|
+
klass.new post(path, client, params),
|
15
|
+
->(project_id, id) { klass.endpoint(project_id, id) }
|
13
16
|
end
|
14
17
|
|
15
18
|
def endpoint(project_id, action = '')
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lokalise
|
4
|
+
module Resources
|
5
|
+
class QueuedProcess < Base
|
6
|
+
DATA_KEY = 'Process'
|
7
|
+
ID_KEY = 'process'
|
8
|
+
supports [:reload_data, '', :find]
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def endpoint(project_id, process_id = nil)
|
12
|
+
path_from projects: project_id,
|
13
|
+
processes: process_id
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -11,7 +11,9 @@ module Lokalise
|
|
11
11
|
|
12
12
|
class << self
|
13
13
|
def restore(client, path, *_args)
|
14
|
-
Lokalise::Resources::Project
|
14
|
+
klass = Lokalise::Resources::Project
|
15
|
+
klass.new post(path, client),
|
16
|
+
->(project_id, *_ids) { klass.endpoint(project_id) }
|
15
17
|
end
|
16
18
|
|
17
19
|
def endpoint(project_id, snapshot_id = nil)
|
@@ -4,7 +4,7 @@ module Lokalise
|
|
4
4
|
class Client
|
5
5
|
# Returns a single comment for the given key
|
6
6
|
#
|
7
|
-
# @see https://lokalise.
|
7
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-retrieve-a-comment-get
|
8
8
|
# @return [Lokalise::Resources::Comment]
|
9
9
|
# @param project_id [String]
|
10
10
|
# @param key_id [String, Integer]
|
@@ -15,7 +15,7 @@ module Lokalise
|
|
15
15
|
|
16
16
|
# Returns all comments for all keys inside the given project
|
17
17
|
#
|
18
|
-
# @see https://lokalise.
|
18
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-list-project-comments-get
|
19
19
|
# @return [Lokalise::Collection::Comment<Lokalise::Resources::Comment>]
|
20
20
|
# @param project_id [String]
|
21
21
|
# @param params [Hash]
|
@@ -25,7 +25,7 @@ module Lokalise
|
|
25
25
|
|
26
26
|
# Returns all comments for the given key inside the given project
|
27
27
|
#
|
28
|
-
# @see https://lokalise.
|
28
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-list-key-comments-get
|
29
29
|
# @return [Lokalise::Collection::Comment<Lokalise::Resources::Comment>]
|
30
30
|
# @param project_id [String]
|
31
31
|
# @param key_id [String, Integer]
|
@@ -36,7 +36,7 @@ module Lokalise
|
|
36
36
|
|
37
37
|
# Creates one or more comments for the given key inside the given project
|
38
38
|
#
|
39
|
-
# @see https://lokalise.
|
39
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-create-comments-post
|
40
40
|
# @return [Lokalise::Collection::Comment<Lokalise::Resources::Comment>]
|
41
41
|
# @param project_id [String]
|
42
42
|
# @param key_id [String, Integer]
|
@@ -47,7 +47,7 @@ module Lokalise
|
|
47
47
|
|
48
48
|
# Deletes comment for the given key inside the given project
|
49
49
|
#
|
50
|
-
# @see https://lokalise.
|
50
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-delete-a-comment-delete
|
51
51
|
# @return [Hash]
|
52
52
|
# @param project_id [String]
|
53
53
|
# @param key_id [String, Integer]
|
@@ -4,7 +4,7 @@ module Lokalise
|
|
4
4
|
class Client
|
5
5
|
# Returns all contributors for the given project
|
6
6
|
#
|
7
|
-
# @see https://lokalise.
|
7
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-list-all-contributors-get
|
8
8
|
# @return [Lokalise::Collection::Contributor<Lokalise::Resources::Contributor>]
|
9
9
|
# @param project_id [String]
|
10
10
|
# @param params [Hash]
|
@@ -14,7 +14,7 @@ module Lokalise
|
|
14
14
|
|
15
15
|
# Returns a single contributor for the given project
|
16
16
|
#
|
17
|
-
# @see https://lokalise.
|
17
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-retrieve-a-contributor-get
|
18
18
|
# @return [Lokalise::Resources::Contributor]
|
19
19
|
# @param project_id [String]
|
20
20
|
# @param contributor_id [String, Integer]
|
@@ -24,7 +24,7 @@ module Lokalise
|
|
24
24
|
|
25
25
|
# Creates one or more contributors inside the given project
|
26
26
|
#
|
27
|
-
# @see https://lokalise.
|
27
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-create-contributors-post
|
28
28
|
# @return [Lokalise::Collection::Contributor<Lokalise::Resources::Contributor>]
|
29
29
|
# @param project_id [String]
|
30
30
|
# @param params [Hash, Array<Hash>]
|
@@ -34,7 +34,7 @@ module Lokalise
|
|
34
34
|
|
35
35
|
# Updates the given contributor inside the given project
|
36
36
|
#
|
37
|
-
# @see https://lokalise.
|
37
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-update-a-contributor-put
|
38
38
|
# @return [Lokalise::Resources::Contributor]
|
39
39
|
# @param project_id [String]
|
40
40
|
# @param contributor_id [String, Integer]
|
@@ -45,7 +45,7 @@ module Lokalise
|
|
45
45
|
|
46
46
|
# Deletes contributor inside the given project
|
47
47
|
#
|
48
|
-
# @see https://lokalise.
|
48
|
+
# @see https://app.lokalise.com/api2docs/curl/#transition-delete-a-contributor-delete
|
49
49
|
# @return [Hash]
|
50
50
|
# @param project_id [String]
|
51
51
|
# @param contributor_id [String, Integer]
|