ibm_watson 0.2.0 → 0.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 +4 -4
- data/README.md +39 -3
- data/lib/ibm_watson/assistant_v1.rb +15 -0
- data/lib/ibm_watson/discovery_v1.rb +15 -0
- data/lib/ibm_watson/language_translator_v3.rb +15 -0
- data/lib/ibm_watson/natural_language_classifier_v1.rb +15 -0
- data/lib/ibm_watson/natural_language_understanding_v1.rb +15 -0
- data/lib/ibm_watson/personality_insights_v3.rb +15 -0
- data/lib/ibm_watson/speech_to_text_v1.rb +15 -0
- data/lib/ibm_watson/text_to_speech_v1.rb +15 -0
- data/lib/ibm_watson/tone_analyzer_v3.rb +15 -0
- data/lib/ibm_watson/version.rb +1 -1
- data/lib/ibm_watson/visual_recognition_v3.rb +15 -0
- data/lib/ibm_watson/watson_service.rb +48 -7
- data/test/unit/test_configure_http_client.rb +162 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e5497c0b4d5432eeebd77445b2563795c103cd37eb7110d6405c28658d10ffa
|
4
|
+
data.tar.gz: 0ff12a91d90c19d074672665a2539ed5a9a4b2bafd0922e613d0e4121441be67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 734634cbd63a3a5b3dda1e4fa6b77ba8285f7c493d4b8c107abd2119e4564b42e96eff6af4387da504c83ae2697a8a13fef8ade200e80d6b7d6142ce2fd334ef
|
7
|
+
data.tar.gz: 42d4aca1005a5a614411d10d0c8ca50d3227558f3cb9d9490fdb8386737850c0e490dbab6b8bf02a3581f4c927f657dba08575bfb99fdd6fdf91ff3c2a431a19
|
data/README.md
CHANGED
@@ -22,6 +22,7 @@ Ruby gem to quickly get started with the various [IBM Watson][wdc] services.
|
|
22
22
|
* [Sending requests asynchronously](#sending-requests-asynchronously)
|
23
23
|
* [Sending request headers](#sending-request-headers)
|
24
24
|
* [Parsing HTTP response info](#parsing-http-response-info)
|
25
|
+
* [Configuring the HTTP client](#configuring-the-http-client)
|
25
26
|
* [Using Websockets](#using-websockets)
|
26
27
|
* [Ruby version](#ruby-version)
|
27
28
|
* [Contributing](#contributing)
|
@@ -71,9 +72,9 @@ Watson services are migrating to token-based Identity and Access Management (IAM
|
|
71
72
|
To find out which authentication to use, view the service credentials. You find the service credentials for authentication the same way for all Watson services:
|
72
73
|
|
73
74
|
1. Go to the IBM Cloud **[Dashboard][watson-dashboard]** page.
|
74
|
-
|
75
|
-
|
76
|
-
|
75
|
+
2. Either click an existing Watson service instance or click **Create**.
|
76
|
+
3. Click **Show** to view your service credentials.
|
77
|
+
4. Copy the `url` and either `apikey` or `username` and `password`.
|
77
78
|
|
78
79
|
### IAM
|
79
80
|
|
@@ -211,6 +212,41 @@ Headers: "<http response headers>"
|
|
211
212
|
Result: "<response returned by service>"
|
212
213
|
```
|
213
214
|
|
215
|
+
## Configuring the HTTP client
|
216
|
+
To set client configs like timeout or proxy use the `configure_http_client` function and pass in the configurations.
|
217
|
+
|
218
|
+
```ruby
|
219
|
+
require "ibm_watson/assistant_v1"
|
220
|
+
include IBMWatson
|
221
|
+
|
222
|
+
assistant = AssistantV1.new(
|
223
|
+
username: "{username}",
|
224
|
+
password: "{password}",
|
225
|
+
version: "2018-07-10"
|
226
|
+
)
|
227
|
+
|
228
|
+
assistant.configure_http_client(
|
229
|
+
timeout: {
|
230
|
+
# Accepts either :per_operation or :global
|
231
|
+
per_operation: { # The individual timeouts for each operation
|
232
|
+
read: 5,
|
233
|
+
write: 7,
|
234
|
+
connect: 10
|
235
|
+
}
|
236
|
+
# global: 30 # The total timeout time
|
237
|
+
},
|
238
|
+
proxy: {
|
239
|
+
address: "bogus_address.com",
|
240
|
+
port: 9999,
|
241
|
+
username: "username",
|
242
|
+
password: "password",
|
243
|
+
headers: {
|
244
|
+
bogus_header: true
|
245
|
+
}
|
246
|
+
}
|
247
|
+
)
|
248
|
+
```
|
249
|
+
|
214
250
|
## Using Websockets
|
215
251
|
|
216
252
|
The Speech-to-Text service supports websockets with the `recognize-with-websockets` method. The method accepts a custom callback class. The `eventmachine` loop that the websocket uses blocks the main thread by default. Here is an example of using the websockets method:
|
@@ -142,6 +142,21 @@ module IBMWatson
|
|
142
142
|
def url
|
143
143
|
@watson_service.url
|
144
144
|
end
|
145
|
+
|
146
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
147
|
+
# Sets the http client config, currently works with timeout and proxies
|
148
|
+
# @param proxy [Hash] The hash of proxy configurations
|
149
|
+
# @option proxy address [String] The address of the proxy
|
150
|
+
# @option proxy port [Integer] The port of the proxy
|
151
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
152
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
153
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
154
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
155
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
156
|
+
# @option timeout global [Integer] Upper bound on total request time
|
157
|
+
def configure_http_client(proxy: {}, timeout: {})
|
158
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
159
|
+
end
|
145
160
|
# :nocov:
|
146
161
|
#########################
|
147
162
|
# Message
|
@@ -144,6 +144,21 @@ module IBMWatson
|
|
144
144
|
def url
|
145
145
|
@watson_service.url
|
146
146
|
end
|
147
|
+
|
148
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
149
|
+
# Sets the http client config, currently works with timeout and proxies
|
150
|
+
# @param proxy [Hash] The hash of proxy configurations
|
151
|
+
# @option proxy address [String] The address of the proxy
|
152
|
+
# @option proxy port [Integer] The port of the proxy
|
153
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
154
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
155
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
156
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
157
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
158
|
+
# @option timeout global [Integer] Upper bound on total request time
|
159
|
+
def configure_http_client(proxy: {}, timeout: {})
|
160
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
161
|
+
end
|
147
162
|
# :nocov:
|
148
163
|
#########################
|
149
164
|
# Environments
|
@@ -144,6 +144,21 @@ module IBMWatson
|
|
144
144
|
def url
|
145
145
|
@watson_service.url
|
146
146
|
end
|
147
|
+
|
148
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
149
|
+
# Sets the http client config, currently works with timeout and proxies
|
150
|
+
# @param proxy [Hash] The hash of proxy configurations
|
151
|
+
# @option proxy address [String] The address of the proxy
|
152
|
+
# @option proxy port [Integer] The port of the proxy
|
153
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
154
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
155
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
156
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
157
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
158
|
+
# @option timeout global [Integer] Upper bound on total request time
|
159
|
+
def configure_http_client(proxy: {}, timeout: {})
|
160
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
161
|
+
end
|
147
162
|
# :nocov:
|
148
163
|
#########################
|
149
164
|
# Translation
|
@@ -131,6 +131,21 @@ module IBMWatson
|
|
131
131
|
def url
|
132
132
|
@watson_service.url
|
133
133
|
end
|
134
|
+
|
135
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
136
|
+
# Sets the http client config, currently works with timeout and proxies
|
137
|
+
# @param proxy [Hash] The hash of proxy configurations
|
138
|
+
# @option proxy address [String] The address of the proxy
|
139
|
+
# @option proxy port [Integer] The port of the proxy
|
140
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
141
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
142
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
143
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
144
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
145
|
+
# @option timeout global [Integer] Upper bound on total request time
|
146
|
+
def configure_http_client(proxy: {}, timeout: {})
|
147
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
148
|
+
end
|
134
149
|
# :nocov:
|
135
150
|
#########################
|
136
151
|
# Classify text
|
@@ -148,6 +148,21 @@ module IBMWatson
|
|
148
148
|
def url
|
149
149
|
@watson_service.url
|
150
150
|
end
|
151
|
+
|
152
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
153
|
+
# Sets the http client config, currently works with timeout and proxies
|
154
|
+
# @param proxy [Hash] The hash of proxy configurations
|
155
|
+
# @option proxy address [String] The address of the proxy
|
156
|
+
# @option proxy port [Integer] The port of the proxy
|
157
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
158
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
159
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
160
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
161
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
162
|
+
# @option timeout global [Integer] Upper bound on total request time
|
163
|
+
def configure_http_client(proxy: {}, timeout: {})
|
164
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
165
|
+
end
|
151
166
|
# :nocov:
|
152
167
|
#########################
|
153
168
|
# Analyze
|
@@ -159,6 +159,21 @@ module IBMWatson
|
|
159
159
|
def url
|
160
160
|
@watson_service.url
|
161
161
|
end
|
162
|
+
|
163
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
164
|
+
# Sets the http client config, currently works with timeout and proxies
|
165
|
+
# @param proxy [Hash] The hash of proxy configurations
|
166
|
+
# @option proxy address [String] The address of the proxy
|
167
|
+
# @option proxy port [Integer] The port of the proxy
|
168
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
169
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
170
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
171
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
172
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
173
|
+
# @option timeout global [Integer] Upper bound on total request time
|
174
|
+
def configure_http_client(proxy: {}, timeout: {})
|
175
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
176
|
+
end
|
162
177
|
# :nocov:
|
163
178
|
#########################
|
164
179
|
# Methods
|
@@ -179,6 +179,21 @@ module IBMWatson
|
|
179
179
|
def url
|
180
180
|
@watson_service.url
|
181
181
|
end
|
182
|
+
|
183
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
184
|
+
# Sets the http client config, currently works with timeout and proxies
|
185
|
+
# @param proxy [Hash] The hash of proxy configurations
|
186
|
+
# @option proxy address [String] The address of the proxy
|
187
|
+
# @option proxy port [Integer] The port of the proxy
|
188
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
189
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
190
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
191
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
192
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
193
|
+
# @option timeout global [Integer] Upper bound on total request time
|
194
|
+
def configure_http_client(proxy: {}, timeout: {})
|
195
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
196
|
+
end
|
182
197
|
# :nocov:
|
183
198
|
#########################
|
184
199
|
# Models
|
@@ -180,6 +180,21 @@ module IBMWatson
|
|
180
180
|
def url
|
181
181
|
@watson_service.url
|
182
182
|
end
|
183
|
+
|
184
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
185
|
+
# Sets the http client config, currently works with timeout and proxies
|
186
|
+
# @param proxy [Hash] The hash of proxy configurations
|
187
|
+
# @option proxy address [String] The address of the proxy
|
188
|
+
# @option proxy port [Integer] The port of the proxy
|
189
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
190
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
191
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
192
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
193
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
194
|
+
# @option timeout global [Integer] Upper bound on total request time
|
195
|
+
def configure_http_client(proxy: {}, timeout: {})
|
196
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
197
|
+
end
|
183
198
|
# :nocov:
|
184
199
|
#########################
|
185
200
|
# Voices
|
@@ -150,6 +150,21 @@ module IBMWatson
|
|
150
150
|
def url
|
151
151
|
@watson_service.url
|
152
152
|
end
|
153
|
+
|
154
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
155
|
+
# Sets the http client config, currently works with timeout and proxies
|
156
|
+
# @param proxy [Hash] The hash of proxy configurations
|
157
|
+
# @option proxy address [String] The address of the proxy
|
158
|
+
# @option proxy port [Integer] The port of the proxy
|
159
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
160
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
161
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
162
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
163
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
164
|
+
# @option timeout global [Integer] Upper bound on total request time
|
165
|
+
def configure_http_client(proxy: {}, timeout: {})
|
166
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
167
|
+
end
|
153
168
|
# :nocov:
|
154
169
|
#########################
|
155
170
|
# Methods
|
data/lib/ibm_watson/version.rb
CHANGED
@@ -131,6 +131,21 @@ module IBMWatson
|
|
131
131
|
def url
|
132
132
|
@watson_service.url
|
133
133
|
end
|
134
|
+
|
135
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
136
|
+
# Sets the http client config, currently works with timeout and proxies
|
137
|
+
# @param proxy [Hash] The hash of proxy configurations
|
138
|
+
# @option proxy address [String] The address of the proxy
|
139
|
+
# @option proxy port [Integer] The port of the proxy
|
140
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
141
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
142
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
143
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
144
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
145
|
+
# @option timeout global [Integer] Upper bound on total request time
|
146
|
+
def configure_http_client(proxy: {}, timeout: {})
|
147
|
+
@watson_service.configure_http_client(proxy: proxy, timeout: timeout)
|
148
|
+
end
|
134
149
|
# :nocov:
|
135
150
|
#########################
|
136
151
|
# General
|
@@ -29,7 +29,6 @@ class WatsonService
|
|
29
29
|
password: nil,
|
30
30
|
use_vcap_services: true,
|
31
31
|
api_key: nil,
|
32
|
-
x_watson_learning_opt_out: false,
|
33
32
|
iam_apikey: nil,
|
34
33
|
iam_access_token: nil,
|
35
34
|
iam_url: nil
|
@@ -48,7 +47,6 @@ class WatsonService
|
|
48
47
|
headers = {
|
49
48
|
"User-Agent" => user_agent_string
|
50
49
|
}
|
51
|
-
headers["x-watson-learning-opt-out"] = true if vars[:x_watson_learning_opt_out]
|
52
50
|
if vars[:use_vcap_services]
|
53
51
|
@vcap_service_credentials = load_from_vcap_services(service_name: vars[:vcap_services_name])
|
54
52
|
if !@vcap_service_credentials.nil? && @vcap_service_credentials.instance_of?(Hash)
|
@@ -74,11 +72,6 @@ class WatsonService
|
|
74
72
|
|
75
73
|
@conn = HTTP::Client.new(
|
76
74
|
headers: headers
|
77
|
-
).timeout(
|
78
|
-
:per_operation,
|
79
|
-
read: 60,
|
80
|
-
write: 60,
|
81
|
-
connect: 60
|
82
75
|
)
|
83
76
|
end
|
84
77
|
|
@@ -177,4 +170,52 @@ class WatsonService
|
|
177
170
|
@temp_headers = headers
|
178
171
|
self
|
179
172
|
end
|
173
|
+
|
174
|
+
# @!method configure_http_client(proxy: {}, timeout: {})
|
175
|
+
# Sets the http client config, currently works with timeout and proxies
|
176
|
+
# @param proxy [Hash] The hash of proxy configurations
|
177
|
+
# @option proxy address [String] The address of the proxy
|
178
|
+
# @option proxy port [Integer] The port of the proxy
|
179
|
+
# @option proxy username [String] The username of the proxy, if authentication is needed
|
180
|
+
# @option proxy password [String] The password of the proxy, if authentication is needed
|
181
|
+
# @option proxy headers [Hash] The headers to be used with the proxy
|
182
|
+
# @param timeout [Hash] The hash for configuring timeouts. `per_operation` has priority over `global`
|
183
|
+
# @option timeout per_operation [Hash] Timeouts per operation. Requires `read`, `write`, `connect`
|
184
|
+
# @option timeout global [Integer] Upper bound on total request time
|
185
|
+
def configure_http_client(proxy: {}, timeout: {})
|
186
|
+
raise TypeError("proxy parameter must be a Hash") unless proxy.empty? || proxy.instance_of?(Hash)
|
187
|
+
raise TypeError("timeout parameter must be a Hash") unless timeout.empty? || timeout.instance_of?(Hash)
|
188
|
+
add_proxy(proxy) unless proxy.empty? || !proxy.dig(:address).is_a?(String) || !proxy.dig(:port).is_a?(Integer)
|
189
|
+
add_timeout(timeout) unless timeout.empty? || (!timeout.key?(:per_operation) && !timeout.key?(:global))
|
190
|
+
end
|
191
|
+
|
192
|
+
private
|
193
|
+
|
194
|
+
def add_timeout(timeout)
|
195
|
+
if timeout.key?(:per_operation)
|
196
|
+
raise TypeError("per_operation in timeout must be a Hash") unless timeout[:per_operation].instance_of?(Hash)
|
197
|
+
defaults = {
|
198
|
+
write: 0,
|
199
|
+
connect: 0,
|
200
|
+
read: 0
|
201
|
+
}
|
202
|
+
time = defaults.merge(timeout[:per_operation])
|
203
|
+
@conn = @conn.timeout(:per_operation, write: time[:write], connect: time[:connect], read: time[:read])
|
204
|
+
else
|
205
|
+
raise TypeError("global in timeout must be an Integer") unless timeout[:global].is_a?(Integer)
|
206
|
+
@conn = @conn.timeout(:global, write: timeout[:global], connect: 0, read: 0)
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
def add_proxy(proxy)
|
211
|
+
if (proxy[:username].nil? || proxy[:password].nil?) && proxy[:headers].nil?
|
212
|
+
@conn = @conn.via(proxy[:address], proxy[:port])
|
213
|
+
elsif !proxy[:username].nil? && !proxy[:password].nil? && proxy[:headers].nil?
|
214
|
+
@conn = @conn.via(proxy[:address], proxy[:port], proxy[:username], proxy[:password])
|
215
|
+
elsif !proxy[:headers].nil? && (proxy[:username].nil? || proxy[:password].nil?)
|
216
|
+
@conn = @conn.via(proxy[:address], proxy[:port], proxy[:headers])
|
217
|
+
else
|
218
|
+
@conn = @conn.via(proxy[:address], proxy[:port], proxy[:username], proxy[:password], proxy[:headers])
|
219
|
+
end
|
220
|
+
end
|
180
221
|
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require("json")
|
4
|
+
require_relative("./../test_helper.rb")
|
5
|
+
require("webmock/minitest")
|
6
|
+
|
7
|
+
WebMock.disable_net_connect!(allow_localhost: true)
|
8
|
+
|
9
|
+
# Unit tests for the configure_http_client customizations, such as proxies and timeouts
|
10
|
+
class HTTPConfigTest < Minitest::Test
|
11
|
+
def test_proxy_address_port
|
12
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
13
|
+
version: "2018-03-16",
|
14
|
+
username: "username",
|
15
|
+
password: "password"
|
16
|
+
)
|
17
|
+
def service.conn
|
18
|
+
@watson_service.conn
|
19
|
+
end
|
20
|
+
service.configure_http_client(
|
21
|
+
proxy: {
|
22
|
+
address: "bogus_address.com",
|
23
|
+
port: 9999
|
24
|
+
}
|
25
|
+
)
|
26
|
+
proxy = service.conn.default_options.proxy
|
27
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
28
|
+
assert_equal(9999, proxy[:proxy_port])
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_proxy_username_password
|
32
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
33
|
+
version: "2018-03-16",
|
34
|
+
username: "username",
|
35
|
+
password: "password"
|
36
|
+
)
|
37
|
+
def service.conn
|
38
|
+
@watson_service.conn
|
39
|
+
end
|
40
|
+
service.configure_http_client(
|
41
|
+
proxy: {
|
42
|
+
address: "bogus_address.com",
|
43
|
+
port: 9999,
|
44
|
+
username: "username",
|
45
|
+
password: "password"
|
46
|
+
}
|
47
|
+
)
|
48
|
+
proxy = service.conn.default_options.proxy
|
49
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
50
|
+
assert_equal(9999, proxy[:proxy_port])
|
51
|
+
assert_equal("username", proxy[:proxy_username])
|
52
|
+
assert_equal("password", proxy[:proxy_password])
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_proxy_headers
|
56
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
57
|
+
version: "2018-03-16",
|
58
|
+
username: "username",
|
59
|
+
password: "password"
|
60
|
+
)
|
61
|
+
def service.conn
|
62
|
+
@watson_service.conn
|
63
|
+
end
|
64
|
+
service.configure_http_client(
|
65
|
+
proxy: {
|
66
|
+
address: "bogus_address.com",
|
67
|
+
port: 9999,
|
68
|
+
headers: {
|
69
|
+
bogus_header: true
|
70
|
+
}
|
71
|
+
}
|
72
|
+
)
|
73
|
+
proxy = service.conn.default_options.proxy
|
74
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
75
|
+
assert_equal(9999, proxy[:proxy_port])
|
76
|
+
assert_equal({ bogus_header: true }, proxy[:proxy_headers])
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_proxy_username_password_headers
|
80
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
81
|
+
version: "2018-03-16",
|
82
|
+
username: "username",
|
83
|
+
password: "password"
|
84
|
+
)
|
85
|
+
def service.conn
|
86
|
+
@watson_service.conn
|
87
|
+
end
|
88
|
+
service.configure_http_client(
|
89
|
+
proxy: {
|
90
|
+
address: "bogus_address.com",
|
91
|
+
port: 9999,
|
92
|
+
username: "username",
|
93
|
+
password: "password",
|
94
|
+
headers: {
|
95
|
+
bogus_header: true
|
96
|
+
}
|
97
|
+
}
|
98
|
+
)
|
99
|
+
proxy = service.conn.default_options.proxy
|
100
|
+
assert_equal("bogus_address.com", proxy[:proxy_address])
|
101
|
+
assert_equal(9999, proxy[:proxy_port])
|
102
|
+
assert_equal("username", proxy[:proxy_username])
|
103
|
+
assert_equal("password", proxy[:proxy_password])
|
104
|
+
assert_equal({ bogus_header: true }, proxy[:proxy_headers])
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_timeout_per_operation
|
108
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
109
|
+
version: "2018-03-16",
|
110
|
+
username: "username",
|
111
|
+
password: "password"
|
112
|
+
)
|
113
|
+
def service.conn
|
114
|
+
@watson_service.conn
|
115
|
+
end
|
116
|
+
service.configure_http_client(
|
117
|
+
timeout: {
|
118
|
+
per_operation: {
|
119
|
+
read: 5,
|
120
|
+
write: 7,
|
121
|
+
connect: 10
|
122
|
+
}
|
123
|
+
}
|
124
|
+
)
|
125
|
+
timeout_class = service.conn.default_options.timeout_class
|
126
|
+
assert_equal(HTTP::Timeout::PerOperation, timeout_class)
|
127
|
+
|
128
|
+
expected_timeouts = {
|
129
|
+
read_timeout: 5,
|
130
|
+
write_timeout: 7,
|
131
|
+
connect_timeout: 10
|
132
|
+
}
|
133
|
+
timeout = service.conn.default_options.timeout_options
|
134
|
+
assert_equal(expected_timeouts, timeout)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_timeout_global
|
138
|
+
service = IBMWatson::NaturalLanguageUnderstandingV1.new(
|
139
|
+
version: "2018-03-16",
|
140
|
+
username: "username",
|
141
|
+
password: "password"
|
142
|
+
)
|
143
|
+
def service.conn
|
144
|
+
@watson_service.conn
|
145
|
+
end
|
146
|
+
service.configure_http_client(
|
147
|
+
timeout: {
|
148
|
+
global: 20
|
149
|
+
}
|
150
|
+
)
|
151
|
+
timeout_class = service.conn.default_options.timeout_class
|
152
|
+
assert_equal(HTTP::Timeout::Global, timeout_class)
|
153
|
+
|
154
|
+
expected_timeouts = {
|
155
|
+
read_timeout: 0,
|
156
|
+
write_timeout: 20,
|
157
|
+
connect_timeout: 0
|
158
|
+
}
|
159
|
+
timeout = service.conn.default_options.timeout_options
|
160
|
+
assert_equal(expected_timeouts, timeout)
|
161
|
+
end
|
162
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibm_watson
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Nussbaum
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -247,6 +247,7 @@ files:
|
|
247
247
|
- test/integration/test_visual_recognition_v3.rb
|
248
248
|
- test/test_helper.rb
|
249
249
|
- test/unit/test_assistant_v1.rb
|
250
|
+
- test/unit/test_configure_http_client.rb
|
250
251
|
- test/unit/test_discovery_v1.rb
|
251
252
|
- test/unit/test_iam_token_manager.rb
|
252
253
|
- test/unit/test_language_translator_v3.rb
|