deepl-rb 2.5.3 → 3.0.1
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/workflows/add_issues_to_kanban.yml +16 -0
- data/.gitlab-ci.yml +135 -0
- data/.rubocop.yml +27 -0
- data/CHANGELOG.md +39 -0
- data/CODE_OF_CONDUCT.md +132 -0
- data/CONTRIBUTING.md +37 -0
- data/Gemfile +3 -1
- data/LICENSE.md +1 -0
- data/README.md +115 -5
- data/Rakefile +7 -5
- data/SECURITY.md +58 -0
- data/VERSION +1 -1
- data/deepl-rb.gemspec +36 -20
- data/lib/deepl/api.rb +11 -1
- data/lib/deepl/configuration.rb +34 -3
- data/lib/deepl/document_api.rb +121 -0
- data/lib/deepl/exceptions/authorization_failed.rb +3 -0
- data/lib/deepl/exceptions/bad_request.rb +3 -0
- data/lib/deepl/exceptions/document_translation_error.rb +15 -0
- data/lib/deepl/exceptions/error.rb +6 -0
- data/lib/deepl/exceptions/limit_exceeded.rb +7 -0
- data/lib/deepl/exceptions/not_found.rb +3 -0
- data/lib/deepl/exceptions/not_supported.rb +3 -0
- data/lib/deepl/exceptions/quota_exceeded.rb +3 -0
- data/lib/deepl/exceptions/request_entity_too_large.rb +3 -0
- data/lib/deepl/exceptions/request_error.rb +4 -2
- data/lib/deepl/exceptions/server_error.rb +18 -0
- data/lib/deepl/glossary_api.rb +3 -0
- data/lib/deepl/requests/base.rb +89 -34
- data/lib/deepl/requests/document/download.rb +44 -0
- data/lib/deepl/requests/document/get_status.rb +44 -0
- data/lib/deepl/requests/document/upload.rb +64 -0
- data/lib/deepl/requests/glossary/create.rb +15 -1
- data/lib/deepl/requests/glossary/destroy.rb +8 -1
- data/lib/deepl/requests/glossary/entries.rb +8 -1
- data/lib/deepl/requests/glossary/find.rb +8 -1
- data/lib/deepl/requests/glossary/language_pairs.rb +9 -2
- data/lib/deepl/requests/glossary/list.rb +9 -2
- data/lib/deepl/requests/languages.rb +9 -2
- data/lib/deepl/requests/translate.rb +33 -11
- data/lib/deepl/requests/usage.rb +9 -2
- data/lib/deepl/resources/base.rb +3 -0
- data/lib/deepl/resources/document_handle.rb +57 -0
- data/lib/deepl/resources/document_translation_status.rb +54 -0
- data/lib/deepl/resources/glossary.rb +3 -0
- data/lib/deepl/resources/language.rb +3 -0
- data/lib/deepl/resources/language_pair.rb +3 -0
- data/lib/deepl/resources/text.rb +3 -0
- data/lib/deepl/resources/usage.rb +3 -0
- data/lib/deepl/utils/backoff_timer.rb +46 -0
- data/lib/deepl/utils/exception_builder.rb +18 -13
- data/lib/deepl.rb +47 -0
- data/lib/http_client_options.rb +22 -0
- data/license_checker.sh +8 -0
- data/spec/api/api_spec.rb +8 -4
- data/spec/api/configuration_spec.rb +92 -18
- data/spec/api/deepl_spec.rb +225 -86
- data/spec/fixtures/vcr_cassettes/deepl_document.yml +95 -0
- data/spec/fixtures/vcr_cassettes/deepl_document_download.yml +1214 -0
- data/spec/fixtures/vcr_cassettes/deepl_glossaries.yml +812 -23
- data/spec/fixtures/vcr_cassettes/deepl_languages.yml +28 -17
- data/spec/fixtures/vcr_cassettes/deepl_translate.yml +161 -53
- data/spec/fixtures/vcr_cassettes/deepl_usage.yml +93 -3
- data/spec/fixtures/vcr_cassettes/glossaries.yml +1237 -15
- data/spec/fixtures/vcr_cassettes/languages.yml +159 -44
- data/spec/fixtures/vcr_cassettes/translate_texts.yml +9742 -12
- data/spec/fixtures/vcr_cassettes/usage.yml +134 -2
- data/spec/integration_tests/document_api_spec.rb +155 -0
- data/spec/integration_tests/integration_test_utils.rb +170 -0
- data/spec/requests/glossary/create_spec.rb +23 -13
- data/spec/requests/glossary/destroy_spec.rb +33 -17
- data/spec/requests/glossary/entries_spec.rb +31 -17
- data/spec/requests/glossary/find_spec.rb +31 -17
- data/spec/requests/glossary/language_pairs_spec.rb +17 -7
- data/spec/requests/glossary/list_spec.rb +21 -11
- data/spec/requests/languages_spec.rb +31 -21
- data/spec/requests/translate_spec.rb +125 -131
- data/spec/requests/usage_spec.rb +17 -7
- data/spec/resources/glossary_spec.rb +15 -12
- data/spec/resources/language_pair_spec.rb +10 -7
- data/spec/resources/language_spec.rb +21 -18
- data/spec/resources/text_spec.rb +10 -7
- data/spec/resources/usage_spec.rb +16 -13
- data/spec/spec_helper.rb +63 -6
- metadata +32 -9
@@ -1,31 +1,34 @@
|
|
1
|
+
# Copyright 2018 Daniel Herzog
|
2
|
+
# Use of this source code is governed by an MIT
|
3
|
+
# license that can be found in the LICENSE.md file.
|
1
4
|
# frozen_string_literal: true
|
2
5
|
|
3
6
|
require 'spec_helper'
|
4
7
|
|
5
8
|
describe DeepL::Resources::Usage do
|
6
|
-
subject { described_class.new(3, 5, nil, nil) }
|
9
|
+
subject(:usage) { described_class.new(3, 5, nil, nil) }
|
7
10
|
|
8
11
|
describe '#initialize' do
|
9
|
-
context '
|
10
|
-
it '
|
11
|
-
expect(
|
12
|
+
context 'when building a basic object' do
|
13
|
+
it 'creates a resource' do
|
14
|
+
expect(usage).to be_a(described_class)
|
12
15
|
end
|
13
16
|
|
14
|
-
it '
|
15
|
-
expect(
|
16
|
-
expect(
|
17
|
+
it 'assigns the attributes' do
|
18
|
+
expect(usage.character_count).to eq(3)
|
19
|
+
expect(usage.character_limit).to eq(5)
|
17
20
|
end
|
18
21
|
|
19
|
-
it '
|
20
|
-
expect(
|
22
|
+
it 'does not exceed the quota' do
|
23
|
+
expect(usage).not_to be_quota_exceeded
|
21
24
|
end
|
22
25
|
end
|
23
26
|
|
24
|
-
context '
|
25
|
-
subject { described_class.new(5, 5, nil, nil) }
|
27
|
+
context 'when building a quota exceeded object' do
|
28
|
+
subject(:usage) { described_class.new(5, 5, nil, nil) }
|
26
29
|
|
27
|
-
it '
|
28
|
-
expect(
|
30
|
+
it 'exceeds the quota' do
|
31
|
+
expect(usage).to be_quota_exceeded
|
29
32
|
end
|
30
33
|
end
|
31
34
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,18 +1,56 @@
|
|
1
|
+
# Copyright 2018 Daniel Herzog
|
2
|
+
# Use of this source code is governed by an MIT
|
3
|
+
# license that can be found in the LICENSE.md file.
|
1
4
|
# frozen_string_literal: true
|
2
5
|
|
3
6
|
# Coverage
|
4
7
|
require 'simplecov'
|
5
8
|
SimpleCov.start
|
6
9
|
|
7
|
-
require '
|
8
|
-
SimpleCov.formatter = SimpleCov::Formatter::
|
10
|
+
require 'simplecov-cobertura'
|
11
|
+
SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
|
9
12
|
|
10
13
|
# Load lib
|
11
14
|
require_relative '../lib/deepl'
|
15
|
+
require_relative 'integration_tests/integration_test_utils'
|
12
16
|
|
13
17
|
# Lib config
|
14
18
|
ENV['DEEPL_AUTH_KEY'] ||= 'TEST-TOKEN'
|
15
19
|
|
20
|
+
# General helpers
|
21
|
+
def build_deepl_api
|
22
|
+
DeepL::API.new(DeepL::Configuration.new)
|
23
|
+
end
|
24
|
+
|
25
|
+
uri_ignoring_deepl_api_subdomain = lambda do |request1, request2|
|
26
|
+
deepl_api_regexp = %r{https?://api.*\.deepl\.com/}
|
27
|
+
uri1 = request1.uri
|
28
|
+
uri2 = request2.uri
|
29
|
+
uri1_match = uri1.match(deepl_api_regexp)
|
30
|
+
uri2_match = uri2.match(deepl_api_regexp)
|
31
|
+
if uri1_match && uri2_match
|
32
|
+
uri1_without_deepl_domain = uri1.gsub(uri1_match[0], '')
|
33
|
+
uri2_without_deepl_domain = uri2.gsub(uri2_match[0], '')
|
34
|
+
uri1_without_deepl_domain == uri2_without_deepl_domain
|
35
|
+
else
|
36
|
+
uri1 == uri2
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
headers_ignoring_user_agent = lambda do |request1, request2|
|
41
|
+
user_agent_key = 'User-Agent'
|
42
|
+
# Pass by reference, so we need to use a copy of the headers
|
43
|
+
headers1 = request1.headers.dup
|
44
|
+
headers2 = request2.headers.dup
|
45
|
+
headers1_has_user_agent = headers1.key?(user_agent_key)
|
46
|
+
headers2_has_user_agent = headers2.key?(user_agent_key)
|
47
|
+
return false if headers1_has_user_agent != headers2_has_user_agent
|
48
|
+
|
49
|
+
headers1.delete(user_agent_key)
|
50
|
+
headers2.delete(user_agent_key)
|
51
|
+
headers1 == headers2
|
52
|
+
end
|
53
|
+
|
16
54
|
# VCR tapes configuration
|
17
55
|
require 'vcr'
|
18
56
|
VCR.configure do |config|
|
@@ -20,12 +58,31 @@ VCR.configure do |config|
|
|
20
58
|
config.hook_into :webmock
|
21
59
|
config.filter_sensitive_data('VALID_TOKEN') { ENV.fetch('DEEPL_AUTH_KEY', nil) }
|
22
60
|
config.default_cassette_options = {
|
61
|
+
# Uncomment this line when adding new tests, run the tests once, then comment it again
|
23
62
|
# record: :new_episodes,
|
24
|
-
match_requests_on:
|
63
|
+
match_requests_on: [:method, uri_ignoring_deepl_api_subdomain, :body,
|
64
|
+
headers_ignoring_user_agent]
|
25
65
|
}
|
26
66
|
end
|
27
67
|
|
28
|
-
#
|
29
|
-
|
30
|
-
|
68
|
+
# Test helpers
|
69
|
+
|
70
|
+
def replace_env_preserving_deepl_vars
|
71
|
+
env_auth_key = ENV.fetch('DEEPL_AUTH_KEY', false)
|
72
|
+
env_server_url = ENV.fetch('DEEPL_SERVER_URL', false)
|
73
|
+
env_mock_server_port = ENV.fetch('DEEPL_MOCK_SERVER_PORT', false)
|
74
|
+
tmp_env = ENV.to_hash
|
75
|
+
ENV.clear
|
76
|
+
ENV['DEEPL_AUTH_KEY'] = (env_auth_key || 'VALID')
|
77
|
+
ENV['DEEPL_SERVER_URL'] = (env_server_url || '')
|
78
|
+
ENV['DEEPL_MOCK_SERVER_PORT'] = (env_mock_server_port || '')
|
79
|
+
tmp_env
|
80
|
+
end
|
81
|
+
|
82
|
+
def replace_env_preserving_deepl_vars_except_mock_server
|
83
|
+
env_auth_key = ENV.fetch('DEEPL_AUTH_KEY', false)
|
84
|
+
tmp_env = ENV.to_hash
|
85
|
+
ENV.clear
|
86
|
+
ENV['DEEPL_AUTH_KEY'] = (env_auth_key || 'VALID')
|
87
|
+
tmp_env
|
31
88
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deepl-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
7
|
+
- DeepL SE
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: juwelier
|
@@ -38,28 +38,38 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
description: '
|
42
|
-
check this: https://www.deepl.com/docs/api-reference.html'
|
43
|
-
email:
|
41
|
+
description: 'Official Ruby library for the DeepL language translation API (v2). For
|
42
|
+
more information, check this: https://www.deepl.com/docs/api-reference.html'
|
43
|
+
email: open-source@deepl.com
|
44
44
|
executables: []
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files:
|
47
|
+
- CHANGELOG.md
|
47
48
|
- LICENSE.md
|
48
49
|
- README.md
|
50
|
+
- license_checker.sh
|
49
51
|
files:
|
50
52
|
- ".circleci/config.yml"
|
53
|
+
- ".github/workflows/add_issues_to_kanban.yml"
|
54
|
+
- ".gitlab-ci.yml"
|
51
55
|
- ".rubocop.yml"
|
56
|
+
- CHANGELOG.md
|
57
|
+
- CODE_OF_CONDUCT.md
|
58
|
+
- CONTRIBUTING.md
|
52
59
|
- Gemfile
|
53
60
|
- LICENSE.md
|
54
61
|
- README.md
|
55
62
|
- Rakefile
|
63
|
+
- SECURITY.md
|
56
64
|
- VERSION
|
57
65
|
- deepl-rb.gemspec
|
58
66
|
- lib/deepl.rb
|
59
67
|
- lib/deepl/api.rb
|
60
68
|
- lib/deepl/configuration.rb
|
69
|
+
- lib/deepl/document_api.rb
|
61
70
|
- lib/deepl/exceptions/authorization_failed.rb
|
62
71
|
- lib/deepl/exceptions/bad_request.rb
|
72
|
+
- lib/deepl/exceptions/document_translation_error.rb
|
63
73
|
- lib/deepl/exceptions/error.rb
|
64
74
|
- lib/deepl/exceptions/limit_exceeded.rb
|
65
75
|
- lib/deepl/exceptions/not_found.rb
|
@@ -67,8 +77,12 @@ files:
|
|
67
77
|
- lib/deepl/exceptions/quota_exceeded.rb
|
68
78
|
- lib/deepl/exceptions/request_entity_too_large.rb
|
69
79
|
- lib/deepl/exceptions/request_error.rb
|
80
|
+
- lib/deepl/exceptions/server_error.rb
|
70
81
|
- lib/deepl/glossary_api.rb
|
71
82
|
- lib/deepl/requests/base.rb
|
83
|
+
- lib/deepl/requests/document/download.rb
|
84
|
+
- lib/deepl/requests/document/get_status.rb
|
85
|
+
- lib/deepl/requests/document/upload.rb
|
72
86
|
- lib/deepl/requests/glossary/create.rb
|
73
87
|
- lib/deepl/requests/glossary/destroy.rb
|
74
88
|
- lib/deepl/requests/glossary/entries.rb
|
@@ -79,15 +93,22 @@ files:
|
|
79
93
|
- lib/deepl/requests/translate.rb
|
80
94
|
- lib/deepl/requests/usage.rb
|
81
95
|
- lib/deepl/resources/base.rb
|
96
|
+
- lib/deepl/resources/document_handle.rb
|
97
|
+
- lib/deepl/resources/document_translation_status.rb
|
82
98
|
- lib/deepl/resources/glossary.rb
|
83
99
|
- lib/deepl/resources/language.rb
|
84
100
|
- lib/deepl/resources/language_pair.rb
|
85
101
|
- lib/deepl/resources/text.rb
|
86
102
|
- lib/deepl/resources/usage.rb
|
103
|
+
- lib/deepl/utils/backoff_timer.rb
|
87
104
|
- lib/deepl/utils/exception_builder.rb
|
105
|
+
- lib/http_client_options.rb
|
106
|
+
- license_checker.sh
|
88
107
|
- spec/api/api_spec.rb
|
89
108
|
- spec/api/configuration_spec.rb
|
90
109
|
- spec/api/deepl_spec.rb
|
110
|
+
- spec/fixtures/vcr_cassettes/deepl_document.yml
|
111
|
+
- spec/fixtures/vcr_cassettes/deepl_document_download.yml
|
91
112
|
- spec/fixtures/vcr_cassettes/deepl_glossaries.yml
|
92
113
|
- spec/fixtures/vcr_cassettes/deepl_languages.yml
|
93
114
|
- spec/fixtures/vcr_cassettes/deepl_translate.yml
|
@@ -96,6 +117,8 @@ files:
|
|
96
117
|
- spec/fixtures/vcr_cassettes/languages.yml
|
97
118
|
- spec/fixtures/vcr_cassettes/translate_texts.yml
|
98
119
|
- spec/fixtures/vcr_cassettes/usage.yml
|
120
|
+
- spec/integration_tests/document_api_spec.rb
|
121
|
+
- spec/integration_tests/integration_test_utils.rb
|
99
122
|
- spec/requests/glossary/create_spec.rb
|
100
123
|
- spec/requests/glossary/destroy_spec.rb
|
101
124
|
- spec/requests/glossary/entries_spec.rb
|
@@ -111,7 +134,7 @@ files:
|
|
111
134
|
- spec/resources/text_spec.rb
|
112
135
|
- spec/resources/usage_spec.rb
|
113
136
|
- spec/spec_helper.rb
|
114
|
-
homepage:
|
137
|
+
homepage: https://github.com/DeepLcom/deepl-rb
|
115
138
|
licenses:
|
116
139
|
- MIT
|
117
140
|
metadata: {}
|
@@ -130,8 +153,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
153
|
- !ruby/object:Gem::Version
|
131
154
|
version: '0'
|
132
155
|
requirements: []
|
133
|
-
rubygems_version: 3.
|
156
|
+
rubygems_version: 3.4.6
|
134
157
|
signing_key:
|
135
158
|
specification_version: 4
|
136
|
-
summary:
|
159
|
+
summary: Official Ruby library for the DeepL language translation API.
|
137
160
|
test_files: []
|