crowdin-api 1.0.0 → 1.1.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/.gitignore +6 -3
- data/.rubocop_todo.yml +34 -13
- data/README.md +29 -22
- data/bin/crowdin-console +10 -7
- data/crowdin-api.gemspec +7 -4
- data/lib/crowdin-api/api-resources/languages.rb +3 -3
- data/lib/crowdin-api/api-resources/projects.rb +14 -7
- data/lib/crowdin-api/api-resources/source_files.rb +44 -54
- data/lib/crowdin-api/api-resources/source_strings.rb +74 -0
- data/lib/crowdin-api/api-resources/storages.rb +5 -5
- data/lib/crowdin-api/api-resources/translation_status.rb +14 -22
- data/lib/crowdin-api/api-resources/translations.rb +24 -30
- data/lib/crowdin-api/api-resources/workflows.rb +59 -0
- data/lib/crowdin-api/client/client.rb +32 -32
- data/lib/crowdin-api/client/configuration.rb +8 -5
- data/lib/crowdin-api/client/version.rb +1 -1
- data/lib/crowdin-api/core/api_errors_raiser.rb +29 -0
- data/lib/crowdin-api/core/errors.rb +1 -14
- data/lib/crowdin-api/core/request.rb +35 -11
- data/lib/crowdin-api.rb +4 -3
- data/spec/core/config-instance_spec.rb +50 -13
- data/spec/spec_helper.rb +6 -0
- metadata +25 -8
- data/lib/crowdin-api/core/payload.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc71aeec74dd34cef85bb90b9accdd273d18ce3fd8ba9888eb3ce6a073e6aff0
|
4
|
+
data.tar.gz: 39e8290a34930ad659e1ad5879f4f91283f82f88f2316c7f64f03ef524de35cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d95cbb784a0148eab14bce79dff1dd70735e60aecad95f3be2402ac525581bae5c42dfce8f888ab7255fa3096f7153201a3256d3a6f41821a35f9eaec215abab
|
7
|
+
data.tar.gz: 4b9604fa346136d64a69beb7643beff66433cbbc9102242f56bac6b3f9ebd23e29cc70339e63b9c1a754ce77cf71a6c624d1b97120a5b7f82fb3dbdcb3b23054
|
data/.gitignore
CHANGED
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2021-
|
3
|
+
# on 2021-12-13 20:26:23 UTC using RuboCop version 1.23.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -21,6 +21,13 @@ Gemspec/RequiredRubyVersion:
|
|
21
21
|
Exclude:
|
22
22
|
- 'crowdin-api.gemspec'
|
23
23
|
|
24
|
+
# Offense count: 2
|
25
|
+
# Cop supports --auto-correct.
|
26
|
+
# Configuration parameters: AllowForAlignment, AllowBeforeTrailingComments, ForceEqualSignAlignment.
|
27
|
+
Layout/ExtraSpacing:
|
28
|
+
Exclude:
|
29
|
+
- 'bin/crowdin-console'
|
30
|
+
|
24
31
|
# Offense count: 1
|
25
32
|
# Cop supports --auto-correct.
|
26
33
|
# Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
|
@@ -29,20 +36,21 @@ Layout/SpaceAroundOperators:
|
|
29
36
|
Exclude:
|
30
37
|
- 'crowdin-api.gemspec'
|
31
38
|
|
32
|
-
# Offense count: 1
|
33
|
-
Lint/MissingSuper:
|
34
|
-
Exclude:
|
35
|
-
- 'lib/crowdin-api/core/errors.rb'
|
36
|
-
|
37
39
|
# Offense count: 2
|
38
40
|
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
39
41
|
Metrics/AbcSize:
|
40
|
-
Max:
|
42
|
+
Max: 23
|
43
|
+
|
44
|
+
# Offense count: 1
|
45
|
+
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
46
|
+
# IgnoredMethods: refine
|
47
|
+
Metrics/BlockLength:
|
48
|
+
Max: 54
|
41
49
|
|
42
50
|
# Offense count: 4
|
43
51
|
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
44
52
|
Metrics/MethodLength:
|
45
|
-
Max:
|
53
|
+
Max: 18
|
46
54
|
|
47
55
|
# Offense count: 2
|
48
56
|
# Configuration parameters: CountComments, CountAsOne.
|
@@ -69,6 +77,13 @@ Naming/FileName:
|
|
69
77
|
- 'spec/core/config-instance_spec.rb'
|
70
78
|
- 'spec/crowdin-api_spec.rb'
|
71
79
|
|
80
|
+
# Offense count: 3
|
81
|
+
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
|
82
|
+
# SupportedStylesForLeadingUnderscores: disallowed, required, optional
|
83
|
+
Naming/MemoizedInstanceVariableName:
|
84
|
+
Exclude:
|
85
|
+
- 'lib/crowdin-api/client/client.rb'
|
86
|
+
|
72
87
|
# Offense count: 3
|
73
88
|
# Cop supports --auto-correct.
|
74
89
|
# Configuration parameters: PreferredName.
|
@@ -85,13 +100,13 @@ Style/AccessorGrouping:
|
|
85
100
|
- 'lib/crowdin-api/client/client.rb'
|
86
101
|
- 'lib/crowdin-api/client/configuration.rb'
|
87
102
|
|
88
|
-
# Offense count:
|
103
|
+
# Offense count: 2
|
89
104
|
# Cop supports --auto-correct.
|
90
105
|
Style/CollectionCompact:
|
91
106
|
Exclude:
|
92
|
-
- 'lib/crowdin-api/core/
|
107
|
+
- 'lib/crowdin-api/core/request.rb'
|
93
108
|
|
94
|
-
# Offense count:
|
109
|
+
# Offense count: 12
|
95
110
|
# Configuration parameters: AllowedConstants.
|
96
111
|
Style/Documentation:
|
97
112
|
Exclude:
|
@@ -100,13 +115,14 @@ Style/Documentation:
|
|
100
115
|
- 'lib/crowdin-api/api-resources/languages.rb'
|
101
116
|
- 'lib/crowdin-api/api-resources/projects.rb'
|
102
117
|
- 'lib/crowdin-api/api-resources/source_files.rb'
|
118
|
+
- 'lib/crowdin-api/api-resources/source_strings.rb'
|
103
119
|
- 'lib/crowdin-api/api-resources/storages.rb'
|
104
120
|
- 'lib/crowdin-api/api-resources/translation_status.rb'
|
105
121
|
- 'lib/crowdin-api/api-resources/translations.rb'
|
122
|
+
- 'lib/crowdin-api/api-resources/workflows.rb'
|
106
123
|
- 'lib/crowdin-api/client/client.rb'
|
107
124
|
- 'lib/crowdin-api/client/configuration.rb'
|
108
|
-
- 'lib/crowdin-api/core/
|
109
|
-
- 'lib/crowdin-api/core/payload.rb'
|
125
|
+
- 'lib/crowdin-api/core/api_errors_raiser.rb'
|
110
126
|
- 'lib/crowdin-api/core/request.rb'
|
111
127
|
|
112
128
|
# Offense count: 1
|
@@ -116,3 +132,8 @@ Style/Documentation:
|
|
116
132
|
Style/FrozenStringLiteralComment:
|
117
133
|
Exclude:
|
118
134
|
- 'bin/crowdin-console'
|
135
|
+
|
136
|
+
# Offense count: 1
|
137
|
+
Style/MixinUsage:
|
138
|
+
Exclude:
|
139
|
+
- 'bin/crowdin-console'
|
data/README.md
CHANGED
@@ -17,11 +17,9 @@ For more about Crowdin API v2 see the documentation:
|
|
17
17
|
[](https://rubygems.org/gems/crowdin-api)
|
18
18
|
|
19
19
|
[](https://github.com/crowdin/crowdin-api-client-ruby/actions/workflows/test-and-lint.yml)
|
20
|
-
[](https://codecov.io/gh/crowdin/crowdin-api-client-ruby)
|
22
|
-
|
20
|
+
[](https://codecov.io/gh/crowdin/crowdin-api-client-ruby)
|
23
21
|
[](https://github.com/crowdin/crowdin-api-client-ruby/issues)
|
24
|
-
[](https://github.com/crowdin/crowdin-api-client-ruby/blob/main/LICENSE)
|
25
23
|
|
26
24
|
## Table of Contents
|
27
25
|
* [Installation](#installation)
|
@@ -38,7 +36,7 @@ For more about Crowdin API v2 see the documentation:
|
|
38
36
|
Add this line to your application's Gemfile:
|
39
37
|
|
40
38
|
```gemfile
|
41
|
-
gem 'crowdin-api', '~> 1.
|
39
|
+
gem 'crowdin-api', '~> 1.1.0'
|
42
40
|
```
|
43
41
|
|
44
42
|
And then execute:
|
@@ -67,25 +65,31 @@ gem install crowdin-api
|
|
67
65
|
```ruby
|
68
66
|
require 'crowdin-api'
|
69
67
|
|
70
|
-
#
|
68
|
+
# Initialize a new Client instance with config options
|
71
69
|
crowdin = Crowdin::Client.new do |config|
|
72
70
|
config.api_token = 'YourApiToken'
|
73
71
|
end
|
74
|
-
|
72
|
+
|
73
|
+
# Or you can intialize Enterprise Client instance by specifying your organization_domain in config options
|
75
74
|
crowdin = Crowdin::Client.new do |config|
|
76
75
|
config.api_token = 'YourEnterpriseApiToken'
|
77
76
|
config.organization_domain = 'YourOrganizationDomain'
|
78
77
|
end
|
78
|
+
# Note: we use full specified organization domain if that includes .com
|
79
|
+
# config.organization_domain = your_domain -> https://your_domain.api.crowdin.com
|
80
|
+
# config.organization_domain = your_domain.com -> your_domain.com
|
79
81
|
|
80
|
-
#
|
81
|
-
|
82
|
-
# All Crowdin Client config options:
|
82
|
+
# All supported Crowdin Client config options now:
|
83
83
|
crowdin = Crowdin::Client.new do |config|
|
84
84
|
config.api_token = 'YourApiToken' # [String] required
|
85
85
|
config.organization_domain = 'YourOrganizationDomain' # [String] optional
|
86
86
|
config.project_id = 'YourProjectId' # [Integer] nil by default
|
87
87
|
config.enable_logger = true # [Boolean] false by default
|
88
88
|
end
|
89
|
+
# Note: Client will initialize default Logger instance if you have specify enable_logger to true,
|
90
|
+
# you can change it by crowdin.logger = YourLogger
|
91
|
+
|
92
|
+
# Also you can specify proxy by adding it to ENV['http_proxy'] before Client initialization
|
89
93
|
```
|
90
94
|
|
91
95
|
To generate a new token in Crowdin, follow these steps:
|
@@ -96,25 +100,25 @@ To generate a new token in Crowdin Enterprise, follow these steps:
|
|
96
100
|
- Go to *Account Settings* > *Access tokens* tab and click *New token*.
|
97
101
|
- Specify *Token Name*, select *Scopes* and *Projects*, click *Create*.
|
98
102
|
|
99
|
-
###
|
103
|
+
### Usage
|
100
104
|
|
101
105
|
```ruby
|
102
106
|
# Create Project
|
103
107
|
project = crowdin.add_project(name: your_project_name, sourceLanguageId: your_language_id)
|
104
108
|
|
105
109
|
# Get list of Projects
|
106
|
-
projects =
|
107
|
-
|
108
|
-
# Get specified project
|
109
|
-
project = client.get_project(your_project_id)
|
110
|
+
projects = crowdin.list_projects
|
110
111
|
|
111
112
|
# Get list of Projects with offset and limit
|
112
|
-
projects =
|
113
|
+
projects = crowdin.list_projects(offset: 10, limit: 20)
|
114
|
+
|
115
|
+
# Get specified project
|
116
|
+
project = crowdin.get_project(your_project_id)
|
113
117
|
|
114
118
|
# Add Storage
|
115
|
-
|
119
|
+
storage = crowdin.add_storage(File.open('YourFilename.extension', 'r'))
|
116
120
|
# or you can specify only filename
|
117
|
-
|
121
|
+
storage = crowdin.add_storage('YourFilename.extension')
|
118
122
|
|
119
123
|
# Download file
|
120
124
|
filename = crowdin.download_file(your_destination, your_file_id, your_project_id)
|
@@ -122,8 +126,10 @@ filename = crowdin.download_file(your_destination, your_file_id, your_project_id
|
|
122
126
|
# project_id is optional, as it can be initialized with a Crowdin Client
|
123
127
|
|
124
128
|
# File revisions
|
125
|
-
|
126
|
-
|
129
|
+
# with initialized project_id in your Client
|
130
|
+
file_revisions = crowdin.list_file_revisions(your_file_id, limit: 10)
|
131
|
+
# or you can specify your project_id
|
132
|
+
file_revisions = crowdin.list_file_revisions(your_file_id, { limit: 10 }, your_project_id)
|
127
133
|
```
|
128
134
|
|
129
135
|
### Command-Line Client
|
@@ -131,14 +137,15 @@ file_revisions = crowdin.list_file_revisions(your_file_id, { limit: 10, project_
|
|
131
137
|
The Crowdin Ruby client support crowdin-console, where you can test endpoints easier
|
132
138
|
|
133
139
|
```console
|
134
|
-
bundle exec crowdin-console --enable-logger --api-token API_TOKEN --project-id PROJECT_ID
|
140
|
+
$ bundle exec crowdin-console --enable-logger --api-token API_TOKEN --project-id PROJECT_ID
|
135
141
|
```
|
136
142
|
|
137
143
|
Or Crowdin Enterprise
|
138
144
|
|
139
145
|
```console
|
140
|
-
bundle exec crowdin-console --enable-logger --enterprise --api-token API_TOKEN --organization-domain YOUR_DOMAIN
|
146
|
+
$ bundle exec crowdin-console --enable-logger --enterprise --api-token API_TOKEN --organization-domain YOUR_DOMAIN --project-id PROJECT_ID
|
141
147
|
```
|
148
|
+
Note: you can specify full organization domain by adding .com
|
142
149
|
|
143
150
|
When execute you'll have IRB console with configured *@crowdin* instance
|
144
151
|
|
data/bin/crowdin-console
CHANGED
@@ -1,20 +1,23 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require 'bundler/setup'
|
4
3
|
require 'crowdin-api'
|
5
4
|
require 'optparse'
|
6
5
|
|
7
|
-
# You can specify your arguments when execute this script
|
8
6
|
#
|
9
|
-
#
|
7
|
+
# You can specify your options while executing this script
|
8
|
+
#
|
9
|
+
# Type bundle exec crowdin-console --help for more available options
|
10
10
|
#
|
11
11
|
# Example:
|
12
12
|
#
|
13
13
|
# bundle exec crowdin-console --enable-logger --api-token YOUR_API_TOKEN --project-id YOUR_PROJECT_ID
|
14
14
|
#
|
15
|
-
# or Enterpise API
|
15
|
+
# or Enterpise API:
|
16
16
|
#
|
17
17
|
# bundle exec crowdin-console --enterprise --api-token YOUR_ENTERPRISE_API_TOKEN --organization-domain YOUR_DOMAIN
|
18
|
+
#
|
19
|
+
|
20
|
+
include Crowdin::Errors::ApiErrorsRaiser
|
18
21
|
|
19
22
|
options = {}
|
20
23
|
|
@@ -24,14 +27,14 @@ OptionParser.new do |opts|
|
|
24
27
|
opts.on('--enterprise', 'Enterprise API') { |v| options[:enterprise] = v }
|
25
28
|
opts.on('--api-token TOKEN', 'API Token') { |v| options[:api_token] = v }
|
26
29
|
opts.on('--organization-domain DOMAIN', 'Organization Domain') { |v| options[:organization_domain] = v }
|
27
|
-
opts.on('--
|
30
|
+
opts.on('--project-id ID', 'Project ID') { |v| options[:project_id] = v }
|
28
31
|
opts.on('--enable-logger', 'Enable logger') { |v| options[:enable_logger] = v }
|
29
32
|
end.parse!
|
30
33
|
|
31
|
-
options[:api_token] ||
|
34
|
+
options[:api_token] || raise_api_token_is_required_error
|
32
35
|
|
33
36
|
if options[:enterprise]
|
34
|
-
options[:organization_domain] ||
|
37
|
+
options[:organization_domain] || raise_organization_domain_is_required_error
|
35
38
|
|
36
39
|
@crowdin = Crowdin::Client.new do |config|
|
37
40
|
config.api_token = options[:api_token]
|
data/crowdin-api.gemspec
CHANGED
@@ -6,10 +6,10 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.name = 'crowdin-api'
|
7
7
|
gem.version = Crowdin::Client::VERSION
|
8
8
|
gem.authors = ['Crowdin']
|
9
|
-
gem.email = ['support@crowdin.
|
10
|
-
gem.homepage = 'https://github.com/crowdin/crowdin-api
|
11
|
-
gem.summary = 'Client
|
12
|
-
gem.description = 'Ruby Client
|
9
|
+
gem.email = ['support@crowdin.com']
|
10
|
+
gem.homepage = 'https://github.com/crowdin/crowdin-api-client-ruby'
|
11
|
+
gem.summary = 'Ruby Client for the Crowdin API'
|
12
|
+
gem.description = 'The Crowdin Ruby Client is used to interact with the Crowdin API from Ruby'
|
13
13
|
gem.license = 'MIT'
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split("\n")
|
@@ -18,10 +18,13 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.bindir = 'bin'
|
19
19
|
gem.executables << 'crowdin-console'
|
20
20
|
|
21
|
+
gem.required_ruby_version = '>= 2.4'
|
22
|
+
|
21
23
|
gem.add_runtime_dependency 'open-uri', '>= 0.1.0', '< 0.2.0'
|
22
24
|
gem.add_runtime_dependency 'rest-client', '>= 2.0.0', '< 2.1.0'
|
23
25
|
|
24
26
|
gem.add_development_dependency 'bundler', '~> 2.2', '>= 2.2.32'
|
27
|
+
gem.add_development_dependency 'codecov', '~> 0.6.0'
|
25
28
|
gem.add_development_dependency 'rake', '~> 13.0', '>= 13.0.6'
|
26
29
|
gem.add_development_dependency 'rspec', '~> 3.10'
|
27
30
|
gem.add_development_dependency 'rubocop', '~> 1.23'
|
@@ -41,7 +41,7 @@ module Crowdin
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def get_language(language_id = nil)
|
44
|
-
language_id ||
|
44
|
+
language_id || raise_parameter_is_required_error(:language_id)
|
45
45
|
|
46
46
|
request = Web::Request.new(
|
47
47
|
self,
|
@@ -53,7 +53,7 @@ module Crowdin
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def delete_custom_language(language_id = nil)
|
56
|
-
language_id ||
|
56
|
+
language_id || raise_parameter_is_required_error(:language_id)
|
57
57
|
|
58
58
|
request = Web::Request.new(
|
59
59
|
self,
|
@@ -65,7 +65,7 @@ module Crowdin
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def edit_custom_language(language_id = nil)
|
68
|
-
language_id ||
|
68
|
+
language_id || raise_parameter_is_required_error(:language_id)
|
69
69
|
|
70
70
|
request = Web::Request.new(
|
71
71
|
self,
|
@@ -26,7 +26,7 @@ module Crowdin
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def get_project(project_id = nil)
|
29
|
-
project_id ||
|
29
|
+
project_id || raise_parameter_is_required_error(:project_id)
|
30
30
|
|
31
31
|
request = Web::Request.new(
|
32
32
|
self,
|
@@ -38,7 +38,7 @@ module Crowdin
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def delete_project(project_id = nil)
|
41
|
-
project_id ||
|
41
|
+
project_id || raise_parameter_is_required_error(:project_id)
|
42
42
|
|
43
43
|
request = Web::Request.new(
|
44
44
|
self,
|
@@ -50,7 +50,7 @@ module Crowdin
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def edit_project(project_id = nil, query = {})
|
53
|
-
project_id ||
|
53
|
+
project_id || raise_parameter_is_required_error(:project_id)
|
54
54
|
|
55
55
|
request = Web::Request.new(
|
56
56
|
self,
|
@@ -62,9 +62,11 @@ module Crowdin
|
|
62
62
|
request.perform
|
63
63
|
end
|
64
64
|
|
65
|
-
# For Enterprise
|
65
|
+
# For Enterprise mode only
|
66
66
|
|
67
67
|
def list_groups(query = {})
|
68
|
+
config.enterprise_mode? || raise_only_for_enterprise_mode_error
|
69
|
+
|
68
70
|
request = Web::Request.new(
|
69
71
|
self,
|
70
72
|
:get,
|
@@ -76,6 +78,8 @@ module Crowdin
|
|
76
78
|
end
|
77
79
|
|
78
80
|
def add_group(query = {})
|
81
|
+
config.enterprise_mode? || raise_only_for_enterprise_mode_error
|
82
|
+
|
79
83
|
request = Web::Request.new(
|
80
84
|
self,
|
81
85
|
:post,
|
@@ -87,7 +91,8 @@ module Crowdin
|
|
87
91
|
end
|
88
92
|
|
89
93
|
def get_group(group_id = nil)
|
90
|
-
|
94
|
+
config.enterprise_mode? || raise_only_for_enterprise_mode_error
|
95
|
+
group_id || raise_parameter_is_required_error(:group_id)
|
91
96
|
|
92
97
|
request = Web::Request.new(
|
93
98
|
self,
|
@@ -99,7 +104,8 @@ module Crowdin
|
|
99
104
|
end
|
100
105
|
|
101
106
|
def delete_group(group_id = nil)
|
102
|
-
|
107
|
+
config.enterprise_mode? || raise_only_for_enterprise_mode_error
|
108
|
+
group_id || raise_parameter_is_required_error(:group_id)
|
103
109
|
|
104
110
|
request = Web::Request.new(
|
105
111
|
self,
|
@@ -111,7 +117,8 @@ module Crowdin
|
|
111
117
|
end
|
112
118
|
|
113
119
|
def edit_group(group_id = nil, query = {})
|
114
|
-
|
120
|
+
config.enterprise_mode? || raise_only_for_enterprise_mode_error
|
121
|
+
group_id || raise_parameter_is_required_error(:group_id)
|
115
122
|
|
116
123
|
request = Web::Request.new(
|
117
124
|
self,
|