deepl-rb 3.9.0 → 3.10.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 +4 -4
- data/.gitlab-ci.yml +70 -52
- data/.rubocop.yml +26 -0
- data/CHANGELOG.md +429 -18
- data/Gemfile +4 -0
- data/README.md +981 -223
- data/Rakefile +18 -5
- data/VERSION +1 -1
- data/deepl-rb.gemspec +6 -6
- data/lib/deepl/admin_client.rb +183 -0
- data/lib/deepl/api.rb +30 -6
- data/lib/deepl/app_info.rb +20 -0
- data/lib/deepl/client.rb +969 -0
- data/lib/deepl/configuration.rb +56 -10
- data/lib/deepl/constants/admin_usage_group_by.rb +13 -0
- data/lib/deepl/constants/custom_tag_usage_aggregate_by.rb +13 -0
- data/lib/deepl/constants/document_status_code.rb +17 -0
- data/lib/deepl/constants/language_include.rb +17 -0
- data/lib/deepl/constants/language_resource_name.rb +21 -0
- data/lib/deepl/constants/tag_handling_version.rb +14 -0
- data/lib/deepl/deprecation.rb +42 -0
- data/lib/deepl/document_api.rb +41 -22
- data/lib/deepl/exceptions/bad_request.rb +1 -3
- data/lib/deepl/exceptions/connection_error.rb +37 -0
- data/lib/deepl/exceptions/document_not_ready_error.rb +17 -0
- data/lib/deepl/exceptions/document_translation_error.rb +17 -1
- data/lib/deepl/exceptions/error.rb +13 -1
- data/lib/deepl/exceptions/not_found.rb +8 -3
- data/lib/deepl/exceptions/not_supported.rb +6 -0
- data/lib/deepl/exceptions/request_error.rb +19 -2
- data/lib/deepl/exceptions/server_error.rb +7 -1
- data/lib/deepl/exceptions/validation_error.rb +14 -0
- data/lib/deepl/requests/admin/base.rb +94 -0
- data/lib/deepl/requests/admin/create_developer_key.rb +38 -0
- data/lib/deepl/requests/admin/custom_tag_usage_analytics.rb +38 -0
- data/lib/deepl/requests/admin/list_developer_keys.rb +28 -0
- data/lib/deepl/requests/admin/update_developer_key.rb +35 -0
- data/lib/deepl/requests/admin/usage_analytics.rb +36 -0
- data/lib/deepl/requests/base.rb +229 -59
- data/lib/deepl/requests/correct.rb +57 -0
- data/lib/deepl/requests/document/download.rb +11 -3
- data/lib/deepl/requests/document/get_status.rb +2 -2
- data/lib/deepl/requests/document/upload.rb +43 -10
- data/lib/deepl/requests/glossary/create.rb +6 -2
- data/lib/deepl/requests/glossary/language_pairs.rb +20 -4
- data/lib/deepl/requests/language_resources.rb +41 -0
- data/lib/deepl/requests/languages.rb +28 -4
- data/lib/deepl/requests/languages_for_resource.rb +54 -0
- data/lib/deepl/requests/multilingual_glossary/create.rb +37 -0
- data/lib/deepl/requests/multilingual_glossary/destroy.rb +36 -0
- data/lib/deepl/requests/multilingual_glossary/destroy_dictionary.rb +51 -0
- data/lib/deepl/requests/multilingual_glossary/entries.rb +66 -0
- data/lib/deepl/requests/multilingual_glossary/find.rb +35 -0
- data/lib/deepl/requests/multilingual_glossary/helpers.rb +63 -0
- data/lib/deepl/requests/multilingual_glossary/list.rb +39 -0
- data/lib/deepl/requests/multilingual_glossary/replace_dictionary.rb +41 -0
- data/lib/deepl/requests/multilingual_glossary/update.rb +40 -0
- data/lib/deepl/requests/rephrase.rb +5 -9
- data/lib/deepl/requests/spoken_terms/create.rb +37 -0
- data/lib/deepl/requests/spoken_terms/destroy.rb +36 -0
- data/lib/deepl/requests/spoken_terms/destroy_term_list.rb +41 -0
- data/lib/deepl/requests/spoken_terms/entries.rb +46 -0
- data/lib/deepl/requests/spoken_terms/find.rb +35 -0
- data/lib/deepl/requests/spoken_terms/helpers.rb +67 -0
- data/lib/deepl/requests/spoken_terms/list.rb +35 -0
- data/lib/deepl/requests/spoken_terms/replace_term_list.rb +41 -0
- data/lib/deepl/requests/spoken_terms/update.rb +40 -0
- data/lib/deepl/requests/style_profile/base.rb +83 -0
- data/lib/deepl/requests/style_profile/create.rb +35 -0
- data/lib/deepl/requests/style_profile/destroy.rb +34 -0
- data/lib/deepl/requests/style_profile/find.rb +33 -0
- data/lib/deepl/requests/style_profile/list.rb +43 -0
- data/lib/deepl/requests/style_profile/update.rb +35 -0
- data/lib/deepl/requests/style_rule/create.rb +1 -1
- data/lib/deepl/requests/style_rule/create_custom_instruction.rb +4 -2
- data/lib/deepl/requests/style_rule/destroy.rb +4 -2
- data/lib/deepl/requests/style_rule/destroy_custom_instruction.rb +5 -3
- data/lib/deepl/requests/style_rule/find.rb +4 -2
- data/lib/deepl/requests/style_rule/find_custom_instruction.rb +5 -3
- data/lib/deepl/requests/style_rule/helpers.rb +35 -0
- data/lib/deepl/requests/style_rule/list.rb +1 -1
- data/lib/deepl/requests/style_rule/update.rb +4 -2
- data/lib/deepl/requests/style_rule/update_configured_rules.rb +4 -2
- data/lib/deepl/requests/style_rule/update_custom_instruction.rb +5 -3
- data/lib/deepl/requests/translate.rb +52 -20
- data/lib/deepl/requests/translation_memory/base.rb +1 -4
- data/lib/deepl/requests/translation_memory/create_export.rb +1 -1
- data/lib/deepl/requests/translation_memory/create_import.rb +1 -1
- data/lib/deepl/requests/translation_memory/destroy.rb +1 -1
- data/lib/deepl/requests/translation_memory/download_export.rb +4 -0
- data/lib/deepl/requests/translation_memory/find.rb +1 -1
- data/lib/deepl/requests/translation_memory/find_job.rb +1 -1
- data/lib/deepl/requests/translation_memory/list.rb +2 -1
- data/lib/deepl/requests/translation_memory/segments.rb +3 -2
- data/lib/deepl/requests/translation_memory/storage_base.rb +40 -8
- data/lib/deepl/requests/translation_memory/upload_file.rb +1 -1
- data/lib/deepl/requests/usage.rb +28 -1
- data/lib/deepl/requests/write_improvements.rb +35 -0
- data/lib/deepl/resources/admin_usage_report.rb +73 -0
- data/lib/deepl/resources/custom_tag_usage_report.rb +59 -0
- data/lib/deepl/resources/developer_key.rb +57 -0
- data/lib/deepl/resources/document_handle.rb +24 -25
- data/lib/deepl/resources/document_translation_status.rb +23 -4
- data/lib/deepl/resources/language.rb +10 -2
- data/lib/deepl/resources/language_resource.rb +57 -0
- data/lib/deepl/resources/language_support.rb +56 -0
- data/lib/deepl/resources/multilingual_glossary.rb +112 -0
- data/lib/deepl/resources/spoken_terms.rb +61 -0
- data/lib/deepl/resources/style_profile.rb +44 -0
- data/lib/deepl/resources/style_rule.rb +3 -0
- data/lib/deepl/resources/text.rb +18 -2
- data/lib/deepl/resources/translation_memory.rb +8 -2
- data/lib/deepl/resources/translation_memory_import.rb +1 -1
- data/lib/deepl/resources/translation_memory_job.rb +23 -3
- data/lib/deepl/resources/translation_memory_segments.rb +8 -6
- data/lib/deepl/resources/usage.rb +93 -4
- data/lib/deepl/style_rule_api.rb +11 -0
- data/lib/deepl/translation_memory_api.rb +104 -24
- data/lib/deepl/utils/client_builder.rb +54 -0
- data/lib/deepl/utils/document_poller.rb +70 -0
- data/lib/deepl/utils/exception_builder.rb +3 -2
- data/lib/deepl/utils/http_client_builder.rb +79 -0
- data/lib/deepl/utils/number_parser.rb +34 -0
- data/lib/deepl/utils/term_validator.rb +33 -0
- data/lib/deepl/utils/time_parser.rb +14 -0
- data/lib/deepl.rb +166 -41
- data/lib/http_client_options.rb +21 -1
- data/lib/version.rb +1 -1
- data/spec/fixtures.rb +33 -0
- data/spec/offline/admin_client_spec.rb +551 -0
- data/spec/offline/client_spec.rb +273 -0
- data/spec/{api → offline}/configuration_spec.rb +45 -3
- data/spec/{constants → offline}/constants_spec.rb +23 -1
- data/spec/offline/correct_text_spec.rb +50 -0
- data/spec/offline/deprecation_spec.rb +32 -0
- data/spec/offline/errors_spec.rb +92 -0
- data/spec/offline/glossaries_spec.rb +98 -0
- data/spec/offline/http_client_spec.rb +319 -0
- data/spec/offline/languages_spec.rb +155 -0
- data/spec/offline/module_methods_spec.rb +13 -0
- data/spec/offline/multilingual_glossaries_spec.rb +358 -0
- data/spec/offline/offline_helper.rb +71 -0
- data/spec/offline/rephrase_text_spec.rb +73 -0
- data/spec/offline/spoken_terms_spec.rb +215 -0
- data/spec/offline/style_profiles_spec.rb +266 -0
- data/spec/offline/style_rules_spec.rb +318 -0
- data/spec/offline/translate_document_spec.rb +606 -0
- data/spec/offline/translate_text_spec.rb +286 -0
- data/spec/offline/translation_memories_client_spec.rb +256 -0
- data/spec/offline/translation_memories_spec.rb +463 -0
- data/spec/offline/usage_spec.rb +151 -0
- data/spec/real_api/admin_client_spec.rb +77 -0
- data/spec/real_api/correct_text_spec.rb +20 -0
- data/spec/real_api/glossaries_spec.rb +28 -0
- data/spec/real_api/languages_spec.rb +27 -0
- data/spec/real_api/multilingual_glossaries_spec.rb +53 -0
- data/spec/real_api/proxy_spec.rb +41 -0
- data/spec/real_api/real_api_helper.rb +65 -0
- data/spec/real_api/rephrase_text_spec.rb +16 -0
- data/spec/real_api/spoken_terms_spec.rb +56 -0
- data/spec/real_api/style_profiles_spec.rb +46 -0
- data/spec/real_api/style_rules_spec.rb +46 -0
- data/spec/real_api/translate_document_spec.rb +18 -0
- data/spec/real_api/translate_text_spec.rb +16 -0
- data/spec/real_api/translation_memories_spec.rb +56 -0
- data/spec/real_api/usage_spec.rb +20 -0
- data/spec/spec_helper.rb +1 -50
- metadata +116 -76
- data/.circleci/config.yml +0 -27
- data/.github/workflows/add_issues_to_kanban.yml +0 -16
- data/spec/api/api_spec.rb +0 -20
- data/spec/api/deepl_spec.rb +0 -262
- data/spec/integration_tests/document_api_spec.rb +0 -211
- data/spec/integration_tests/document_error_paths_spec.rb +0 -33
- data/spec/integration_tests/glossary_api_spec.rb +0 -114
- data/spec/integration_tests/glossary_error_paths_spec.rb +0 -107
- data/spec/integration_tests/integration_test_utils.rb +0 -178
- data/spec/integration_tests/languages_api_spec.rb +0 -54
- data/spec/integration_tests/languages_error_paths_spec.rb +0 -25
- data/spec/integration_tests/rephrase_api_spec.rb +0 -90
- data/spec/integration_tests/rephrase_error_paths_spec.rb +0 -53
- data/spec/integration_tests/smoke_test_spec.rb +0 -24
- data/spec/integration_tests/style_rule_api_spec.rb +0 -117
- data/spec/integration_tests/style_rule_error_paths_spec.rb +0 -45
- data/spec/integration_tests/translate_api_spec.rb +0 -117
- data/spec/integration_tests/translate_error_paths_spec.rb +0 -48
- data/spec/integration_tests/translation_memory_api_spec.rb +0 -244
- data/spec/integration_tests/translation_memory_error_paths_spec.rb +0 -87
- data/spec/integration_tests/usage_api_spec.rb +0 -29
- data/spec/integration_tests/usage_error_paths_spec.rb +0 -18
- data/spec/requests/document/upload_spec.rb +0 -130
- data/spec/requests/extra_body_parameters_types_spec.rb +0 -82
- data/spec/requests/glossary/create_spec.rb +0 -44
- data/spec/requests/glossary/destroy_spec.rb +0 -27
- data/spec/requests/glossary/entries_spec.rb +0 -27
- data/spec/requests/glossary/find_spec.rb +0 -28
- data/spec/requests/glossary/language_pairs_spec.rb +0 -27
- data/spec/requests/glossary/list_spec.rb +0 -27
- data/spec/requests/languages_spec.rb +0 -27
- data/spec/requests/rephrase_spec.rb +0 -46
- data/spec/requests/style_rule/create_custom_instruction_spec.rb +0 -30
- data/spec/requests/style_rule/create_spec.rb +0 -29
- data/spec/requests/style_rule/destroy_custom_instruction_spec.rb +0 -28
- data/spec/requests/style_rule/destroy_spec.rb +0 -27
- data/spec/requests/style_rule/find_custom_instruction_spec.rb +0 -29
- data/spec/requests/style_rule/find_spec.rb +0 -28
- data/spec/requests/style_rule/list_spec.rb +0 -27
- data/spec/requests/style_rule/update_configured_rules_spec.rb +0 -31
- data/spec/requests/style_rule/update_custom_instruction_spec.rb +0 -32
- data/spec/requests/style_rule/update_spec.rb +0 -29
- data/spec/requests/translate_spec.rb +0 -338
- data/spec/requests/translation_memory/create_export_spec.rb +0 -37
- data/spec/requests/translation_memory/create_import_spec.rb +0 -61
- data/spec/requests/translation_memory/destroy_spec.rb +0 -36
- data/spec/requests/translation_memory/download_export_spec.rb +0 -54
- data/spec/requests/translation_memory/find_job_spec.rb +0 -37
- data/spec/requests/translation_memory/find_spec.rb +0 -36
- data/spec/requests/translation_memory/list_spec.rb +0 -27
- data/spec/requests/translation_memory/segments_spec.rb +0 -58
- data/spec/requests/translation_memory/upload_file_spec.rb +0 -55
- data/spec/requests/usage_spec.rb +0 -27
- data/spec/resources/custom_instruction_spec.rb +0 -32
- data/spec/resources/glossary_spec.rb +0 -38
- data/spec/resources/language_pair_spec.rb +0 -23
- data/spec/resources/language_spec.rb +0 -45
- data/spec/resources/style_rule_spec.rb +0 -68
- data/spec/resources/text_spec.rb +0 -23
- data/spec/resources/translation_memory_export_spec.rb +0 -38
- data/spec/resources/translation_memory_import_spec.rb +0 -30
- data/spec/resources/translation_memory_job_spec.rb +0 -109
- data/spec/resources/translation_memory_segments_spec.rb +0 -78
- data/spec/resources/translation_memory_spec.rb +0 -52
- data/spec/resources/usage_spec.rb +0 -35
- data/spec/support/live_mock_server.rb +0 -12
- data/spec/support/managed_glossary.rb +0 -65
- data/spec/support/managed_style_rule.rb +0 -17
- data/spec/support/managed_translation_memory.rb +0 -55
data/lib/deepl.rb
CHANGED
|
@@ -4,11 +4,16 @@
|
|
|
4
4
|
# frozen_string_literal: true
|
|
5
5
|
|
|
6
6
|
# -- Dependencies
|
|
7
|
+
require 'fileutils'
|
|
7
8
|
require 'json'
|
|
8
9
|
require 'net/http'
|
|
9
10
|
|
|
11
|
+
# -- Deprecation
|
|
12
|
+
require_relative 'deepl/deprecation'
|
|
13
|
+
|
|
10
14
|
# -- Exceptions
|
|
11
15
|
require_relative 'deepl/exceptions/error'
|
|
16
|
+
require_relative 'deepl/exceptions/validation_error'
|
|
12
17
|
require_relative 'deepl/exceptions/request_error'
|
|
13
18
|
require_relative 'deepl/exceptions/authorization_failed'
|
|
14
19
|
require_relative 'deepl/exceptions/bad_request'
|
|
@@ -19,6 +24,8 @@ require_relative 'deepl/exceptions/not_supported'
|
|
|
19
24
|
require_relative 'deepl/exceptions/request_entity_too_large'
|
|
20
25
|
require_relative 'deepl/exceptions/document_translation_error'
|
|
21
26
|
require_relative 'deepl/exceptions/server_error'
|
|
27
|
+
require_relative 'deepl/exceptions/document_not_ready_error'
|
|
28
|
+
require_relative 'deepl/exceptions/connection_error'
|
|
22
29
|
|
|
23
30
|
# -- Requests
|
|
24
31
|
require_relative 'deepl/requests/base'
|
|
@@ -31,6 +38,16 @@ require_relative 'deepl/requests/glossary/entries'
|
|
|
31
38
|
require_relative 'deepl/requests/glossary/find'
|
|
32
39
|
require_relative 'deepl/requests/glossary/language_pairs'
|
|
33
40
|
require_relative 'deepl/requests/glossary/list'
|
|
41
|
+
require_relative 'deepl/requests/multilingual_glossary/helpers'
|
|
42
|
+
require_relative 'deepl/requests/multilingual_glossary/create'
|
|
43
|
+
require_relative 'deepl/requests/multilingual_glossary/destroy'
|
|
44
|
+
require_relative 'deepl/requests/multilingual_glossary/destroy_dictionary'
|
|
45
|
+
require_relative 'deepl/requests/multilingual_glossary/entries'
|
|
46
|
+
require_relative 'deepl/requests/multilingual_glossary/find'
|
|
47
|
+
require_relative 'deepl/requests/multilingual_glossary/list'
|
|
48
|
+
require_relative 'deepl/requests/multilingual_glossary/replace_dictionary'
|
|
49
|
+
require_relative 'deepl/requests/multilingual_glossary/update'
|
|
50
|
+
require_relative 'deepl/requests/style_rule/helpers'
|
|
34
51
|
require_relative 'deepl/requests/style_rule/list'
|
|
35
52
|
require_relative 'deepl/requests/style_rule/create'
|
|
36
53
|
require_relative 'deepl/requests/style_rule/find'
|
|
@@ -41,6 +58,21 @@ require_relative 'deepl/requests/style_rule/create_custom_instruction'
|
|
|
41
58
|
require_relative 'deepl/requests/style_rule/find_custom_instruction'
|
|
42
59
|
require_relative 'deepl/requests/style_rule/update_custom_instruction'
|
|
43
60
|
require_relative 'deepl/requests/style_rule/destroy_custom_instruction'
|
|
61
|
+
require_relative 'deepl/requests/spoken_terms/helpers'
|
|
62
|
+
require_relative 'deepl/requests/spoken_terms/create'
|
|
63
|
+
require_relative 'deepl/requests/spoken_terms/list'
|
|
64
|
+
require_relative 'deepl/requests/spoken_terms/find'
|
|
65
|
+
require_relative 'deepl/requests/spoken_terms/update'
|
|
66
|
+
require_relative 'deepl/requests/spoken_terms/entries'
|
|
67
|
+
require_relative 'deepl/requests/spoken_terms/replace_term_list'
|
|
68
|
+
require_relative 'deepl/requests/spoken_terms/destroy'
|
|
69
|
+
require_relative 'deepl/requests/spoken_terms/destroy_term_list'
|
|
70
|
+
require_relative 'deepl/requests/style_profile/base'
|
|
71
|
+
require_relative 'deepl/requests/style_profile/list'
|
|
72
|
+
require_relative 'deepl/requests/style_profile/create'
|
|
73
|
+
require_relative 'deepl/requests/style_profile/find'
|
|
74
|
+
require_relative 'deepl/requests/style_profile/update'
|
|
75
|
+
require_relative 'deepl/requests/style_profile/destroy'
|
|
44
76
|
require_relative 'deepl/requests/translation_memory/base'
|
|
45
77
|
require_relative 'deepl/requests/translation_memory/storage_base'
|
|
46
78
|
require_relative 'deepl/requests/translation_memory/list'
|
|
@@ -53,16 +85,29 @@ require_relative 'deepl/requests/translation_memory/create_export'
|
|
|
53
85
|
require_relative 'deepl/requests/translation_memory/find_job'
|
|
54
86
|
require_relative 'deepl/requests/translation_memory/download_export'
|
|
55
87
|
require_relative 'deepl/requests/languages'
|
|
88
|
+
require_relative 'deepl/requests/languages_for_resource'
|
|
89
|
+
require_relative 'deepl/requests/language_resources'
|
|
56
90
|
require_relative 'deepl/requests/translate'
|
|
57
91
|
require_relative 'deepl/requests/usage'
|
|
92
|
+
require_relative 'deepl/requests/write_improvements'
|
|
58
93
|
require_relative 'deepl/requests/rephrase'
|
|
94
|
+
require_relative 'deepl/requests/correct'
|
|
95
|
+
require_relative 'deepl/requests/admin/base'
|
|
96
|
+
require_relative 'deepl/requests/admin/usage_analytics'
|
|
97
|
+
require_relative 'deepl/requests/admin/custom_tag_usage_analytics'
|
|
98
|
+
require_relative 'deepl/requests/admin/create_developer_key'
|
|
99
|
+
require_relative 'deepl/requests/admin/list_developer_keys'
|
|
100
|
+
require_relative 'deepl/requests/admin/update_developer_key'
|
|
59
101
|
|
|
60
102
|
# -- Responses and resources
|
|
61
103
|
require_relative 'deepl/resources/base'
|
|
62
104
|
require_relative 'deepl/resources/document_handle'
|
|
63
105
|
require_relative 'deepl/resources/document_translation_status'
|
|
64
106
|
require_relative 'deepl/resources/glossary'
|
|
107
|
+
require_relative 'deepl/resources/multilingual_glossary'
|
|
65
108
|
require_relative 'deepl/resources/style_rule'
|
|
109
|
+
require_relative 'deepl/resources/spoken_terms'
|
|
110
|
+
require_relative 'deepl/resources/style_profile'
|
|
66
111
|
require_relative 'deepl/resources/translation_memory'
|
|
67
112
|
require_relative 'deepl/resources/translation_memory_segments'
|
|
68
113
|
require_relative 'deepl/resources/translation_memory_import'
|
|
@@ -70,22 +115,38 @@ require_relative 'deepl/resources/translation_memory_export'
|
|
|
70
115
|
require_relative 'deepl/resources/translation_memory_job'
|
|
71
116
|
require_relative 'deepl/resources/language'
|
|
72
117
|
require_relative 'deepl/resources/language_pair'
|
|
118
|
+
require_relative 'deepl/resources/language_resource'
|
|
119
|
+
require_relative 'deepl/resources/language_support'
|
|
73
120
|
require_relative 'deepl/resources/text'
|
|
74
121
|
require_relative 'deepl/resources/usage'
|
|
122
|
+
require_relative 'deepl/resources/developer_key'
|
|
123
|
+
require_relative 'deepl/resources/admin_usage_report'
|
|
124
|
+
require_relative 'deepl/resources/custom_tag_usage_report'
|
|
75
125
|
|
|
76
126
|
# -- Utils
|
|
77
127
|
require_relative 'deepl/utils/exception_builder'
|
|
128
|
+
require_relative 'deepl/utils/http_client_builder'
|
|
129
|
+
require_relative 'deepl/utils/client_builder'
|
|
78
130
|
require_relative 'deepl/utils/backoff_timer'
|
|
79
131
|
require_relative 'deepl/utils/time_parser'
|
|
132
|
+
require_relative 'deepl/utils/number_parser'
|
|
133
|
+
require_relative 'deepl/utils/term_validator'
|
|
134
|
+
require_relative 'deepl/utils/document_poller'
|
|
80
135
|
|
|
81
136
|
# -- Constants
|
|
82
137
|
require_relative 'deepl/constants/base_constant'
|
|
138
|
+
require_relative 'deepl/constants/document_status_code'
|
|
83
139
|
require_relative 'deepl/constants/formality'
|
|
140
|
+
require_relative 'deepl/constants/language_include'
|
|
141
|
+
require_relative 'deepl/constants/language_resource_name'
|
|
84
142
|
require_relative 'deepl/constants/model_type'
|
|
85
143
|
require_relative 'deepl/constants/split_sentences'
|
|
86
144
|
require_relative 'deepl/constants/tag_handling'
|
|
145
|
+
require_relative 'deepl/constants/tag_handling_version'
|
|
87
146
|
require_relative 'deepl/constants/tone'
|
|
88
147
|
require_relative 'deepl/constants/writing_style'
|
|
148
|
+
require_relative 'deepl/constants/admin_usage_group_by'
|
|
149
|
+
require_relative 'deepl/constants/custom_tag_usage_aggregate_by'
|
|
89
150
|
|
|
90
151
|
# -- HTTP Utils
|
|
91
152
|
require_relative 'http_client_options'
|
|
@@ -100,19 +161,32 @@ require_relative 'deepl/document_api'
|
|
|
100
161
|
require_relative 'deepl/glossary_api'
|
|
101
162
|
require_relative 'deepl/style_rule_api'
|
|
102
163
|
require_relative 'deepl/translation_memory_api'
|
|
164
|
+
require_relative 'deepl/app_info'
|
|
165
|
+
require_relative 'deepl/client'
|
|
166
|
+
require_relative 'deepl/admin_client'
|
|
103
167
|
|
|
104
168
|
# -- Gem interface
|
|
169
|
+
#
|
|
170
|
+
# The module-level API (+DeepL.configure+, +DeepL.translate+, +DeepL.glossaries+, ...) keeps its
|
|
171
|
+
# configuration in module state. It is deprecated in favour of DeepL::Client and will be removed
|
|
172
|
+
# in the next major version.
|
|
105
173
|
module DeepL
|
|
106
174
|
extend self
|
|
107
175
|
|
|
108
176
|
## -- API shortcuts
|
|
109
177
|
|
|
178
|
+
# @deprecated Use DeepL::Client instead.
|
|
110
179
|
def api
|
|
111
|
-
|
|
180
|
+
deprecated(:api, 'DeepL::Client')
|
|
181
|
+
module_api
|
|
112
182
|
end
|
|
113
183
|
|
|
184
|
+
# @deprecated Use DeepL::Client#get_source_languages or DeepL::Client#get_target_languages
|
|
185
|
+
# instead.
|
|
114
186
|
def languages(options = {})
|
|
115
|
-
|
|
187
|
+
deprecated(:languages,
|
|
188
|
+
'DeepL::Client#get_source_languages or DeepL::Client#get_target_languages')
|
|
189
|
+
Requests::Languages.new(module_api, options).request
|
|
116
190
|
end
|
|
117
191
|
|
|
118
192
|
##
|
|
@@ -122,88 +196,139 @@ module DeepL
|
|
|
122
196
|
# @param [String, nil] source_lang Source language. `nil` enables automatic detection.
|
|
123
197
|
# @param [String] target_lang Target language.
|
|
124
198
|
# @param [Hash] options Additional (body) options for the translation. Notable options:
|
|
125
|
-
# * +:
|
|
126
|
-
#
|
|
127
|
-
#
|
|
128
|
-
#
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
#
|
|
199
|
+
# * +:glossary+ - A glossary ID, `DeepL::Resources::Glossary` or
|
|
200
|
+
# `DeepL::Resources::MultilingualGlossary` to use for the translation, sent as
|
|
201
|
+
# +glossary_id+. Cannot be combined with +:glossary_id+ or +:glossary_ids+.
|
|
202
|
+
# * +:glossary_id+ - Deprecated, use +:glossary+. A single glossary ID (string).
|
|
203
|
+
# * +:glossary_ids+ - An array of up to 5 glossary IDs (strings,
|
|
204
|
+
# `DeepL::Resources::Glossary` or `DeepL::Resources::MultilingualGlossary` objects) to
|
|
205
|
+
# use for the translation. Glossaries are applied in order (first match wins). Without
|
|
206
|
+
# +source_lang+, the API detects it. Cannot be combined with +:glossary+ or
|
|
207
|
+
# +:glossary_id+. Raises `ArgumentError` if these rules are violated or more than 5 IDs
|
|
208
|
+
# are provided.
|
|
209
|
+
# * +:style_rule+ - A style rule ID string or a `DeepL::Resources::StyleRule` object.
|
|
210
|
+
# * +:style_profile+ - A style profile ID string or a `DeepL::Resources::StyleProfile`
|
|
211
|
+
# object. Applies the profile's glossaries, style rule lists and translation memories.
|
|
132
212
|
# @param [Hash] additional_headers Additional HTTP headers for the translation.
|
|
133
213
|
# @return [DeepL::Resources::Text, Array<DeepL::Resources::Text>] Translated text resource(s).
|
|
214
|
+
# @deprecated Use DeepL::Client#translate_text instead.
|
|
134
215
|
def translate(text, source_lang, target_lang, options = {}, additional_headers = {})
|
|
135
|
-
|
|
136
|
-
|
|
216
|
+
deprecated(:translate, 'DeepL::Client#translate_text')
|
|
217
|
+
ensure_configured
|
|
218
|
+
Requests::Translate.new(module_api, text, source_lang, target_lang, options,
|
|
137
219
|
additional_headers).request
|
|
138
220
|
end
|
|
139
221
|
|
|
222
|
+
# @deprecated Use DeepL::Client instead.
|
|
140
223
|
def document(options = {})
|
|
141
|
-
|
|
142
|
-
|
|
224
|
+
deprecated(:document, 'DeepL::Client')
|
|
225
|
+
ensure_configured
|
|
226
|
+
DocumentApi.new(module_api, options)
|
|
143
227
|
end
|
|
144
228
|
|
|
229
|
+
# @deprecated Use DeepL::Client instead.
|
|
145
230
|
def glossaries(options = {})
|
|
146
|
-
|
|
147
|
-
|
|
231
|
+
deprecated(:glossaries, 'DeepL::Client')
|
|
232
|
+
ensure_configured
|
|
233
|
+
GlossaryApi.new(module_api, options)
|
|
148
234
|
end
|
|
149
235
|
|
|
236
|
+
# @deprecated Use DeepL::Client instead.
|
|
150
237
|
def style_rules(options = {})
|
|
151
|
-
|
|
152
|
-
|
|
238
|
+
deprecated(:style_rules, 'DeepL::Client')
|
|
239
|
+
ensure_configured
|
|
240
|
+
StyleRuleApi.new(module_api, options)
|
|
153
241
|
end
|
|
154
242
|
|
|
243
|
+
# @deprecated Use DeepL::Client instead.
|
|
155
244
|
def translation_memories(options = {})
|
|
156
|
-
|
|
157
|
-
|
|
245
|
+
deprecated(:translation_memories, 'DeepL::Client')
|
|
246
|
+
ensure_configured
|
|
247
|
+
TranslationMemoryApi.new(module_api, options)
|
|
158
248
|
end
|
|
159
249
|
|
|
250
|
+
# @deprecated Use DeepL::Client#rephrase_text instead.
|
|
160
251
|
def rephrase(text, target_lang = nil, writing_style = nil, tone = nil, options = {}, # rubocop:disable Metrics/ParameterLists
|
|
161
252
|
additional_headers = {})
|
|
162
|
-
|
|
163
|
-
|
|
253
|
+
deprecated(:rephrase, 'DeepL::Client#rephrase_text')
|
|
254
|
+
ensure_configured
|
|
255
|
+
Requests::Rephrase.new(module_api, text, target_lang, writing_style, tone, options,
|
|
164
256
|
additional_headers).request
|
|
165
257
|
end
|
|
166
258
|
|
|
259
|
+
# @deprecated Use DeepL::Client#get_usage instead.
|
|
167
260
|
def usage(options = {})
|
|
168
|
-
|
|
169
|
-
|
|
261
|
+
deprecated(:usage, 'DeepL::Client#get_usage')
|
|
262
|
+
ensure_configured
|
|
263
|
+
Requests::Usage.new(module_api, options).request
|
|
170
264
|
end
|
|
171
265
|
|
|
266
|
+
# @deprecated Use DeepL::Client with +http_client_options:+ instead.
|
|
172
267
|
def http_client
|
|
268
|
+
deprecated(:http_client, 'DeepL::Client')
|
|
173
269
|
@http_client
|
|
174
270
|
end
|
|
175
271
|
|
|
176
|
-
|
|
177
|
-
|
|
272
|
+
# @deprecated Use DeepL::Client with +http_client_options:+ instead.
|
|
273
|
+
def with_session(client_options = HTTPClientOptions.new) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
|
274
|
+
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
|
|
178
275
|
|
|
179
|
-
|
|
276
|
+
deprecated(:with_session, 'DeepL::Client')
|
|
277
|
+
previous_api_client = module_api.http_client
|
|
278
|
+
previous_api_options = module_api.http_client_options
|
|
279
|
+
previous_http_client = @http_client
|
|
180
280
|
begin
|
|
181
|
-
|
|
182
|
-
http
|
|
183
|
-
has_proxy ? client_options.proxy['proxy_port'] : nil)
|
|
184
|
-
http.use_ssl = client_options.enable_ssl_verification
|
|
185
|
-
http.ca_file = client_options.cert_path if client_options.cert_path
|
|
186
|
-
http.open_timeout = client_options.open_timeout unless client_options.open_timeout.nil?
|
|
187
|
-
http.read_timeout = client_options.read_timeout unless client_options.read_timeout.nil?
|
|
188
|
-
http.write_timeout = client_options.write_timeout unless client_options.write_timeout.nil?
|
|
189
|
-
http.ssl_timeout = client_options.ssl_timeout unless client_options.ssl_timeout.nil?
|
|
190
|
-
http.start
|
|
281
|
+
http = Utils::HTTPClientBuilder.build(module_configuration.host, client_options)
|
|
282
|
+
start_session(http, client_options)
|
|
191
283
|
@http_client = http
|
|
192
|
-
|
|
284
|
+
module_api.update_http_client(http, client_options)
|
|
193
285
|
yield
|
|
194
286
|
ensure
|
|
195
|
-
|
|
287
|
+
module_api.update_http_client(previous_api_client, previous_api_options)
|
|
288
|
+
@http_client = previous_http_client
|
|
289
|
+
http.finish if http&.started?
|
|
196
290
|
end
|
|
197
291
|
end
|
|
198
292
|
|
|
199
293
|
# -- Configuration
|
|
200
294
|
|
|
295
|
+
# @deprecated Use DeepL::Client.new instead.
|
|
201
296
|
def configuration
|
|
202
|
-
|
|
297
|
+
deprecated(:configuration, 'DeepL::Client.new')
|
|
298
|
+
module_configuration
|
|
203
299
|
end
|
|
204
300
|
|
|
301
|
+
# @deprecated Use DeepL::Client.new instead.
|
|
205
302
|
def configure
|
|
206
|
-
|
|
207
|
-
|
|
303
|
+
deprecated(:configure, 'DeepL::Client.new')
|
|
304
|
+
yield module_configuration if block_given?
|
|
305
|
+
module_configuration.validate!
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
private
|
|
309
|
+
|
|
310
|
+
def module_configuration
|
|
311
|
+
@configuration ||= Configuration.new # rubocop:disable Naming/MemoizedInstanceVariableName
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def module_api
|
|
315
|
+
@api ||= API.new(module_configuration) # rubocop:disable Naming/MemoizedInstanceVariableName
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
# Opens the session connection within the configured timeout, unless the options set one.
|
|
319
|
+
def start_session(http, client_options)
|
|
320
|
+
timeout = module_configuration.timeout
|
|
321
|
+
http.open_timeout = timeout if client_options.open_timeout.nil? && timeout
|
|
322
|
+
http.start
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def ensure_configured
|
|
326
|
+
module_configuration.validate! if @configuration.nil?
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def deprecated(name, replacement)
|
|
330
|
+
Deprecation.warn_once("DeepL.#{name}",
|
|
331
|
+
"[DEPRECATION] DeepL.#{name} is deprecated, use #{replacement} instead.",
|
|
332
|
+
uplevel: 3)
|
|
208
333
|
end
|
|
209
334
|
end
|
data/lib/http_client_options.rb
CHANGED
|
@@ -8,7 +8,7 @@ module DeepL
|
|
|
8
8
|
attr_reader :proxy, :send_platform_info, :enable_ssl_verification, :cert_path, :open_timeout,
|
|
9
9
|
:read_timeout, :write_timeout, :ssl_timeout
|
|
10
10
|
|
|
11
|
-
def initialize(proxy, cert_path, enable_ssl_verification: true, open_timeout: nil, # rubocop:disable Metrics/ParameterLists
|
|
11
|
+
def initialize(proxy = {}, cert_path = nil, enable_ssl_verification: true, open_timeout: nil, # rubocop:disable Metrics/ParameterLists
|
|
12
12
|
read_timeout: nil, write_timeout: nil, ssl_timeout: nil)
|
|
13
13
|
@proxy = proxy
|
|
14
14
|
@enable_ssl_verification = enable_ssl_verification
|
|
@@ -18,5 +18,25 @@ module DeepL
|
|
|
18
18
|
@write_timeout = write_timeout
|
|
19
19
|
@ssl_timeout = ssl_timeout
|
|
20
20
|
end
|
|
21
|
+
|
|
22
|
+
# Hides the user info of a proxy URL: +http://user:pass@host:port+ becomes
|
|
23
|
+
# +http://[REDACTED]@host:port+.
|
|
24
|
+
def self.redact_proxy(proxy)
|
|
25
|
+
if proxy.is_a?(String)
|
|
26
|
+
return proxy.sub(%r{\A([a-z][a-z0-9+.-]*://)?[^/@]*@}i,
|
|
27
|
+
'\1[REDACTED]@')
|
|
28
|
+
end
|
|
29
|
+
return proxy unless proxy.is_a?(Hash)
|
|
30
|
+
|
|
31
|
+
proxy.to_h { |key, value| [key, key.to_s =~ /user|pass/i ? '[REDACTED]' : value] }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Leaves out the proxy credentials.
|
|
35
|
+
def inspect
|
|
36
|
+
shown = { proxy: self.class.redact_proxy(proxy), cert_path: cert_path,
|
|
37
|
+
enable_ssl_verification: enable_ssl_verification, open_timeout: open_timeout,
|
|
38
|
+
read_timeout: read_timeout, write_timeout: write_timeout, ssl_timeout: ssl_timeout }
|
|
39
|
+
"#<#{self.class.name} #{shown.map { |name, value| "#{name}=#{value.inspect}" }.join(', ')}>"
|
|
40
|
+
end
|
|
21
41
|
end
|
|
22
42
|
end
|
data/lib/version.rb
CHANGED
data/spec/fixtures.rb
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright 2026 DeepL SE (https://www.deepl.com)
|
|
2
|
+
# Use of this source code is governed by an MIT
|
|
3
|
+
# license that can be found in the LICENSE file.
|
|
4
|
+
# frozen_string_literal: true
|
|
5
|
+
|
|
6
|
+
require 'tmpdir'
|
|
7
|
+
|
|
8
|
+
# Fixtures shared by the offline and the real-API specs.
|
|
9
|
+
module Fixtures
|
|
10
|
+
EXAMPLE_TMX = <<~TMX
|
|
11
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
12
|
+
<tmx version="1.4"><header creationtool="deepl-rb-spec" creationtoolversion="1"
|
|
13
|
+
segtype="sentence" o-tmf="plain" adminlang="en" srclang="en" datatype="plaintext"/>
|
|
14
|
+
<body><tu><tuv xml:lang="en"><seg>Segment number 1</seg></tuv>
|
|
15
|
+
<tuv xml:lang="de"><seg>Segment Nummer 1</seg></tuv></tu></body></tmx>
|
|
16
|
+
TMX
|
|
17
|
+
|
|
18
|
+
# Every byte value, to check that downloads are written unchanged.
|
|
19
|
+
BINARY_CONTENT = (0..255).map(&:chr).join.b.freeze
|
|
20
|
+
|
|
21
|
+
# Writes an example .txt document in +dir+. Returns the input path and a free output path.
|
|
22
|
+
def create_text_document(dir)
|
|
23
|
+
input = File.join(dir, 'example_document.txt')
|
|
24
|
+
File.write(input, 'proton beam')
|
|
25
|
+
[input, File.join(dir, 'output_document.txt')]
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
RSpec.shared_context 'with a temporary directory' do
|
|
30
|
+
let(:temp_dir) { Dir.mktmpdir('deepl-rspec-') }
|
|
31
|
+
|
|
32
|
+
after { FileUtils.remove_entry(temp_dir) }
|
|
33
|
+
end
|