lib/deepl.rb in deepl-rb-2.5.3 vs lib/deepl.rb in deepl-rb-3.0.0

- old
+ new

@@ -1,5 +1,8 @@ +# Copyright 2018 Daniel Herzog +# Use of this source code is governed by an MIT +# license that can be found in the LICENSE.md file. # frozen_string_literal: true # -- Dependencies require 'json' require 'net/http' @@ -12,13 +15,18 @@ require 'deepl/exceptions/limit_exceeded' require 'deepl/exceptions/quota_exceeded' require 'deepl/exceptions/not_found' require 'deepl/exceptions/not_supported' require 'deepl/exceptions/request_entity_too_large' +require 'deepl/exceptions/document_translation_error' +require 'deepl/exceptions/server_error' # -- Requests require 'deepl/requests/base' +require 'deepl/requests/document/download' +require 'deepl/requests/document/get_status' +require 'deepl/requests/document/upload' require 'deepl/requests/glossary/create' require 'deepl/requests/glossary/destroy' require 'deepl/requests/glossary/entries' require 'deepl/requests/glossary/find' require 'deepl/requests/glossary/language_pairs' @@ -27,22 +35,29 @@ require 'deepl/requests/translate' require 'deepl/requests/usage' # -- Responses and resources require 'deepl/resources/base' +require 'deepl/resources/document_handle' +require 'deepl/resources/document_translation_status' require 'deepl/resources/glossary' require 'deepl/resources/language' require 'deepl/resources/language_pair' require 'deepl/resources/text' require 'deepl/resources/usage' # -- Utils require 'deepl/utils/exception_builder' +require 'deepl/utils/backoff_timer' +# -- HTTP Utils +require 'http_client_options' + # -- Other wrappers require 'deepl/api' require 'deepl/configuration' +require 'deepl/document_api' require 'deepl/glossary_api' # -- Gem interface module DeepL extend self @@ -60,17 +75,49 @@ def translate(text, source_lang, target_lang, options = {}) configure if @configuration.nil? Requests::Translate.new(api, text, source_lang, target_lang, options).request end + def document(options = {}) + configure if @configuration.nil? + DocumentApi.new(api, options) + end + def glossaries(options = {}) configure if @configuration.nil? GlossaryApi.new(api, options) end def usage(options = {}) configure if @configuration.nil? Requests::Usage.new(api, options).request + end + + def http_client + @http_client + end + + def with_session(client_options = HTTPClientOptions.new()) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity + raise ArgumentError 'This method requires a block to be passed in which contains the actual API calls, see README for example usage.' unless block_given? # rubocop:disable Layout/LineLength + + has_proxy = client_options.proxy.key?('proxy_addr') and client_options.proxy.key?('proxy_port') + begin + uri = URI(configuration.host) + http = Net::HTTP.new(uri.host, uri.port, has_proxy ? client_options.proxy['proxy_addr'] : nil, + has_proxy ? client_options.proxy['proxy_port'] : nil) + http.use_ssl = client_options.enable_ssl_verification + http.ca_file = client_options.cert_path if client_options.cert_path + http.open_timeout = client_options.open_timeout unless client_options.open_timeout.nil? + http.read_timeout = client_options.read_timeout unless client_options.read_timeout.nil? + http.write_timeout = client_options.write_timeout unless client_options.write_timeout.nil? + http.ssl_timeout = client_options.ssl_timeout unless client_options.ssl_timeout.nil? + http.start + @http_client = http + api.update_http_client(http) + yield + ensure + http.finish + end end # -- Configuration def configuration