deepl-rb 3.6.0 → 3.6.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.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +27 -0
  3. data/.github/workflows/add_issues_to_kanban.yml +16 -0
  4. data/.gitlab-ci.yml +172 -0
  5. data/.rubocop.yml +51 -0
  6. data/CHANGELOG.md +22 -3
  7. data/CODE_OF_CONDUCT.md +132 -0
  8. data/CONTRIBUTING.md +37 -0
  9. data/Gemfile +24 -0
  10. data/Rakefile +56 -0
  11. data/SECURITY.md +58 -0
  12. data/VERSION +1 -0
  13. data/deepl-rb.gemspec +140 -0
  14. data/lib/deepl/api.rb +22 -0
  15. data/lib/deepl/configuration.rb +59 -0
  16. data/lib/deepl/constants/base_constant.rb +18 -0
  17. data/lib/deepl/constants/formality.rb +16 -0
  18. data/lib/deepl/constants/model_type.rb +14 -0
  19. data/lib/deepl/constants/split_sentences.rb +14 -0
  20. data/lib/deepl/constants/tag_handling.rb +13 -0
  21. data/lib/deepl/constants/tone.rb +20 -0
  22. data/lib/deepl/constants/writing_style.rb +20 -0
  23. data/lib/deepl/document_api.rb +121 -0
  24. data/lib/deepl/exceptions/authorization_failed.rb +14 -0
  25. data/lib/deepl/exceptions/bad_request.rb +16 -0
  26. data/lib/deepl/exceptions/document_translation_error.rb +15 -0
  27. data/lib/deepl/exceptions/error.rb +14 -0
  28. data/lib/deepl/exceptions/limit_exceeded.rb +18 -0
  29. data/lib/deepl/exceptions/not_found.rb +16 -0
  30. data/lib/deepl/exceptions/not_supported.rb +14 -0
  31. data/lib/deepl/exceptions/quota_exceeded.rb +14 -0
  32. data/lib/deepl/exceptions/request_entity_too_large.rb +15 -0
  33. data/lib/deepl/exceptions/request_error.rb +21 -0
  34. data/lib/deepl/exceptions/server_error.rb +18 -0
  35. data/lib/deepl/glossary_api.rb +38 -0
  36. data/lib/deepl/requests/base.rb +196 -0
  37. data/lib/deepl/requests/document/download.rb +44 -0
  38. data/lib/deepl/requests/document/get_status.rb +44 -0
  39. data/lib/deepl/requests/document/upload.rb +74 -0
  40. data/lib/deepl/requests/glossary/create.rb +59 -0
  41. data/lib/deepl/requests/glossary/destroy.rb +37 -0
  42. data/lib/deepl/requests/glossary/entries.rb +37 -0
  43. data/lib/deepl/requests/glossary/find.rb +38 -0
  44. data/lib/deepl/requests/glossary/language_pairs.rb +38 -0
  45. data/lib/deepl/requests/glossary/list.rb +37 -0
  46. data/lib/deepl/requests/languages.rb +37 -0
  47. data/lib/deepl/requests/rephrase.rb +55 -0
  48. data/lib/deepl/requests/style_rule/list.rb +59 -0
  49. data/lib/deepl/requests/translate.rb +93 -0
  50. data/lib/deepl/requests/usage.rb +33 -0
  51. data/lib/deepl/resources/base.rb +17 -0
  52. data/lib/deepl/resources/document_handle.rb +57 -0
  53. data/lib/deepl/resources/document_translation_status.rb +54 -0
  54. data/lib/deepl/resources/glossary.rb +28 -0
  55. data/lib/deepl/resources/language.rb +30 -0
  56. data/lib/deepl/resources/language_pair.rb +23 -0
  57. data/lib/deepl/resources/style_rule.rb +85 -0
  58. data/lib/deepl/resources/text.rb +24 -0
  59. data/lib/deepl/resources/usage.rb +27 -0
  60. data/lib/deepl/style_rule_api.rb +17 -0
  61. data/lib/deepl/utils/backoff_timer.rb +46 -0
  62. data/lib/deepl/utils/exception_builder.rb +34 -0
  63. data/lib/deepl.rb +158 -0
  64. data/lib/http_client_options.rb +22 -0
  65. data/lib/version.rb +8 -0
  66. data/spec/api/api_spec.rb +20 -0
  67. data/spec/api/configuration_spec.rb +122 -0
  68. data/spec/api/deepl_spec.rb +460 -0
  69. data/spec/constants/constants_spec.rb +158 -0
  70. data/spec/fixtures/vcr_cassettes/deepl_document.yml +95 -0
  71. data/spec/fixtures/vcr_cassettes/deepl_document_download.yml +1214 -0
  72. data/spec/fixtures/vcr_cassettes/deepl_glossaries.yml +1163 -0
  73. data/spec/fixtures/vcr_cassettes/deepl_languages.yml +54 -0
  74. data/spec/fixtures/vcr_cassettes/deepl_rephrase.yml +87 -0
  75. data/spec/fixtures/vcr_cassettes/deepl_translate.yml +358 -0
  76. data/spec/fixtures/vcr_cassettes/deepl_usage.yml +129 -0
  77. data/spec/fixtures/vcr_cassettes/glossaries.yml +1702 -0
  78. data/spec/fixtures/vcr_cassettes/languages.yml +229 -0
  79. data/spec/fixtures/vcr_cassettes/rephrase_texts.yml +401 -0
  80. data/spec/fixtures/vcr_cassettes/style_rules.yml +92 -0
  81. data/spec/fixtures/vcr_cassettes/translate_texts.yml +10630 -0
  82. data/spec/fixtures/vcr_cassettes/usage.yml +171 -0
  83. data/spec/integration_tests/document_api_spec.rb +178 -0
  84. data/spec/integration_tests/integration_test_utils.rb +170 -0
  85. data/spec/integration_tests/style_rule_api_spec.rb +79 -0
  86. data/spec/requests/extra_body_parameters_types_spec.rb +82 -0
  87. data/spec/requests/glossary/create_spec.rb +65 -0
  88. data/spec/requests/glossary/destroy_spec.rb +66 -0
  89. data/spec/requests/glossary/entries_spec.rb +62 -0
  90. data/spec/requests/glossary/find_spec.rb +68 -0
  91. data/spec/requests/glossary/language_pairs_spec.rb +40 -0
  92. data/spec/requests/glossary/list_spec.rb +54 -0
  93. data/spec/requests/languages_spec.rb +68 -0
  94. data/spec/requests/rephrase_spec.rb +172 -0
  95. data/spec/requests/translate_spec.rb +493 -0
  96. data/spec/requests/usage_spec.rb +43 -0
  97. data/spec/resources/glossary_spec.rb +38 -0
  98. data/spec/resources/language_pair_spec.rb +23 -0
  99. data/spec/resources/language_spec.rb +45 -0
  100. data/spec/resources/text_spec.rb +23 -0
  101. data/spec/resources/usage_spec.rb +35 -0
  102. data/spec/spec_helper.rb +92 -0
  103. metadata +102 -2
