ruby-lokalise-api 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/CODE_OF_CONDUCT.md +46 -0
- data/.github/CONTRIBUTING.md +14 -0
- data/.github/ISSUE_TEMPLATE.md +13 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +11 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +917 -0
- data/Rakefile +16 -0
- data/lib/ruby-lokalise-api.rb +60 -0
- data/lib/ruby-lokalise-api/client.rb +22 -0
- data/lib/ruby-lokalise-api/collections/base.rb +46 -0
- data/lib/ruby-lokalise-api/collections/contributor.rb +13 -0
- data/lib/ruby-lokalise-api/collections/file.rb +13 -0
- data/lib/ruby-lokalise-api/collections/key.rb +13 -0
- data/lib/ruby-lokalise-api/collections/key_comment.rb +13 -0
- data/lib/ruby-lokalise-api/collections/project.rb +13 -0
- data/lib/ruby-lokalise-api/collections/project_comment.rb +13 -0
- data/lib/ruby-lokalise-api/collections/project_language.rb +13 -0
- data/lib/ruby-lokalise-api/collections/screenshot.rb +13 -0
- data/lib/ruby-lokalise-api/collections/snapshot.rb +13 -0
- data/lib/ruby-lokalise-api/collections/system_language.rb +13 -0
- data/lib/ruby-lokalise-api/collections/task.rb +13 -0
- data/lib/ruby-lokalise-api/collections/team.rb +13 -0
- data/lib/ruby-lokalise-api/collections/team_user.rb +13 -0
- data/lib/ruby-lokalise-api/collections/translation.rb +13 -0
- data/lib/ruby-lokalise-api/connection.rb +17 -0
- data/lib/ruby-lokalise-api/data/attributes.json +127 -0
- data/lib/ruby-lokalise-api/error.rb +47 -0
- data/lib/ruby-lokalise-api/request.rb +60 -0
- data/lib/ruby-lokalise-api/resources/base.rb +117 -0
- data/lib/ruby-lokalise-api/resources/contributor.rb +13 -0
- data/lib/ruby-lokalise-api/resources/file.rb +25 -0
- data/lib/ruby-lokalise-api/resources/key.rb +13 -0
- data/lib/ruby-lokalise-api/resources/key_comment.rb +15 -0
- data/lib/ruby-lokalise-api/resources/project.rb +18 -0
- data/lib/ruby-lokalise-api/resources/project_comment.rb +7 -0
- data/lib/ruby-lokalise-api/resources/project_language.rb +15 -0
- data/lib/ruby-lokalise-api/resources/screenshot.rb +13 -0
- data/lib/ruby-lokalise-api/resources/snapshot.rb +17 -0
- data/lib/ruby-lokalise-api/resources/system_language.rb +7 -0
- data/lib/ruby-lokalise-api/resources/task.rb +13 -0
- data/lib/ruby-lokalise-api/resources/team.rb +6 -0
- data/lib/ruby-lokalise-api/resources/team_user.rb +13 -0
- data/lib/ruby-lokalise-api/resources/translation.rb +13 -0
- data/lib/ruby-lokalise-api/rest/comments.rb +57 -0
- data/lib/ruby-lokalise-api/rest/contributors.rb +54 -0
- data/lib/ruby-lokalise-api/rest/files.rb +33 -0
- data/lib/ruby-lokalise-api/rest/keys.rb +75 -0
- data/lib/ruby-lokalise-api/rest/languages.rb +63 -0
- data/lib/ruby-lokalise-api/rest/projects.rb +58 -0
- data/lib/ruby-lokalise-api/rest/screenshots.rb +54 -0
- data/lib/ruby-lokalise-api/rest/snapshots.rb +43 -0
- data/lib/ruby-lokalise-api/rest/tasks.rb +54 -0
- data/lib/ruby-lokalise-api/rest/team_users.rb +44 -0
- data/lib/ruby-lokalise-api/rest/teams.rb +12 -0
- data/lib/ruby-lokalise-api/rest/translations.rb +35 -0
- data/lib/ruby-lokalise-api/utils/attribute_helpers.rb +52 -0
- data/lib/ruby-lokalise-api/utils/string_utils.rb +21 -0
- data/lib/ruby-lokalise-api/version.rb +3 -0
- data/ruby-lokalise-api.gemspec +32 -0
- data/spec/lib/ruby-lokalise-api/error_spec.rb +23 -0
- data/spec/lib/ruby-lokalise-api/rest/comments_spec.rb +78 -0
- data/spec/lib/ruby-lokalise-api/rest/contributors_spec.rb +79 -0
- data/spec/lib/ruby-lokalise-api/rest/files_spec.rb +53 -0
- data/spec/lib/ruby-lokalise-api/rest/keys_spec.rb +119 -0
- data/spec/lib/ruby-lokalise-api/rest/languages_spec.rb +91 -0
- data/spec/lib/ruby-lokalise-api/rest/projects_spec.rb +79 -0
- data/spec/lib/ruby-lokalise-api/rest/screenshots_spec.rb +76 -0
- data/spec/lib/ruby-lokalise-api/rest/snapshots_spec.rb +61 -0
- data/spec/lib/ruby-lokalise-api/rest/tasks_spec.rb +89 -0
- data/spec/lib/ruby-lokalise-api/rest/team_users_spec.rb +56 -0
- data/spec/lib/ruby-lokalise-api/rest/teams_spec.rb +22 -0
- data/spec/lib/ruby-lokalise-api/rest/translations_spec.rb +54 -0
- data/spec/lib/ruby-lokalise-api/utils/snakecase_spec.rb +17 -0
- data/spec/lib/ruby-lokalise-api_spec.rb +13 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/test_client.rb +5 -0
- data/spec/support/vcr.rb +8 -0
- metadata +255 -0
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rake'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'bundler/setup'
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
rescue LoadError
|
7
|
+
puts 'although not required, bundler is recommened for running the tests'
|
8
|
+
end
|
9
|
+
|
10
|
+
task default: :spec
|
11
|
+
|
12
|
+
require 'rspec/core/rake_task'
|
13
|
+
RSpec::Core::RakeTask.new(:spec)
|
14
|
+
|
15
|
+
require 'rubocop/rake_task'
|
16
|
+
RuboCop::RakeTask.new
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'multi_json'
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
require 'ruby-lokalise-api/version'
|
6
|
+
require 'ruby-lokalise-api/connection'
|
7
|
+
require 'ruby-lokalise-api/request'
|
8
|
+
require 'ruby-lokalise-api/error'
|
9
|
+
require 'ruby-lokalise-api/utils/string_utils'
|
10
|
+
require 'ruby-lokalise-api/utils/attribute_helpers'
|
11
|
+
|
12
|
+
require 'ruby-lokalise-api/resources/base'
|
13
|
+
require 'ruby-lokalise-api/resources/project'
|
14
|
+
require 'ruby-lokalise-api/resources/project_language'
|
15
|
+
require 'ruby-lokalise-api/resources/key_comment'
|
16
|
+
require 'ruby-lokalise-api/resources/contributor'
|
17
|
+
require 'ruby-lokalise-api/resources/file'
|
18
|
+
require 'ruby-lokalise-api/resources/translation'
|
19
|
+
require 'ruby-lokalise-api/resources/team_user'
|
20
|
+
require 'ruby-lokalise-api/resources/task'
|
21
|
+
require 'ruby-lokalise-api/resources/snapshot'
|
22
|
+
require 'ruby-lokalise-api/resources/screenshot'
|
23
|
+
require 'ruby-lokalise-api/resources/key'
|
24
|
+
require 'ruby-lokalise-api/resources/project_comment'
|
25
|
+
require 'ruby-lokalise-api/resources/system_language'
|
26
|
+
require 'ruby-lokalise-api/resources/team'
|
27
|
+
|
28
|
+
require 'ruby-lokalise-api/collections/base'
|
29
|
+
require 'ruby-lokalise-api/collections/project'
|
30
|
+
require 'ruby-lokalise-api/collections/team'
|
31
|
+
require 'ruby-lokalise-api/collections/system_language'
|
32
|
+
require 'ruby-lokalise-api/collections/project_language'
|
33
|
+
require 'ruby-lokalise-api/collections/project_comment'
|
34
|
+
require 'ruby-lokalise-api/collections/key_comment'
|
35
|
+
require 'ruby-lokalise-api/collections/key'
|
36
|
+
require 'ruby-lokalise-api/collections/contributor'
|
37
|
+
require 'ruby-lokalise-api/collections/file'
|
38
|
+
require 'ruby-lokalise-api/collections/translation'
|
39
|
+
require 'ruby-lokalise-api/collections/team_user'
|
40
|
+
require 'ruby-lokalise-api/collections/task'
|
41
|
+
require 'ruby-lokalise-api/collections/snapshot'
|
42
|
+
require 'ruby-lokalise-api/collections/screenshot'
|
43
|
+
|
44
|
+
require 'ruby-lokalise-api/client'
|
45
|
+
|
46
|
+
module Lokalise
|
47
|
+
class << self
|
48
|
+
# Initializes a new Client object
|
49
|
+
#
|
50
|
+
# @return [Lokalise::Client]
|
51
|
+
def client(token)
|
52
|
+
@client ||= Lokalise::Client.new token
|
53
|
+
end
|
54
|
+
|
55
|
+
# Reset the currently set client
|
56
|
+
def reset_client!
|
57
|
+
@client = nil
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'ruby-lokalise-api/rest/languages'
|
2
|
+
require 'ruby-lokalise-api/rest/teams'
|
3
|
+
require 'ruby-lokalise-api/rest/projects'
|
4
|
+
require 'ruby-lokalise-api/rest/comments'
|
5
|
+
require 'ruby-lokalise-api/rest/keys'
|
6
|
+
require 'ruby-lokalise-api/rest/contributors'
|
7
|
+
require 'ruby-lokalise-api/rest/files'
|
8
|
+
require 'ruby-lokalise-api/rest/translations'
|
9
|
+
require 'ruby-lokalise-api/rest/team_users'
|
10
|
+
require 'ruby-lokalise-api/rest/tasks'
|
11
|
+
require 'ruby-lokalise-api/rest/snapshots'
|
12
|
+
require 'ruby-lokalise-api/rest/screenshots'
|
13
|
+
|
14
|
+
module Lokalise
|
15
|
+
class Client
|
16
|
+
attr_reader :token
|
17
|
+
|
18
|
+
def initialize(token)
|
19
|
+
@token = token
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Lokalise
|
2
|
+
module Collections
|
3
|
+
class Base
|
4
|
+
extend Lokalise::Request
|
5
|
+
extend Lokalise::Utils::AttributeHelpers
|
6
|
+
include Lokalise::Utils::AttributeHelpers
|
7
|
+
|
8
|
+
attr_reader :raw_data, :total_pages, :total_results, :results_per_page, :current_page, :collection,
|
9
|
+
:project_id, :team_id
|
10
|
+
|
11
|
+
def initialize(response)
|
12
|
+
produce_collection_for response
|
13
|
+
@total_results = response['x-pagination-total-count'].to_i
|
14
|
+
@total_pages = response['x-pagination-page-count'].to_i
|
15
|
+
@results_per_page = response['x-pagination-limit'].to_i
|
16
|
+
@current_page = response['x-pagination-page'].to_i
|
17
|
+
# Project and team id may not be present in some cases
|
18
|
+
@project_id = response['content']['project_id']
|
19
|
+
@team_id = response['content']['team_id']
|
20
|
+
end
|
21
|
+
|
22
|
+
class << self
|
23
|
+
# Performs a batch query fetching multiple records
|
24
|
+
def all(client, params = {}, *ids)
|
25
|
+
new get(endpoint(*ids), client, params)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
# Dynamically produces collection of resources based on the given response
|
32
|
+
# Collection example: `{ "content": {"comments": [ ... ]} }`
|
33
|
+
def produce_collection_for(response)
|
34
|
+
model_class = self.class.name.base_class_name
|
35
|
+
data_key_plural = data_key_for model_class, true
|
36
|
+
|
37
|
+
# Fetch collection data and instantiate an individual resource for each object
|
38
|
+
# We also preserve the `client` to be able to chain API methods later
|
39
|
+
@collection = response['content'][data_key_plural].collect do |raw_model|
|
40
|
+
Module.const_get("Lokalise::Resources::#{model_class}").new 'content' => raw_model,
|
41
|
+
'client' => response['client']
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Lokalise
|
2
|
+
module Connection
|
3
|
+
BASE_URL = 'https://api.lokalise.co/api2/'.freeze
|
4
|
+
|
5
|
+
def connection(token)
|
6
|
+
options = {
|
7
|
+
headers: {
|
8
|
+
accept: 'application/json',
|
9
|
+
user_agent: "ruby-lokalise-api gem/#{Lokalise::VERSION}",
|
10
|
+
'X-Api-Token': token
|
11
|
+
},
|
12
|
+
url: BASE_URL
|
13
|
+
}
|
14
|
+
Faraday.new(options) { |faraday| faraday.adapter Faraday.default_adapter }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
{
|
2
|
+
"comment": [
|
3
|
+
"comment_id",
|
4
|
+
"key_id",
|
5
|
+
"comment",
|
6
|
+
"added_by",
|
7
|
+
"added_by_email",
|
8
|
+
"added_at"
|
9
|
+
],
|
10
|
+
"contributor": [
|
11
|
+
"user_id",
|
12
|
+
"email",
|
13
|
+
"fullname",
|
14
|
+
"created_at",
|
15
|
+
"is_admin",
|
16
|
+
"is_reviewer",
|
17
|
+
"languages",
|
18
|
+
"admin_rights"
|
19
|
+
],
|
20
|
+
"file": [
|
21
|
+
"filename",
|
22
|
+
"key_count"
|
23
|
+
],
|
24
|
+
"key": [
|
25
|
+
"key_id",
|
26
|
+
"created_at",
|
27
|
+
"key_name",
|
28
|
+
"filenames",
|
29
|
+
"description",
|
30
|
+
"platforms",
|
31
|
+
"tags",
|
32
|
+
"comments",
|
33
|
+
"screenshots",
|
34
|
+
"translations",
|
35
|
+
"is_plural",
|
36
|
+
"plural_name",
|
37
|
+
"is_hidden",
|
38
|
+
"is_archived",
|
39
|
+
"context",
|
40
|
+
"base_words",
|
41
|
+
"char_limit",
|
42
|
+
"custom_attributes"
|
43
|
+
],
|
44
|
+
"language": [
|
45
|
+
"lang_id",
|
46
|
+
"lang_iso",
|
47
|
+
"lang_name",
|
48
|
+
"is_rtl",
|
49
|
+
"plural_forms"
|
50
|
+
],
|
51
|
+
"project": [
|
52
|
+
"project_id",
|
53
|
+
"name",
|
54
|
+
"description",
|
55
|
+
"created_at",
|
56
|
+
"created_by",
|
57
|
+
"created_by_email",
|
58
|
+
"team_id"
|
59
|
+
],
|
60
|
+
"screenshot": [
|
61
|
+
"screenshot_id",
|
62
|
+
"key_ids",
|
63
|
+
"url",
|
64
|
+
"title",
|
65
|
+
"description",
|
66
|
+
"screenshot_tags",
|
67
|
+
"width",
|
68
|
+
"height"
|
69
|
+
],
|
70
|
+
"snapshot": [
|
71
|
+
"snapshot_id",
|
72
|
+
"title",
|
73
|
+
"created_at",
|
74
|
+
"created_by",
|
75
|
+
"created_by_email"
|
76
|
+
],
|
77
|
+
"task": [
|
78
|
+
"task_id",
|
79
|
+
"title",
|
80
|
+
"description",
|
81
|
+
"status",
|
82
|
+
"progress",
|
83
|
+
"due_date",
|
84
|
+
"keys_count",
|
85
|
+
"words_count",
|
86
|
+
"created_at",
|
87
|
+
"created_by",
|
88
|
+
"created_by_email",
|
89
|
+
"can_be_parent",
|
90
|
+
"task_type",
|
91
|
+
"parent_task_id",
|
92
|
+
"closing_tags",
|
93
|
+
"languages",
|
94
|
+
"auto_close_languages",
|
95
|
+
"auto_close_task",
|
96
|
+
"completed_at",
|
97
|
+
"completed_by",
|
98
|
+
"completed_by_email"
|
99
|
+
],
|
100
|
+
"team": [
|
101
|
+
"team_id",
|
102
|
+
"name",
|
103
|
+
"created_at",
|
104
|
+
"plan",
|
105
|
+
"quota_usage",
|
106
|
+
"quota_allowed"
|
107
|
+
],
|
108
|
+
"team_user": [
|
109
|
+
"user_id",
|
110
|
+
"email",
|
111
|
+
"fullname",
|
112
|
+
"created_at",
|
113
|
+
"role"
|
114
|
+
],
|
115
|
+
"translation": [
|
116
|
+
"translation_id",
|
117
|
+
"key_id",
|
118
|
+
"language_iso",
|
119
|
+
"modified_at",
|
120
|
+
"modified_by",
|
121
|
+
"modified_by_email",
|
122
|
+
"translation",
|
123
|
+
"is_fuzzy",
|
124
|
+
"is_reviewed",
|
125
|
+
"words"
|
126
|
+
]
|
127
|
+
}
|