deepl-rb 3.1.0 → 3.3.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.gitlab-ci.yml +38 -1
  3. data/CHANGELOG.md +38 -24
  4. data/README.md +68 -0
  5. data/Rakefile +1 -0
  6. data/VERSION +1 -1
  7. data/deepl-rb.gemspec +15 -3
  8. data/lib/deepl/constants/base_constant.rb +18 -0
  9. data/lib/deepl/constants/formality.rb +16 -0
  10. data/lib/deepl/constants/model_type.rb +14 -0
  11. data/lib/deepl/constants/split_sentences.rb +14 -0
  12. data/lib/deepl/constants/tag_handling.rb +13 -0
  13. data/lib/deepl/constants/tone.rb +20 -0
  14. data/lib/deepl/constants/writing_style.rb +20 -0
  15. data/lib/deepl/exceptions/authorization_failed.rb +1 -1
  16. data/lib/deepl/exceptions/bad_request.rb +1 -1
  17. data/lib/deepl/exceptions/limit_exceeded.rb +1 -1
  18. data/lib/deepl/exceptions/not_found.rb +1 -1
  19. data/lib/deepl/exceptions/quota_exceeded.rb +1 -1
  20. data/lib/deepl/exceptions/request_entity_too_large.rb +1 -1
  21. data/lib/deepl/exceptions/request_error.rb +1 -1
  22. data/lib/deepl/exceptions/server_error.rb +1 -1
  23. data/lib/deepl/requests/base.rb +38 -5
  24. data/lib/deepl/requests/document/upload.rb +21 -11
  25. data/lib/deepl/requests/rephrase.rb +55 -0
  26. data/lib/deepl.rb +15 -0
  27. data/spec/api/deepl_spec.rb +29 -0
  28. data/spec/constants/constants_spec.rb +158 -0
  29. data/spec/fixtures/vcr_cassettes/deepl_rephrase.yml +87 -0
  30. data/spec/fixtures/vcr_cassettes/rephrase_texts.yml +401 -0
  31. data/spec/fixtures/vcr_cassettes/translate_texts.yml +44 -1
  32. data/spec/integration_tests/document_api_spec.rb +22 -0
  33. data/spec/requests/rephrase_spec.rb +172 -0
  34. data/spec/requests/translate_spec.rb +35 -0
  35. data/spec/spec_helper.rb +6 -2
  36. metadata +14 -2
@@ -121,6 +121,17 @@ describe DeepL::Requests::Translate do
121
121
  request = described_class.new(api, nil, nil, nil, split_sentences: '1')
122
122
  expect(request.options[:split_sentences]).to eq('1')
123
123
  end
124
+
125
+ it 'works with provided constants' do
126
+ request = described_class.new(
127
+ api,
128
+ nil,
129
+ nil,
130
+ nil,
131
+ split_sentences: DeepL::Constants::SplitSentences::SPLIT_ON_PUNCTUATION_AND_NEWLINES
132
+ )
133
+ expect(request.options[:split_sentences]).to eq('1')
134
+ end
124
135
  end
125
136
 
126
137
  context 'when using `preserve_formatting` options' do
@@ -189,6 +200,12 @@ describe DeepL::Requests::Translate do
189
200
  request = described_class.new(api, nil, nil, nil, formality: 'more')
190
201
  expect(request.options[:formality]).to eq('more')
191
202
  end
203
+
204
+ it 'works with provided constants' do
205
+ request = described_class.new(api, nil, nil, nil,
206
+ formality: DeepL::Constants::Formality::MORE)
207
+ expect(request.options[:formality]).to eq('more')
208
+ end
192
209
  end
193
210
 
194
211
  context 'when using `model_type` options' do
@@ -201,6 +218,12 @@ describe DeepL::Requests::Translate do
201
218
  request = described_class.new(api, nil, nil, nil, model_type: 'latency_optimized')
202
219
  expect(request.options[:model_type]).to eq('latency_optimized')
203
220
  end
221
+
222
+ it 'works with provided constants' do
223
+ request = described_class.new(api, nil, nil, nil,
224
+ model_type: DeepL::Constants::ModelType::LATENCY_OPTIMIZED)
225
+ expect(request.options[:model_type]).to eq('latency_optimized')
226
+ end
204
227
  end