@@ -0,0 +1,35 @@
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.
4
+ # frozen_string_literal: true
5
+
6
+ require 'spec_helper'
7
+
8
+ describe DeepL::Resources::Usage do
9
+ subject(:usage) { described_class.new(3, 5, nil, nil) }
10
+
11
+ describe '#initialize' do
12
+ context 'when building a basic object' do
13
+ it 'creates a resource' do
14
+ expect(usage).to be_a(described_class)
15
+ end
16
+
17
+ it 'assigns the attributes' do
18
+ expect(usage.character_count).to eq(3)
19
+ expect(usage.character_limit).to eq(5)
20
+ end
21
+
22
+ it 'does not exceed the quota' do
23
+ expect(usage).not_to be_quota_exceeded
24
+ end
25
+ end
26
+
27
+ context 'when building a quota exceeded object' do
28
+ subject(:usage) { described_class.new(5, 5, nil, nil) }
29
+
30
+ it 'exceeds the quota' do
31
+ expect(usage).to be_quota_exceeded
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,92 @@
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.
4
+ # frozen_string_literal: true
5
+
6
+ # Coverage
7
+ require 'simplecov'
8
+ SimpleCov.start
9
+
10
+ require 'simplecov-cobertura'
11
+ SimpleCov.formatter = SimpleCov::Formatter::CoberturaFormatter
12
+
13
+ # Load lib
14
+ require_relative '../lib/deepl'
15
+ require_relative 'integration_tests/integration_test_utils'
16
+
17
+ # Lib config
18
+ ENV['DEEPL_AUTH_KEY'] ||= 'TEST-TOKEN'
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
+
54
+ # VCR tapes configuration
55
+ require 'vcr'
56
+ VCR.configure do |config|
57
+ config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
58
+ config.hook_into :webmock
59
+ config.filter_sensitive_data('VALID_TOKEN') { ENV.fetch('DEEPL_AUTH_KEY', nil) }
60
+
61
+ # to record new or missing VCR cassettes, call rspec like this:
62
+ # $ VCR_RECORD_MODE=new_episodes bundle exec rspec
63
+
64
+ record_mode = ENV['VCR_RECORD_MODE'] ? ENV['VCR_RECORD_MODE'].to_sym : :none
65
+ config.default_cassette_options = {
66
+ record: record_mode,
67
+ match_requests_on: [:method, uri_ignoring_deepl_api_subdomain, :body,
68
+ headers_ignoring_user_agent]
69
+ }
70
+ end
71
+
72
+ # Test helpers
73
+
74
+ def replace_env_preserving_deepl_vars
75
+ env_auth_key = ENV.fetch('DEEPL_AUTH_KEY', false)
76
+ env_server_url = ENV.fetch('DEEPL_SERVER_URL', false)
77
+ env_mock_server_port = ENV.fetch('DEEPL_MOCK_SERVER_PORT', false)
78
+ tmp_env = ENV.to_hash
79
+ ENV.clear
80
+ ENV['DEEPL_AUTH_KEY'] = (env_auth_key || 'VALID')
81
+ ENV['DEEPL_SERVER_URL'] = (env_server_url || '')
82
+ ENV['DEEPL_MOCK_SERVER_PORT'] = (env_mock_server_port || '')
83
+ tmp_env
84
+ end
85
+
86
+ def replace_env_preserving_deepl_vars_except_mock_server
87
+ env_auth_key = ENV.fetch('DEEPL_AUTH_KEY', false)
88
+ tmp_env = ENV.to_hash
89
+ ENV.clear
90
+ ENV['DEEPL_AUTH_KEY'] = (env_auth_key || 'VALID')
91
+ tmp_env
92
+ 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: 3.6.0
4
+ version: 3.6.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: 2025-12-18 00:00:00.000000000 Z
11
+ date: 2025-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: juwelier
@@ -49,10 +49,110 @@ extra_rdoc_files:
49
49
  - README.md
