deepl-rb 2.2.0 → 2.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.
- checksums.yaml +5 -5
- data/.circleci/config.yml +1 -13
- data/.rubocop.yml +1 -0
- data/Gemfile +6 -0
- data/README.md +55 -24
- data/Rakefile +2 -0
- data/VERSION +1 -1
- data/deepl-rb.gemspec +16 -10
- data/lib/deepl.rb +9 -0
- data/lib/deepl/api.rb +2 -0
- data/lib/deepl/configuration.rb +2 -0
- data/lib/deepl/exceptions/authorization_failed.rb +2 -0
- data/lib/deepl/exceptions/bad_request.rb +4 -0
- data/lib/deepl/exceptions/error.rb +2 -0
- data/lib/deepl/exceptions/limit_exceeded.rb +2 -0
- data/lib/deepl/exceptions/quota_exceeded.rb +11 -0
- data/lib/deepl/exceptions/request_error.rb +4 -1
- data/lib/deepl/requests/base.rb +4 -1
- data/lib/deepl/requests/languages.rb +28 -0
- data/lib/deepl/requests/translate.rb +3 -0
- data/lib/deepl/requests/usage.rb +2 -0
- data/lib/deepl/resources/base.rb +2 -0
- data/lib/deepl/resources/language.rb +20 -0
- data/lib/deepl/resources/text.rb +2 -0
- data/lib/deepl/resources/usage.rb +2 -0
- data/spec/api/api_spec.rb +2 -0
- data/spec/api/configuration_spec.rb +3 -1
- data/spec/api/deepl_spec.rb +24 -0
- data/spec/fixtures/vcr_cassettes/deepl_languages.yml +41 -0
- data/spec/fixtures/vcr_cassettes/deepl_translate.yml +4 -5
- data/spec/fixtures/vcr_cassettes/deepl_usage.yml +10 -7
- data/spec/fixtures/vcr_cassettes/languages.yml +108 -0
- data/spec/fixtures/vcr_cassettes/translate_texts.yml +69 -33
- data/spec/fixtures/vcr_cassettes/usage.yml +10 -7
- data/spec/requests/languages_spec.rb +58 -0
- data/spec/requests/translate_spec.rb +6 -3
- data/spec/requests/usage_spec.rb +2 -0
- data/spec/resources/language_spec.rb +20 -0
- data/spec/resources/text_spec.rb +4 -2
- data/spec/resources/usage_spec.rb +5 -3
- data/spec/spec_helper.rb +3 -1
- metadata +27 -8
- data/Gemfile.lock +0 -113
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 | 
            -
             | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 2 | 
            +
            SHA256:
         | 
| 3 | 
            +
              metadata.gz: f531ff13d2ba139bab65f6027f2e673f6480b097847d898531ecc7a9b247faea
         | 
| 4 | 
            +
              data.tar.gz: e12727852eff8153dbb3a95d853d0fbd5ef5c703f02eaf7dedd089320e6873a2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1d783cba5c207fb772589bc3f328a942919eff214778ea739a6924022bb7589a1898ab62a1cad2b9f6b177f857beb1bd0c5fbe290eba1467c31b26ab9cad461e
         | 
| 7 | 
            +
              data.tar.gz: f14387ba9bc6e7ca3b97176fe1d51f4fa001ca9caba1dc6377d13e4c573896f953575f6efa682bbf55d6704657a53eb73686f9ec51711298549b49a2e5a07701
         | 
    
        data/.circleci/config.yml
    CHANGED
    
    | @@ -3,26 +3,14 @@ jobs: | |
| 3 3 | 
             
              build:
         | 
| 4 4 | 
             
                working_directory: ~/deepl-rb
         | 
| 5 5 | 
             
                docker:
         | 
| 6 | 
            -
                - image: circleci/ruby:2. | 
| 6 | 
            +
                - image: circleci/ruby:2.7
         | 
| 7 7 | 
             
                steps:
         | 
| 8 8 | 
             
                - checkout
         | 
| 9 9 |  | 
| 10 | 
            -
                # Restore bundle cache
         | 
| 11 | 
            -
                - type: cache-restore
         | 
