deepl-rb 2.5.0 → 2.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50a94f4bc3e0633bf578ae6fd53d794632e2b7a03b8d2a78b9678ed44289043c
4
- data.tar.gz: 74e5911707588b9fd75684bbdce7092b492deafc5c3cef4e47c2732006a3bfb9
3
+ metadata.gz: 39127e54045e9c2632e8708554251443acfdbfbb1cdbf8806ef98f2e0ee81fb4
4
+ data.tar.gz: b5e7b26cf284e1ad6334397a56259ff120a0fa08f7352cb99eccfa68a652eadf
5
5
  SHA512:
6
- metadata.gz: 9700c6128ab06b432596131da46cbdb240c433baeecb2ece7b74860040818fd3a9e32cf9c4a9384a6a8875200c4aa69f0fa74f533ffc6a4aeb9b9736e76b577f
7
- data.tar.gz: 5a60db0a73691310159cfc92036c36e317f247f7bd0ece2b1002723068ffa531f43d4c96741e25e0fde4aff0fa1dc6c54596d6a91183c8ad4a75eaa62848153a
6
+ metadata.gz: 74efcad943159db5c628bdd11ed699a996ab7f2360406fc0c010d48ac7c32488a5ec75d728904e57bf469af17a2fe276bd05b3e3293160b8d00436a8cb6da268
7
+ data.tar.gz: 8373bb2749eb249c1f5dfed6e2551e795ef8baf8cceb4983994e37ff3f0c8d1eac09b56b2e74a061a2ae6f836a380af728aea7b09dd5a15f8d4a575bb89c3b98
data/README.md CHANGED
@@ -128,6 +128,7 @@ The following parameters will be automatically converted:
128
128
  | `preserve_formatting` | Converts `false` to `'0'` and `true` to `'1'`
129
129
  | `split_sentences` | Converts `false` to `'0'` and `true` to `'1'`
130
130
  | `outline_detection` | Converts `false` to `'0'` and `true` to `'1'`
131
+ | `splitting_tags` | Converts arrays to strings joining by commas
131
132
  | `non_splitting_tags` | Converts arrays to strings joining by commas
132
133
  | `ignore_tags` | Converts arrays to strings joining by commas
133
134
  | `formality` | No conversion applied
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.0
1
+ 2.5.2
data/deepl-rb.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: deepl-rb 2.5.0 ruby lib
5
+ # stub: deepl-rb 2.5.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "deepl-rb".freeze
9
- s.version = "2.5.0"
9
+ s.version = "2.5.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Daniel Herzog".freeze]
14
- s.date = "2022-06-06"
14
+ s.date = "2022-09-25"
15
15
  s.description = "A simple ruby wrapper for the DeepL translation API (v1). For more information, check this: https://www.deepl.com/docs/api-reference.html".freeze
16
16
  s.email = "info@danielherzog.es".freeze