50
50
  - license_checker.sh
51
51
  files:
52
+ - ".circleci/config.yml"
53
+ - ".github/workflows/add_issues_to_kanban.yml"
54
+ - ".gitlab-ci.yml"
55
+ - ".rubocop.yml"
52
56
  - CHANGELOG.md
57
+ - CODE_OF_CONDUCT.md
58
+ - CONTRIBUTING.md
59
+ - Gemfile
53
60
  - LICENSE.md
54
61
  - README.md
62
+ - Rakefile
63
+ - SECURITY.md
64
+ - VERSION
65
+ - deepl-rb.gemspec
66
+ - lib/deepl.rb
67
+ - lib/deepl/api.rb
68
+ - lib/deepl/configuration.rb
69
+ - lib/deepl/constants/base_constant.rb
70
+ - lib/deepl/constants/formality.rb
71
+ - lib/deepl/constants/model_type.rb
72
+ - lib/deepl/constants/split_sentences.rb
73
+ - lib/deepl/constants/tag_handling.rb
74
+ - lib/deepl/constants/tone.rb
75
+ - lib/deepl/constants/writing_style.rb
76
+ - lib/deepl/document_api.rb
77
+ - lib/deepl/exceptions/authorization_failed.rb
78
+ - lib/deepl/exceptions/bad_request.rb
79
+ - lib/deepl/exceptions/document_translation_error.rb
80
+ - lib/deepl/exceptions/error.rb
81
+ - lib/deepl/exceptions/limit_exceeded.rb
82
+ - lib/deepl/exceptions/not_found.rb
83
+ - lib/deepl/exceptions/not_supported.rb
84
+ - lib/deepl/exceptions/quota_exceeded.rb
85
+ - lib/deepl/exceptions/request_entity_too_large.rb
86
+ - lib/deepl/exceptions/request_error.rb
87
+ - lib/deepl/exceptions/server_error.rb
88
+ - lib/deepl/glossary_api.rb
89
+ - lib/deepl/requests/base.rb
90
+ - lib/deepl/requests/document/download.rb
91
+ - lib/deepl/requests/document/get_status.rb
92
+ - lib/deepl/requests/document/upload.rb
93
+ - lib/deepl/requests/glossary/create.rb
94
+ - lib/deepl/requests/glossary/destroy.rb
95
+ - lib/deepl/requests/glossary/entries.rb
96
+ - lib/deepl/requests/glossary/find.rb
97
+ - lib/deepl/requests/glossary/language_pairs.rb
98
+ - lib/deepl/requests/glossary/list.rb
99
+ - lib/deepl/requests/languages.rb
100
+ - lib/deepl/requests/rephrase.rb
101
+ - lib/deepl/requests/style_rule/list.rb
102
+ - lib/deepl/requests/translate.rb
103
+ - lib/deepl/requests/usage.rb
104
+ - lib/deepl/resources/base.rb
105
+ - lib/deepl/resources/document_handle.rb
106
+ - lib/deepl/resources/document_translation_status.rb
107
+ - lib/deepl/resources/glossary.rb
108
+ - lib/deepl/resources/language.rb
109
+ - lib/deepl/resources/language_pair.rb
110
+ - lib/deepl/resources/style_rule.rb
111
+ - lib/deepl/resources/text.rb
112
+ - lib/deepl/resources/usage.rb
113
+ - lib/deepl/style_rule_api.rb
114
+ - lib/deepl/utils/backoff_timer.rb
115
+ - lib/deepl/utils/exception_builder.rb
116
+ - lib/http_client_options.rb
117
+ - lib/version.rb
55
118
  - license_checker.sh