| 12 | 
            -
                  name: Restore bundle cache
         | 
| 13 | 
            -
                  key: deepl-rb-bundle-{{ checksum "Gemfile.lock" }}
         | 
| 14 | 
            -
             | 
| 15 10 | 
             
                - run:
         | 
| 16 11 | 
             
                    name: Bundle Install
         | 
| 17 12 | 
             
                    command: bundle install --path vendor/bundle
         | 
| 18 13 |  | 
| 19 | 
            -
                # Store bundle cache
         | 
| 20 | 
            -
                - type: cache-save
         | 
| 21 | 
            -
                  name: Store bundle cache
         | 
| 22 | 
            -
                  key: deepl-rb-bundle-{{ checksum "Gemfile.lock" }}
         | 
| 23 | 
            -
                  paths:
         | 
| 24 | 
            -
                  - vendor/bundle
         | 
| 25 | 
            -
             | 
| 26 14 | 
             
                # Run rspec
         | 
| 27 15 | 
             
                - type: shell
         | 
| 28 16 | 
             
                  command: |
         | 
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/Gemfile
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            source 'https://rubygems.org'
         | 
| 2 4 |  | 
| 3 5 | 
             
            group :development do
         | 
| @@ -5,6 +7,10 @@ group :development do | |
| 5 7 | 
             
              gem 'juwelier'
         | 
| 6 8 | 
             
            end
         | 
| 7 9 |  | 
| 10 | 
            +
            group :test, :development do
         | 
| 11 | 
            +
              gem 'byebug', require: 'byebug'
         | 
| 12 | 
            +
            end
         | 
| 13 | 
            +
             | 
| 8 14 | 
             
            group :test do
         | 
| 9 15 | 
             
              # Test
         | 
| 10 16 | 
             
              gem 'codecov', require: false
         | 
    
        data/README.md
    CHANGED
    
    | @@ -40,11 +40,39 @@ You can also configure the API host and the API version: | |
| 40 40 | 
             
            ```rb
         | 
| 41 41 | 
             
            DeepL.configure do |config|
         | 
| 42 42 | 
             
              config.auth_key = 'your-api-token'
         | 
| 43 | 
            -
              config.host = 'https:// | 
| 43 | 
            +
              config.host = 'https://api-free.deepl.com' # Default value is 'https://api.deepl.com'
         | 
| 44 44 | 
             
              config.version = 'v1' # Default value is 'v2'
         | 
| 45 45 | 
             
            end
         | 
| 46 46 | 
             
            ```
         | 
| 47 47 |  | 
| 48 | 
            +
            ### Available languages
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            Available languages can be retrieved via API:
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            ```rb
         | 
| 53 | 
            +
            languages = DeepL.languages
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            puts languages.class
         | 
| 56 | 
            +
            # => Array
         | 
| 57 | 
            +
            puts languages.first.class
         | 
| 58 | 
            +
            # => DeepL::Resources::Language
         | 
| 59 | 
            +
            puts "#{languages.first.code} -> #{languages.first.name}"
         | 
| 60 | 
            +
            # => "ES -> Spanish"
         | 
| 61 | 
            +
            ```
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            Note that source and target languages may be different, which can be retrieved by using the `type`
         | 
| 64 | 
            +
            option:
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            ```rb
         | 
| 67 | 
            +
            puts DeepL.languages(type: :source).count
         | 
| 68 | 
            +
            # => 24
         | 
| 69 | 
            +
            puts DeepL.languages(type: :target).count
         | 
| 70 | 
            +
            # => 26
         | 
| 71 | 
            +
            ```
         | 
| 72 | 
            +
             | 
| 73 | 
            +
            All languages are also defined on the
         | 