17
17
  s.extra_rdoc_files = [
@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
37
37
  "lib/deepl/exceptions/not_found.rb",
38
38
  "lib/deepl/exceptions/not_supported.rb",
39
39
  "lib/deepl/exceptions/quota_exceeded.rb",
40
+ "lib/deepl/exceptions/request_entity_too_large.rb",
40
41
  "lib/deepl/exceptions/request_error.rb",
41
42
  "lib/deepl/glossary_api.rb",
42
43
  "lib/deepl/requests/base.rb",
@@ -55,6 +56,7 @@ Gem::Specification.new do |s|
55
56
  "lib/deepl/resources/language_pair.rb",
56
57
  "lib/deepl/resources/text.rb",
57
58
  "lib/deepl/resources/usage.rb",
59
+ "lib/deepl/utils/exception_builder.rb",
58
60
  "spec/api/api_spec.rb",
59
61
  "spec/api/configuration_spec.rb",
60
62
  "spec/api/deepl_spec.rb",
@@ -8,7 +8,7 @@ module DeepL
8
8
 
9
9
  def initialize(data = {})
10
10
  data.each { |key, value| send("#{key}=", value) }
11
- @auth_key ||= ENV['DEEPL_AUTH_KEY']
11
+ @auth_key ||= ENV.fetch('DEEPL_AUTH_KEY', nil)
12
12
  @host ||= 'https://api.deepl.com'
13
13
  @version ||= 'v2'
14
14
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DeepL
4
+ module Exceptions
5
+ class RequestEntityTooLarge < RequestError
6
+ def message
7
+ 'The request size has reached the supported limit. ' \
8
+ "Make sure that you're sending more than 50 sentences when translating"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -72,14 +72,7 @@ module DeepL
72
72
  def validate_response!(request, response)
73
73
  return if response.is_a?(Net::HTTPSuccess)
74
74
 
75
- case response.code
76
- when '400' then raise Exceptions::BadRequest.new(request, response)
77
- when '401', '403' then raise Exceptions::AuthorizationFailed.new(request, response)
78
- when '404' then raise Exceptions::NotFound.new(request, response)
79
- when '429' then raise Exceptions::LimitExceeded.new(request, response)
80
- when '456' then raise Exceptions::QuotaExceeded.new(request, response)
81
- else raise Exceptions::RequestError.new(request, response)
82
- end
75
+ raise Utils::ExceptionBuilder.new(request, response).build
83
76
  end
84
77
 
85
78
  def path
@@ -4,16 +4,18 @@ module DeepL
4
4
  module Requests
5
5
  class Translate < Base
6
6
  BOOLEAN_CONVERSION = { true => '1', false => '0' }.freeze
7
- ARRAY_CONVERSION = ->(value) { value.is_a?(Array) ? value.join(', ') : value }.freeze
7
+ ARRAY_CONVERSION = ->(value) { value.is_a?(Array) ? value.join(',') : value }.freeze
8
8
  OPTIONS_CONVERSIONS = {
9
9
  split_sentences: BOOLEAN_CONVERSION,
10
10
  preserve_formatting: BOOLEAN_CONVERSION,
11
11
  outline_detection: BOOLEAN_CONVERSION,
12
+ splitting_tags: ARRAY_CONVERSION,
12
13
  non_splitting_tags: ARRAY_CONVERSION,
13
14
  ignore_tags: ARRAY_CONVERSION
14
15
  }.freeze
15
16
 
16
- attr_reader :text, :source_lang, :target_lang, :ignore_tags, :non_splitting_tags
17
+ attr_reader :text, :source_lang, :target_lang, :ignore_tags, :splitting_tags,
18
+ :non_splitting_tags
17
19
 
18
20
  def initialize(api, text, source_lang, target_lang, options = {})
19
21
  super(api, options)
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DeepL
4
+ module Utils
5
+ class ExceptionBuilder
6
+ attr_reader :request, :response
7
+
8
+ ERROR_CODE_CLASS_MAP = {
9
+ '400' => Exceptions::BadRequest,
10
+ '401' => Exceptions::AuthorizationFailed,
11
+ '403' => Exceptions::AuthorizationFailed,
12
+ '404' => Exceptions::NotFound,
13
+ '413' => Exceptions::RequestEntityTooLarge,
14
+ '429' => Exceptions::LimitExceeded,
15
+ '456' => Exceptions::QuotaExceeded
16
+ }.freeze
17
+
18
+ def initialize(request, response)
19
+ @request = request
20
+ @response = response
21
+ end
22
+
23
+ def build
24
+ error_class = ERROR_CODE_CLASS_MAP[response.code.to_s] || Exceptions::RequestError
25
+ error_class.new(request, response)
26
+ end
27
+ end
28
+ end
29
+ end
data/lib/deepl.rb CHANGED
@@ -13,6 +13,7 @@ require 'deepl/exceptions/limit_exceeded'
13
13
  require 'deepl/exceptions/quota_exceeded'
14
14
  require 'deepl/exceptions/not_found'
15
15
  require 'deepl/exceptions/not_supported'
16
+ require 'deepl/exceptions/request_entity_too_large'
16
17
 
17
18
  # -- Requests
18
19
  require 'deepl/requests/base'
@@ -34,6 +35,9 @@ require 'deepl/resources/language_pair'
34
35
  require 'deepl/resources/text'
35
36
  require 'deepl/resources/usage'
36
37
 
38
+ # -- Utils
39
+ require 'deepl/utils/exception_builder'
40
+
37
41
  # -- Other wrappers
38
42
  require 'deepl/api'
39
43
  require 'deepl/configuration'
@@ -9,7 +9,7 @@ describe DeepL::Configuration do
9
9
  describe '#initialize' do
10
10
  context 'When using default configuration attributes' do
11
11
  it 'should use default attributes' do
12
- expect(subject.auth_key).to eq(ENV['DEEPL_AUTH_KEY'])
12
+ expect(subject.auth_key).to eq(ENV.fetch('DEEPL_AUTH_KEY', nil))
13
13
  expect(subject.host).to eq('https://api.deepl.com')
14
14
  expect(subject.version).to eq('v2')
15
15
  end