119
+ - spec/api/api_spec.rb
120
+ - spec/api/configuration_spec.rb
121
+ - spec/api/deepl_spec.rb
122
+ - spec/constants/constants_spec.rb
123
+ - spec/fixtures/vcr_cassettes/deepl_document.yml
124
+ - spec/fixtures/vcr_cassettes/deepl_document_download.yml
125
+ - spec/fixtures/vcr_cassettes/deepl_glossaries.yml
126
+ - spec/fixtures/vcr_cassettes/deepl_languages.yml
127
+ - spec/fixtures/vcr_cassettes/deepl_rephrase.yml
128
+ - spec/fixtures/vcr_cassettes/deepl_translate.yml
129
+ - spec/fixtures/vcr_cassettes/deepl_usage.yml
130
+ - spec/fixtures/vcr_cassettes/glossaries.yml
131
+ - spec/fixtures/vcr_cassettes/languages.yml
132
+ - spec/fixtures/vcr_cassettes/rephrase_texts.yml
133
+ - spec/fixtures/vcr_cassettes/style_rules.yml
134
+ - spec/fixtures/vcr_cassettes/translate_texts.yml
135
+ - spec/fixtures/vcr_cassettes/usage.yml
136
+ - spec/integration_tests/document_api_spec.rb
137
+ - spec/integration_tests/integration_test_utils.rb
138
+ - spec/integration_tests/style_rule_api_spec.rb
139
+ - spec/requests/extra_body_parameters_types_spec.rb
140
+ - spec/requests/glossary/create_spec.rb
141
+ - spec/requests/glossary/destroy_spec.rb
142
+ - spec/requests/glossary/entries_spec.rb
143
+ - spec/requests/glossary/find_spec.rb
144
+ - spec/requests/glossary/language_pairs_spec.rb
145
+ - spec/requests/glossary/list_spec.rb
146
+ - spec/requests/languages_spec.rb
147
+ - spec/requests/rephrase_spec.rb
148
+ - spec/requests/translate_spec.rb
149
+ - spec/requests/usage_spec.rb
150
+ - spec/resources/glossary_spec.rb
151
+ - spec/resources/language_pair_spec.rb
152
+ - spec/resources/language_spec.rb
153
+ - spec/resources/text_spec.rb
154
+ - spec/resources/usage_spec.rb
155
+ - spec/spec_helper.rb
56
156
  homepage: https://github.com/DeepLcom/deepl-rb
57
157
  licenses:
58
158
  - MIT