| 74 | 
            +
            [official API documentation](https://www.deepl.com/docs-api/translating-text/)
         | 
| 75 | 
            +
             | 
| 48 76 | 
             
            ### Translate
         | 
| 49 77 |  | 
| 50 78 | 
             
            To translate a simple text, use the `translate` method:
         | 
| @@ -79,18 +107,6 @@ puts translations.first.class | |
| 79 107 | 
             
            # => DeepL::Resources::Text
         | 
| 80 108 | 
             
            ```
         | 
| 81 109 |  | 
| 82 | 
            -
            Here's a list of available language codes:
         | 
| 83 | 
            -
             | 
| 84 | 
            -
            | Language code   | Language
         | 
| 85 | 
            -
            | --------------- | ---------------
         | 
| 86 | 
            -
            | `EN`            | English
         | 
| 87 | 
            -
            | `DE`            | German
         | 
| 88 | 
            -
            | `FR`            | French
         | 
| 89 | 
            -
            | `ES`            | Spanish
         | 
| 90 | 
            -
            | `IT`            | Italian
         | 
| 91 | 
            -
            | `NL`            | Dutch
         | 
| 92 | 
            -
            | `PL`            | Polish
         | 
| 93 | 
            -
             | 
| 94 110 | 
             
            You can also use custom query parameters, like `tag_handling`, `split_sentences`, `non_splitting_tags` or `ignore_tags`:
         | 
| 95 111 |  | 
| 96 112 | 
             
            ```rb
         | 
| @@ -111,7 +127,7 @@ The following parameters will be automatically converted: | |
| 111 127 | 
             
            | `non_splitting_tags`  | Converts arrays to strings joining by commas
         | 
| 112 128 | 
             
            | `ignore_tags`         | Converts arrays to strings joining by commas
         | 
| 113 129 |  | 
| 114 | 
            -
            ###  | 
| 130 | 
            +
            ### Monitor usage
         | 
| 115 131 |  | 
| 116 132 | 
             
            To check current API usage, use:
         | 
| 117 133 |  | 
| @@ -128,11 +144,12 @@ puts usage.character_limit | |
| 128 144 |  | 
| 129 145 | 
             
            You can capture and process exceptions that may be raised during API calls. These are all the possible exceptions:
         | 
| 130 146 |  | 
| 131 | 
            -
            | Exception class |  | 
| 147 | 
            +
            | Exception class | Description |
         | 
| 132 148 | 
             
            | --------------- | ----------- |
         | 
| 133 | 
            -
            | `DeepL::Exceptions::AuthorizationFailed` | The authorization process has failed. Check your auth_key value. |
         | 
| 149 | 
            +
            | `DeepL::Exceptions::AuthorizationFailed` | The authorization process has failed. Check your `auth_key` value. |
         | 
| 134 150 | 
             
            | `DeepL::Exceptions::BadRequest` | Something is wrong in your request. Check `exception.message` for more information. |
         | 
| 135 151 | 
             
            | `DeepL::Exceptions::LimitExceeded` | You've reached the API's call limit. |
         | 
| 152 | 
            +
            | `DeepL::Exceptions::QuotaExceeded` | You've reached the API's character limit. |
         | 
| 136 153 | 
             
            | `DeepL::Exceptions::RequestError` | An unkown request error. Check `exception.response` and `exception.request` for more information. |
         | 
| 137 154 |  | 
| 138 155 | 
             
            An exampling of handling a generic exception:
         | 
| @@ -146,9 +163,31 @@ rescue DeepL::Exceptions::RequestError => e | |
| 146 163 | 
             
              puts "Response body: #{e.response.body}"
         | 
| 147 164 | 
             
              puts "Request body: #{e.request.body}"
         | 
| 148 165 | 
             
            end
         | 
| 166 | 
            +
            ```
         | 
| 167 | 
            +
             | 
| 168 | 
            +
            ## Integrations
         | 
| 169 | 
            +
             | 
| 170 | 
            +
            ### Ruby on Rails
         | 
| 171 | 
            +
             | 
| 172 | 
            +
            You may use this gem as a standalone service by creating an initializer on your
         | 
| 173 | 
            +
            `config/initializers` folder with your DeepL configuration. For example:
         | 
| 149 174 |  | 
| 175 | 
            +
            ```rb
         | 
| 176 | 
            +
            # config/initializers/deepl.rb
         | 
| 177 | 
            +
            DeepL.configure do |config|
         | 
| 178 | 
            +
              # Your configuration goes here
         | 
| 179 | 
            +
            end
         | 
| 150 180 | 
             
            ```
         | 
| 151 181 |  | 
| 182 | 
            +
            Since the DeepL service is defined globally, you can use service anywhere in your code
         | 
| 183 | 
            +
            (controllers, models, views, jobs, plain ruby objects… you name it).
         | 
| 184 | 
            +
             | 
| 185 | 
            +
            ### i18n-tasks
         | 
| 186 | 
            +
             | 
| 187 | 
            +
            You may also take a look at [`i18n-tasks`](https://github.com/glebm/i18n-tasks), which is a gem
         | 
| 188 | 
            +
            that helps you find and manage missing and unused translations. `deepl-rb` is used as one of the
         | 
| 189 | 
            +
            backend services to translate content.
         | 
| 190 | 
            +
             | 
| 152 191 | 
             
            ## Development
         | 
| 153 192 |  | 
| 154 193 | 
             
            Clone the repository, and install its dependencies:
         | 
| @@ -164,11 +203,3 @@ To run tests (rspec and rubocop), use | |
| 164 203 | 
             
            ```
         | 
| 165 204 | 
             
            bundle exec rake test
         | 
| 166 205 | 
             
            ```
         | 
| 167 | 
            -
             | 
| 168 | 
            -
            ## Contributors
         | 
| 169 | 
            -
             | 
| 170 | 
            -
            This project has been developed by:
         | 
| 171 | 
            -
             | 
| 172 | 
            -
            | Avatar | Name | Nickname | Email |
         | 
| 173 | 
            -
            | ------ | ---- | -------- | ----- |
         | 
| 174 | 
            -
            |   | Daniel Herzog | Wikiti | [info@danielherzog.es](mailto:info@danielherzog.es)
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2. | 
| 1 | 
            +
            2.3.0
         | 
    
        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 | 
            +
            # stub: deepl-rb 2.3.0 ruby lib
         | 
| 6 6 |  | 
| 7 7 | 
             
            Gem::Specification.new do |s|
         | 
| 8 8 | 
             
              s.name = "deepl-rb".freeze
         | 
| 9 | 
            -
              s.version = "2. | 
| 9 | 
            +
              s.version = "2.3.0"
         | 
| 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 = " | 
| 14 | 
            +
              s.date = "2021-05-17"
         | 
| 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 = [
         | 
| @@ -22,7 +22,6 @@ Gem::Specification.new do |s| | |
| 22 22 | 
             
                ".circleci/config.yml",
         | 
| 23 23 | 
             
                ".rubocop.yml",
         | 
| 24 24 | 
             
                "Gemfile",
         | 
| 25 | 
            -
                "Gemfile.lock",
         | 
| 26 25 | 
             
                "LICENSE.md",
         | 
| 27 26 | 
             
                "README.md",
         | 
| 28 27 | 
             
                "Rakefile",
         | 
| @@ -35,41 +34,48 @@ Gem::Specification.new do |s| | |
| 35 34 | 
             
                "lib/deepl/exceptions/bad_request.rb",
         | 
| 36 35 | 
             
                "lib/deepl/exceptions/error.rb",
         | 
| 37 36 | 
             
                "lib/deepl/exceptions/limit_exceeded.rb",
         | 
| 37 | 
            +
                "lib/deepl/exceptions/quota_exceeded.rb",
         | 
| 38 38 | 
             
                "lib/deepl/exceptions/request_error.rb",
         | 
| 39 39 | 
             
                "lib/deepl/requests/base.rb",
         | 
| 40 | 
            +
                "lib/deepl/requests/languages.rb",
         | 
| 40 41 | 
             
                "lib/deepl/requests/translate.rb",
         | 
| 41 42 | 
             
                "lib/deepl/requests/usage.rb",
         | 
| 42 43 | 
             
                "lib/deepl/resources/base.rb",
         | 
| 44 | 
            +
                "lib/deepl/resources/language.rb",
         | 
| 43 45 | 
             
                "lib/deepl/resources/text.rb",
         | 
| 44 46 | 
             
                "lib/deepl/resources/usage.rb",
         | 
| 45 47 | 
             
                "spec/api/api_spec.rb",
         | 
| 46 48 | 
             
                "spec/api/configuration_spec.rb",
         | 
| 47 49 | 
             
                "spec/api/deepl_spec.rb",
         | 
| 50 | 
            +
                "spec/fixtures/vcr_cassettes/deepl_languages.yml",
         | 
| 48 51 | 
             
                "spec/fixtures/vcr_cassettes/deepl_translate.yml",
         | 
| 49 52 | 
             
                "spec/fixtures/vcr_cassettes/deepl_usage.yml",
         | 
| 53 | 
            +
                "spec/fixtures/vcr_cassettes/languages.yml",
         | 
| 50 54 | 
             
                "spec/fixtures/vcr_cassettes/translate_texts.yml",
         | 
| 51 55 | 
             
                "spec/fixtures/vcr_cassettes/usage.yml",
         | 
| 56 | 
            +
                "spec/requests/languages_spec.rb",
         | 
| 52 57 | 
             
                "spec/requests/translate_spec.rb",
         | 
| 53 58 | 
             
                "spec/requests/usage_spec.rb",
         | 
| 59 | 
            +
                "spec/resources/language_spec.rb",
         | 
| 54 60 | 
             
                "spec/resources/text_spec.rb",
         | 
| 55 61 | 
             
                "spec/resources/usage_spec.rb",
         | 
| 56 62 | 
             
                "spec/spec_helper.rb"
         | 
| 57 63 | 
             
              ]
         | 
| 58 64 | 
             
              s.homepage = "http://github.com/wikiti/deepl-rb".freeze
         | 
| 59 65 | 
             
              s.licenses = ["MIT".freeze]
         | 
| 60 | 
            -
              s.rubygems_version = " | 
| 66 | 
            +
              s.rubygems_version = "3.1.2".freeze
         | 
| 61 67 | 
             
              s.summary = "A simple ruby wrapper for the DeepL API".freeze
         | 
| 62 68 |  | 
| 63 69 | 
             
              if s.respond_to? :specification_version then
         | 
| 64 70 | 
             
                s.specification_version = 4
         | 
| 71 | 
            +
              end
         | 
| 65 72 |  | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
                 | 
| 69 | 
            -
                  s.add_dependency(%q<juwelier>.freeze, [">= 0"])
         | 
| 70 | 
            -
                end
         | 
| 73 | 
            +
              if s.respond_to? :add_runtime_dependency then
         | 
| 74 | 
            +
                s.add_development_dependency(%q<juwelier>.freeze, [">= 0"])
         | 
| 75 | 
            +
                s.add_development_dependency(%q<byebug>.freeze, [">= 0"])
         | 
| 71 76 | 
             
              else
         | 
| 72 77 | 
             
                s.add_dependency(%q<juwelier>.freeze, [">= 0"])
         | 
| 78 | 
            +
                s.add_dependency(%q<byebug>.freeze, [">= 0"])
         | 
| 73 79 | 
             
              end
         | 
| 74 80 | 
             
            end
         | 
| 75 81 |  | 
    
        data/lib/deepl.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            # -- Dependencies
         | 
| 2 4 | 
             
            require 'json'
         | 
| 3 5 | 
             
            require 'net/http'
         | 
| @@ -8,14 +10,17 @@ require 'deepl/exceptions/request_error' | |
| 8 10 | 
             
            require 'deepl/exceptions/authorization_failed'
         | 
| 9 11 | 
             
            require 'deepl/exceptions/bad_request'
         | 
| 10 12 | 
             
            require 'deepl/exceptions/limit_exceeded'
         | 
| 13 | 
            +
            require 'deepl/exceptions/quota_exceeded'
         | 
| 11 14 |  | 
| 12 15 | 
             
            # -- Requests
         | 
| 13 16 | 
             
            require 'deepl/requests/base'
         | 
| 17 | 
            +
            require 'deepl/requests/languages'
         | 
| 14 18 | 
             
            require 'deepl/requests/translate'
         | 
| 15 19 | 
             
            require 'deepl/requests/usage'
         | 
| 16 20 |  | 
| 17 21 | 
             
            # -- Responses and resources
         | 
| 18 22 | 
             
            require 'deepl/resources/base'
         | 
| 23 | 
            +
            require 'deepl/resources/language'
         | 
| 19 24 | 
             
            require 'deepl/resources/text'
         | 
| 20 25 | 
             
            require 'deepl/resources/usage'
         | 
| 21 26 |  | 
| @@ -33,6 +38,10 @@ module DeepL | |
| 33 38 | 
             
                @api ||= API.new(configuration)
         | 
| 34 39 | 
             
              end
         | 
| 35 40 |  | 
| 41 | 
            +
              def languages(options = {})
         | 
| 42 | 
            +
                Requests::Languages.new(api, options).request
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 36 45 | 
             
              def translate(text, source_lang, target_lang, options = {})
         | 
| 37 46 | 
             
                configure if @configuration.nil?
         | 
| 38 47 | 
             
                Requests::Translate.new(api, text, source_lang, target_lang, options).request
         | 
    
        data/lib/deepl/api.rb
    CHANGED
    
    
    
        data/lib/deepl/configuration.rb
    CHANGED
    
    
| @@ -1,15 +1,18 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module DeepL
         | 
| 2 4 | 
             
              module Exceptions
         | 
| 3 5 | 
             
                class RequestError < Error
         | 
| 4 6 | 
             
                  attr_reader :request, :response
         | 
| 5 7 |  | 
| 6 8 | 
             
                  def initialize(request, response)
         | 
| 9 | 
            +
                    super()
         | 
| 7 10 | 
             
                    @request = request
         | 
| 8 11 | 
             
                    @response = response
         | 
| 9 12 | 
             
                  end
         | 
| 10 13 |  | 
| 11 14 | 
             
                  def message
         | 
| 12 | 
            -
                    ' | 
| 15 | 
            +
                    'Unknown error.'
         | 
| 13 16 | 
             
                  end
         | 
| 14 17 | 
             
                end
         | 
| 15 18 | 
             
              end
         | 
    
        data/lib/deepl/requests/base.rb
    CHANGED
    
    | @@ -1,3 +1,5 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module DeepL
         | 
| 2 4 | 
             
              module Requests
         | 
| 3 5 | 
             
                class Base
         | 
| @@ -32,7 +34,7 @@ module DeepL | |
| 32 34 |  | 
| 33 35 | 
             
                  def post(payload)
         | 
| 34 36 | 
             
                    request = Net::HTTP::Post.new(uri.request_uri)
         | 
| 35 | 
            -
                    request.set_form_data(payload. | 
| 37 | 
            +
                    request.set_form_data(payload.compact)
         | 
| 36 38 | 
             
                    response = http.request(request)
         | 
| 37 39 |  | 
| 38 40 | 
             
                    validate_response!(request, response)
         | 
| @@ -62,6 +64,7 @@ module DeepL | |
| 62 64 | 
             
                    when '400' then raise Exceptions::BadRequest.new(request, response)
         | 
| 63 65 | 
             
                    when '403' then raise Exceptions::AuthorizationFailed.new(request, response)
         | 
| 64 66 | 
             
                    when '429' then raise Exceptions::LimitExceeded.new(request, response)
         | 
| 67 | 
            +
                    when '456' then raise Exceptions::QuotaExceeded.new(request, response)
         | 
| 65 68 | 
             
                    else raise Exceptions::RequestError.new(request, response)
         | 
| 66 69 | 
             
                    end
         | 
| 67 70 | 
             
                  end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module DeepL
         | 
| 4 | 
            +
              module Requests
         | 
| 5 | 
            +
                class Languages < Base
         | 
| 6 | 
            +
                  def initialize(api, options = {})
         | 
| 7 | 
            +
                    super(api, options)
         | 
| 8 | 
            +
                  end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def request
         | 
| 11 | 
            +
                    build_languages(*get)
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  private
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def build_languages(request, response)
         | 
| 17 | 
            +
                    data = JSON.parse(response.body)
         | 
| 18 | 
            +
                    data.map do |language|
         | 
| 19 | 
            +
                      Resources::Language.new(language['language'], language['name'], request, response)
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  def path
         | 
| 24 | 
            +
                    'languages'
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
            end
         |