205
228
  end
206
229
 
@@ -343,6 +366,18 @@ describe DeepL::Requests::Translate do
343
366
  end
344
367
  end
345
368
 
369
+ context 'when performing a request with extra_body_parameters' do
370
+ it 'allows extra parameters to override standard parameters' do
371
+ extra_options = { extra_body_parameters: { target_lang: 'FR', debug: '1' } }
372
+ translate = described_class.new(api, text, source_lang, target_lang, extra_options)
373
+ res = translate.request
374
+
375
+ expect(res).to be_a(DeepL::Resources::Text)
376
+ expect(res.text).to eq('Texte modèle')
377
+ expect(res.detected_source_language).to eq('EN')
378
+ end
379
+ end
380
+
346
381
  context 'when performing a bad request' do
347
382
  context 'when using an invalid token' do
348
383
  let(:api) do
data/spec/spec_helper.rb CHANGED
@@ -57,9 +57,13 @@ VCR.configure do |config|
57
57
  config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
58
58
  config.hook_into :webmock
59
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
60
65
  config.default_cassette_options = {
61
- # Uncomment this line when adding new tests, run the tests once, then comment it again
62
- # record: :new_episodes,
66
+ record: record_mode,
63
67
  match_requests_on: [:method, uri_ignoring_deepl_api_subdomain, :body,
64
68
  headers_ignoring_user_agent]
65
69
  }
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.1.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DeepL SE
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-11-15 00:00:00.000000000 Z
11
+ date: 2025-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: juwelier
@@ -66,6 +66,13 @@ files:
66
66
  - lib/deepl.rb
67
67
  - lib/deepl/api.rb
68
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
69
76
  - lib/deepl/document_api.rb
70
77
  - lib/deepl/exceptions/authorization_failed.rb
71
78
  - lib/deepl/exceptions/bad_request.rb
@@ -90,6 +97,7 @@ files:
90
97
  - lib/deepl/requests/glossary/language_pairs.rb
91
98
  - lib/deepl/requests/glossary/list.rb
92
99
  - lib/deepl/requests/languages.rb
100
+ - lib/deepl/requests/rephrase.rb
93
101
  - lib/deepl/requests/translate.rb
94
102
  - lib/deepl/requests/usage.rb
95
103
  - lib/deepl/resources/base.rb
@@ -107,14 +115,17 @@ files:
107
115
  - spec/api/api_spec.rb
108
116
  - spec/api/configuration_spec.rb
109
117
  - spec/api/deepl_spec.rb
118
+ - spec/constants/constants_spec.rb
110
119
  - spec/fixtures/vcr_cassettes/deepl_document.yml
111
120
  - spec/fixtures/vcr_cassettes/deepl_document_download.yml
112
121
  - spec/fixtures/vcr_cassettes/deepl_glossaries.yml
113
122
  - spec/fixtures/vcr_cassettes/deepl_languages.yml
123
+ - spec/fixtures/vcr_cassettes/deepl_rephrase.yml
114
124
  - spec/fixtures/vcr_cassettes/deepl_translate.yml
115
125
  - spec/fixtures/vcr_cassettes/deepl_usage.yml
116
126
  - spec/fixtures/vcr_cassettes/glossaries.yml
117
127
  - spec/fixtures/vcr_cassettes/languages.yml
128
+ - spec/fixtures/vcr_cassettes/rephrase_texts.yml
118
129
  - spec/fixtures/vcr_cassettes/translate_texts.yml
119
130
  - spec/fixtures/vcr_cassettes/usage.yml
120
131
  - spec/integration_tests/document_api_spec.rb
@@ -126,6 +137,7 @@ files:
126
137
  - spec/requests/glossary/language_pairs_spec.rb
127
138
  - spec/requests/glossary/list_spec.rb
128
139
  - spec/requests/languages_spec.rb
140
+ - spec/requests/rephrase_spec.rb
129
141
  - spec/requests/translate_spec.rb
130
142
  - spec/requests/usage_spec.rb
131
143
  - spec/resources/glossary_spec.rb