ibm_watson 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -2
- data/lib/ibm_watson/assistant_v1.rb +109 -101
- data/lib/ibm_watson/discovery_v1.rb +102 -77
- data/lib/ibm_watson/iam_token_manager.rb +25 -30
- data/lib/ibm_watson/language_translator_v3.rb +8 -77
- data/lib/ibm_watson/natural_language_classifier_v1.rb +11 -77
- data/lib/ibm_watson/natural_language_understanding_v1.rb +20 -82
- data/lib/ibm_watson/personality_insights_v3.rb +5 -77
- data/lib/ibm_watson/speech_to_text_v1.rb +139 -175
- data/lib/ibm_watson/text_to_speech_v1.rb +21 -77
- data/lib/ibm_watson/tone_analyzer_v3.rb +6 -77
- data/lib/ibm_watson/version.rb +1 -1
- data/lib/ibm_watson/visual_recognition_v3.rb +10 -76
- data/lib/ibm_watson/watson_service.rb +23 -17
- data/lib/ibm_watson/websocket/speech_to_text_websocket_listener.rb +1 -0
- data/test/integration/test_iam_assistant_v1.rb +3 -5
- data/test/unit/test_assistant_v1.rb +31 -0
- data/test/unit/test_configure_http_client.rb +0 -18
- data/test/unit/test_iam_token_manager.rb +21 -11
- data/test/unit/test_visual_recognition_v3.rb +1 -2
- metadata +2 -2
@@ -5,16 +5,16 @@ require("json")
|
|
5
5
|
require("rbconfig")
|
6
6
|
require_relative("./version.rb")
|
7
7
|
|
8
|
-
DEFAULT_IAM_URL = "https://iam.bluemix.net/identity/token"
|
9
|
-
CONTENT_TYPE = "application/x-www-form-urlencoded"
|
10
|
-
ACCEPT = "application/json"
|
11
|
-
DEFAULT_AUTHORIZATION = "Basic Yng6Yng="
|
12
|
-
REQUEST_TOKEN_GRANT_TYPE = "urn:ibm:params:oauth:grant-type:apikey"
|
13
|
-
REQUEST_TOKEN_RESPONSE_TYPE = "cloud_iam"
|
14
|
-
REFRESH_TOKEN_GRANT_TYPE = "refresh_token"
|
15
|
-
|
16
8
|
# Class to manage IAM Token Authentication
|
17
9
|
class IAMTokenManager
|
10
|
+
DEFAULT_IAM_URL = "https://iam.bluemix.net/identity/token"
|
11
|
+
CONTENT_TYPE = "application/x-www-form-urlencoded"
|
12
|
+
ACCEPT = "application/json"
|
13
|
+
DEFAULT_AUTHORIZATION = "Basic Yng6Yng="
|
14
|
+
REQUEST_TOKEN_GRANT_TYPE = "urn:ibm:params:oauth:grant-type:apikey"
|
15
|
+
REQUEST_TOKEN_RESPONSE_TYPE = "cloud_iam"
|
16
|
+
REFRESH_TOKEN_GRANT_TYPE = "refresh_token"
|
17
|
+
|
18
18
|
attr_accessor :token_info, :user_access_token
|
19
19
|
def initialize(iam_apikey: nil, iam_access_token: nil, iam_url: nil)
|
20
20
|
@iam_apikey = iam_apikey
|
@@ -45,6 +45,7 @@ class IAMTokenManager
|
|
45
45
|
)
|
46
46
|
end
|
47
47
|
return JSON.parse(response.body.to_s) if (200..299).cover?(response.code)
|
48
|
+
|
48
49
|
require_relative("./watson_api_exception.rb")
|
49
50
|
raise WatsonApiException.new(response: response)
|
50
51
|
end
|
@@ -54,17 +55,18 @@ class IAMTokenManager
|
|
54
55
|
# 2. If this class is managing tokens and does not yet have one, make a request for one
|
55
56
|
# 3. If this class is managing tokens and the token has expired refresh it. In case the refresh token is expired, get a new one
|
56
57
|
# If this class is managing tokens and has a valid token stored, send it
|
57
|
-
def
|
58
|
+
def token
|
58
59
|
return @user_access_token unless @user_access_token.nil? || (@user_access_token.respond_to?(:empty?) && @user_access_token.empty?)
|
60
|
+
|
59
61
|
if @token_info.all? { |_k, v| v.nil? }
|
60
|
-
token_info =
|
61
|
-
|
62
|
+
token_info = request_token
|
63
|
+
save_token_info(
|
62
64
|
token_info: token_info
|
63
65
|
)
|
64
66
|
return @token_info["access_token"]
|
65
|
-
elsif
|
66
|
-
token_info =
|
67
|
-
|
67
|
+
elsif token_expired?
|
68
|
+
token_info = refresh_token_expired? ? request_token : refresh_token
|
69
|
+
save_token_info(
|
68
70
|
token_info: token_info
|
69
71
|
)
|
70
72
|
return @token_info["access_token"]
|
@@ -73,8 +75,10 @@ class IAMTokenManager
|
|
73
75
|
end
|
74
76
|
end
|
75
77
|
|
78
|
+
private
|
79
|
+
|
76
80
|
# Request an IAM token using an API key
|
77
|
-
def
|
81
|
+
def request_token
|
78
82
|
headers = {
|
79
83
|
"Content-Type" => CONTENT_TYPE,
|
80
84
|
"Authorization" => DEFAULT_AUTHORIZATION,
|
@@ -95,7 +99,7 @@ class IAMTokenManager
|
|
95
99
|
end
|
96
100
|
|
97
101
|
# Refresh an IAM token using a refresh token
|
98
|
-
def
|
102
|
+
def refresh_token
|
99
103
|
headers = {
|
100
104
|
"Content-Type" => CONTENT_TYPE,
|
101
105
|
"Authorization" => DEFAULT_AUTHORIZATION,
|
@@ -114,23 +118,13 @@ class IAMTokenManager
|
|
114
118
|
response
|
115
119
|
end
|
116
120
|
|
117
|
-
# Set a self-managed IAM access token.
|
118
|
-
# The access token should be valid and not yet expired.
|
119
|
-
def _access_token(iam_access_token:)
|
120
|
-
@user_access_token = iam_access_token
|
121
|
-
end
|
122
|
-
|
123
|
-
# Set the IAM api key
|
124
|
-
def _iam_apikey(iam_apikey:)
|
125
|
-
@iam_apikey = iam_apikey
|
126
|
-
end
|
127
|
-
|
128
121
|
# Check if currently stored token is expired.
|
129
122
|
# Using a buffer to prevent the edge case of the
|
130
123
|
# token expiring before the request could be made.
|
131
124
|
# The buffer will be a fraction of the total TTL. Using 80%.
|
132
|
-
def
|
125
|
+
def token_expired?
|
133
126
|
return true if @token_info["expiration"].nil? || @token_info["expires_in"].nil?
|
127
|
+
|
134
128
|
fraction_of_ttl = 0.8
|
135
129
|
time_to_live = @token_info["expires_in"].nil? ? 0 : @token_info["expires_in"]
|
136
130
|
expire_time = @token_info["expiration"].nil? ? 0 : @token_info["expiration"]
|
@@ -142,8 +136,9 @@ class IAMTokenManager
|
|
142
136
|
# Used as a fail-safe to prevent the condition of a refresh token expiring,
|
143
137
|
# which could happen after around 30 days. This function will return true
|
144
138
|
# if it has been at least 7 days and 1 hour since the last token was set
|
145
|
-
def
|
139
|
+
def refresh_token_expired?
|
146
140
|
return true if @token_info["expiration"].nil?
|
141
|
+
|
147
142
|
seven_days = 7 * 24 * 3600
|
148
143
|
current_time = Time.now.to_i
|
149
144
|
new_token_time = @token_info["expiration"] + seven_days
|
@@ -151,7 +146,7 @@ class IAMTokenManager
|
|
151
146
|
end
|
152
147
|
|
153
148
|
# Save the response from the IAM service request to the object's state
|
154
|
-
def
|
149
|
+
def save_token_info(token_info:)
|
155
150
|
@token_info = token_info
|
156
151
|
end
|
157
152
|
end
|
@@ -31,7 +31,7 @@ require_relative "./watson_service"
|
|
31
31
|
module IBMWatson
|
32
32
|
##
|
33
33
|
# The Language Translator V3 service.
|
34
|
-
class LanguageTranslatorV3
|
34
|
+
class LanguageTranslatorV3 < WatsonService
|
35
35
|
include Concurrent::Async
|
36
36
|
##
|
37
37
|
# @!method initialize(args)
|
@@ -72,7 +72,6 @@ module IBMWatson
|
|
72
72
|
# 'https://iam.ng.bluemix.net/identity/token'.
|
73
73
|
def initialize(args = {})
|
74
74
|
@__async_initialized__ = false
|
75
|
-
super()
|
76
75
|
defaults = {}
|
77
76
|
defaults[:version] = nil
|
78
77
|
defaults[:url] = "https://gateway.watsonplatform.net/language-translator/api"
|
@@ -82,84 +81,11 @@ module IBMWatson
|
|
82
81
|
defaults[:iam_access_token] = nil
|
83
82
|
defaults[:iam_url] = nil
|
84
83
|
args = defaults.merge(args)
|
85
|
-
|
86
|
-
|
87
|
-
url: args[:url],
|
88
|
-
username: args[:username],
|
89
|
-
password: args[:password],
|
90
|
-
iam_apikey: args[:iam_apikey],
|
91
|
-
iam_access_token: args[:iam_access_token],
|
92
|
-
iam_url: args[:iam_url],
|
93
|
-
use_vcap_services: true
|
94
|
-
)
|
84
|
+
args[:vcap_services_name] = "language_translator"
|
85
|
+
super
|
95
86
|
@version = args[:version]
|
96
87
|
end
|
97
88
|
|
98
|
-
# :nocov:
|
99
|
-
def add_default_headers(headers: {})
|
100
|
-
@watson_service.add_default_headers(headers: headers)
|
101
|
-
end
|
102
|
-
|
103
|
-
def _iam_access_token(iam_access_token:)
|
104
|
-
@watson_service._iam_access_token(iam_access_token: iam_access_token)
|
105
|
-
end
|
106
|
-
|
107
|
-
def _iam_apikey(iam_apikey:)
|
108
|
-
@watson_service._iam_apikey(iam_apikey: iam_apikey)
|
109
|
-
end
|
110
|
-
|
111
|
-
# @return [DetailedResponse]
|
112
|
-
def request(args)
|
113
|
-
@watson_service.request(args)
|
114
|
-
end
|
115
|
-
|
116
|
-
# @note Chainable
|
117
|
-
# @param headers [Hash] Custom headers to be sent with the request
|
118
|
-
# @return [self]
|
119
|
-
def headers(headers)
|
120
|
-
@watson_service.headers(headers)
|
121
|
-
self
|
122
|
-
end
|
123
|
-
|
124
|
-
def password=(password)
|
125
|
-
@watson_service.password = password
|
126
|
-
end
|
127
|
-
|
128
|
-
def password
|
129
|
-
@watson_service.password
|
130
|
-
end
|
131
|
-
|
132
|
-
def username=(username)
|
133
|
-
@watson_service.username = username
|
134
|
-
end
|
135
|
-
|
136
|
-
def username
|
137
|
-
@watson_service.username
|
138
|
-
end
|
139
|
-
|
140
|
-
def url=(url)
|
141
|
-
@watson_service.url = url
|
142
|
-
end
|
143
|
-
|
144
|
-
def url
|
145
|
-
@watson_service.url
|
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
|
162
|
-
# :nocov:
|
163
89
|
#########################
|
164
90
|
# Translation
|
165
91
|
#########################
|
@@ -182,6 +108,7 @@ module IBMWatson
|
|
182
108
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
183
109
|
def translate(text:, model_id: nil, source: nil, target: nil)
|
184
110
|
raise ArgumentError("text must be provided") if text.nil?
|
111
|
+
|
185
112
|
headers = {
|
186
113
|
}
|
187
114
|
params = {
|
@@ -239,6 +166,7 @@ module IBMWatson
|
|
239
166
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
240
167
|
def identify(text:)
|
241
168
|
raise ArgumentError("text must be provided") if text.nil?
|
169
|
+
|
242
170
|
headers = {
|
243
171
|
}
|
244
172
|
params = {
|
@@ -330,6 +258,7 @@ module IBMWatson
|
|
330
258
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
331
259
|
def create_model(base_model_id:, name: nil, forced_glossary: nil, parallel_corpus: nil, forced_glossary_filename: nil, parallel_corpus_filename: nil)
|
332
260
|
raise ArgumentError("base_model_id must be provided") if base_model_id.nil?
|
261
|
+
|
333
262
|
headers = {
|
334
263
|
}
|
335
264
|
params = {
|
@@ -382,6 +311,7 @@ module IBMWatson
|
|
382
311
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
383
312
|
def delete_model(model_id:)
|
384
313
|
raise ArgumentError("model_id must be provided") if model_id.nil?
|
314
|
+
|
385
315
|
headers = {
|
386
316
|
}
|
387
317
|
params = {
|
@@ -408,6 +338,7 @@ module IBMWatson
|
|
408
338
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
409
339
|
def get_model(model_id:)
|
410
340
|
raise ArgumentError("model_id must be provided") if model_id.nil?
|
341
|
+
|
411
342
|
headers = {
|
412
343
|
}
|
413
344
|
params = {
|
@@ -30,7 +30,7 @@ require_relative "./watson_service"
|
|
30
30
|
module IBMWatson
|
31
31
|
##
|
32
32
|
# The Natural Language Classifier V1 service.
|
33
|
-
class NaturalLanguageClassifierV1
|
33
|
+
class NaturalLanguageClassifierV1 < WatsonService
|
34
34
|
include Concurrent::Async
|
35
35
|
##
|
36
36
|
# @!method initialize(args)
|
@@ -61,7 +61,6 @@ module IBMWatson
|
|
61
61
|
# 'https://iam.ng.bluemix.net/identity/token'.
|
62
62
|
def initialize(args = {})
|
63
63
|
@__async_initialized__ = false
|
64
|
-
super()
|
65
64
|
defaults = {}
|
66
65
|
defaults[:url] = "https://gateway.watsonplatform.net/natural-language-classifier/api"
|
67
66
|
defaults[:username] = nil
|
@@ -70,83 +69,10 @@ module IBMWatson
|
|
70
69
|
defaults[:iam_access_token] = nil
|
71
70
|
defaults[:iam_url] = nil
|
72
71
|
args = defaults.merge(args)
|
73
|
-
|
74
|
-
|
75
|
-
url: args[:url],
|
76
|
-
username: args[:username],
|
77
|
-
password: args[:password],
|
78
|
-
iam_apikey: args[:iam_apikey],
|
79
|
-
iam_access_token: args[:iam_access_token],
|
80
|
-
iam_url: args[:iam_url],
|
81
|
-
use_vcap_services: true
|
82
|
-
)
|
83
|
-
end
|
84
|
-
|
85
|
-
# :nocov:
|
86
|
-
def add_default_headers(headers: {})
|
87
|
-
@watson_service.add_default_headers(headers: headers)
|
88
|
-
end
|
89
|
-
|
90
|
-
def _iam_access_token(iam_access_token:)
|
91
|
-
@watson_service._iam_access_token(iam_access_token: iam_access_token)
|
92
|
-
end
|
93
|
-
|
94
|
-
def _iam_apikey(iam_apikey:)
|
95
|
-
@watson_service._iam_apikey(iam_apikey: iam_apikey)
|
96
|
-
end
|
97
|
-
|
98
|
-
# @return [DetailedResponse]
|
99
|
-
def request(args)
|
100
|
-
@watson_service.request(args)
|
101
|
-
end
|
102
|
-
|
103
|
-
# @note Chainable
|
104
|
-
# @param headers [Hash] Custom headers to be sent with the request
|
105
|
-
# @return [self]
|
106
|
-
def headers(headers)
|
107
|
-
@watson_service.headers(headers)
|
108
|
-
self
|
109
|
-
end
|
110
|
-
|
111
|
-
def password=(password)
|
112
|
-
@watson_service.password = password
|
113
|
-
end
|
114
|
-
|
115
|
-
def password
|
116
|
-
@watson_service.password
|
117
|
-
end
|
118
|
-
|
119
|
-
def username=(username)
|
120
|
-
@watson_service.username = username
|
121
|
-
end
|
122
|
-
|
123
|
-
def username
|
124
|
-
@watson_service.username
|
125
|
-
end
|
126
|
-
|
127
|
-
def url=(url)
|
128
|
-
@watson_service.url = url
|
129
|
-
end
|
130
|
-
|
131
|
-
def url
|
132
|
-
@watson_service.url
|
72
|
+
args[:vcap_services_name] = "natural_language_classifier"
|
73
|
+
super
|
133
74
|
end
|
134
75
|
|
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
|
149
|
-
# :nocov:
|
150
76
|
#########################
|
151
77
|
# Classify text
|
152
78
|
#########################
|
@@ -161,7 +87,9 @@ module IBMWatson
|
|
161
87
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
162
88
|
def classify(classifier_id:, text:)
|
163
89
|
raise ArgumentError("classifier_id must be provided") if classifier_id.nil?
|
90
|
+
|
164
91
|
raise ArgumentError("text must be provided") if text.nil?
|
92
|
+
|
165
93
|
headers = {
|
166
94
|
}
|
167
95
|
data = {
|
@@ -190,7 +118,9 @@ module IBMWatson
|
|
190
118
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
191
119
|
def classify_collection(classifier_id:, collection:)
|
192
120
|
raise ArgumentError("classifier_id must be provided") if classifier_id.nil?
|
121
|
+
|
193
122
|
raise ArgumentError("collection must be provided") if collection.nil?
|
123
|
+
|
194
124
|
headers = {
|
195
125
|
}
|
196
126
|
data = {
|
@@ -230,7 +160,9 @@ module IBMWatson
|
|
230
160
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
231
161
|
def create_classifier(metadata:, training_data:, metadata_filename: nil, training_data_filename: nil)
|
232
162
|
raise ArgumentError("metadata must be provided") if metadata.nil?
|
163
|
+
|
233
164
|
raise ArgumentError("training_data must be provided") if training_data.nil?
|
165
|
+
|
234
166
|
headers = {
|
235
167
|
}
|
236
168
|
mime_type = "application/json"
|
@@ -291,6 +223,7 @@ module IBMWatson
|
|
291
223
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
292
224
|
def get_classifier(classifier_id:)
|
293
225
|
raise ArgumentError("classifier_id must be provided") if classifier_id.nil?
|
226
|
+
|
294
227
|
headers = {
|
295
228
|
}
|
296
229
|
method_url = "/v1/classifiers/%s" % [ERB::Util.url_encode(classifier_id)]
|
@@ -310,6 +243,7 @@ module IBMWatson
|
|
310
243
|
# @return [nil]
|
311
244
|
def delete_classifier(classifier_id:)
|
312
245
|
raise ArgumentError("classifier_id must be provided") if classifier_id.nil?
|
246
|
+
|
313
247
|
headers = {
|
314
248
|
}
|
315
249
|
method_url = "/v1/classifiers/%s" % [ERB::Util.url_encode(classifier_id)]
|
@@ -35,7 +35,7 @@ require_relative "./watson_service"
|
|
35
35
|
module IBMWatson
|
36
36
|
##
|
37
37
|
# The Natural Language Understanding V1 service.
|
38
|
-
class NaturalLanguageUnderstandingV1
|
38
|
+
class NaturalLanguageUnderstandingV1 < WatsonService
|
39
39
|
include Concurrent::Async
|
40
40
|
##
|
41
41
|
# @!method initialize(args)
|
@@ -76,7 +76,6 @@ module IBMWatson
|
|
76
76
|
# 'https://iam.ng.bluemix.net/identity/token'.
|
77
77
|
def initialize(args = {})
|
78
78
|
@__async_initialized__ = false
|
79
|
-
super()
|
80
79
|
defaults = {}
|
81
80
|
defaults[:version] = nil
|
82
81
|
defaults[:url] = "https://gateway.watsonplatform.net/natural-language-understanding/api"
|
@@ -86,84 +85,11 @@ module IBMWatson
|
|
86
85
|
defaults[:iam_access_token] = nil
|
87
86
|
defaults[:iam_url] = nil
|
88
87
|
args = defaults.merge(args)
|
89
|
-
|
90
|
-
|
91
|
-
url: args[:url],
|
92
|
-
username: args[:username],
|
93
|
-
password: args[:password],
|
94
|
-
iam_apikey: args[:iam_apikey],
|
95
|
-
iam_access_token: args[:iam_access_token],
|
96
|
-
iam_url: args[:iam_url],
|
97
|
-
use_vcap_services: true
|
98
|
-
)
|
88
|
+
args[:vcap_services_name] = "natural-language-understanding"
|
89
|
+
super
|
99
90
|
@version = args[:version]
|
100
91
|
end
|
101
92
|
|
102
|
-
# :nocov:
|
103
|
-
def add_default_headers(headers: {})
|
104
|
-
@watson_service.add_default_headers(headers: headers)
|
105
|
-
end
|
106
|
-
|
107
|
-
def _iam_access_token(iam_access_token:)
|
108
|
-
@watson_service._iam_access_token(iam_access_token: iam_access_token)
|
109
|
-
end
|
110
|
-
|
111
|
-
def _iam_apikey(iam_apikey:)
|
112
|
-
@watson_service._iam_apikey(iam_apikey: iam_apikey)
|
113
|
-
end
|
114
|
-
|
115
|
-
# @return [DetailedResponse]
|
116
|
-
def request(args)
|
117
|
-
@watson_service.request(args)
|
118
|
-
end
|
119
|
-
|
120
|
-
# @note Chainable
|
121
|
-
# @param headers [Hash] Custom headers to be sent with the request
|
122
|
-
# @return [self]
|
123
|
-
def headers(headers)
|
124
|
-
@watson_service.headers(headers)
|
125
|
-
self
|
126
|
-
end
|
127
|
-
|
128
|
-
def password=(password)
|
129
|
-
@watson_service.password = password
|
130
|
-
end
|
131
|
-
|
132
|
-
def password
|
133
|
-
@watson_service.password
|
134
|
-
end
|
135
|
-
|
136
|
-
def username=(username)
|
137
|
-
@watson_service.username = username
|
138
|
-
end
|
139
|
-
|
140
|
-
def username
|
141
|
-
@watson_service.username
|
142
|
-
end
|
143
|
-
|
144
|
-
def url=(url)
|
145
|
-
@watson_service.url = url
|
146
|
-
end
|
147
|
-
|
148
|
-
def url
|
149
|
-
@watson_service.url
|
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
|
166
|
-
# :nocov:
|
167
93
|
#########################
|
168
94
|
# Analyze
|
169
95
|
#########################
|
@@ -218,18 +144,29 @@ module IBMWatson
|
|
218
144
|
# \"Leonardo DiCaprio won an Oscar\" returns \"/art and entertainment/movies and
|
219
145
|
# tv/movies\" as the most confident classification.
|
220
146
|
# @param features [Features] Specific features to analyze the document for.
|
221
|
-
# @param text [String] The plain text to analyze.
|
222
|
-
#
|
223
|
-
# @param
|
147
|
+
# @param text [String] The plain text to analyze. One of the `text`, `html`, or `url` parameters is
|
148
|
+
# required.
|
149
|
+
# @param html [String] The HTML file to analyze. One of the `text`, `html`, or `url` parameters is
|
150
|
+
# required.
|
151
|
+
# @param url [String] The web page to analyze. One of the `text`, `html`, or `url` parameters is
|
152
|
+
# required.
|
224
153
|
# @param clean [Boolean] Remove website elements, such as links, ads, etc.
|
225
|
-
# @param xpath [String] XPath query
|
154
|
+
# @param xpath [String] An [XPath query](https://www.w3.org/TR/xpath/) to perform on `html` or `url`
|
155
|
+
# input. Results of the query will be appended to the cleaned webpage text before it
|
156
|
+
# is analyzed. To analyze only the results of the XPath query, set the `clean`
|
157
|
+
# parameter to `false`.
|
226
158
|
# @param fallback_to_raw [Boolean] Whether to use raw HTML content if text cleaning fails.
|
227
159
|
# @param return_analyzed_text [Boolean] Whether or not to return the analyzed text.
|
228
|
-
# @param language [String] ISO 639-1 code
|
160
|
+
# @param language [String] ISO 639-1 code that specifies the language of your text. This overrides automatic
|
161
|
+
# language detection. Language support differs depending on the features you include
|
162
|
+
# in your analysis. See [Language
|
163
|
+
# support](https://www.bluemix.net/docs/services/natural-language-understanding/language-support.html)
|
164
|
+
# for more information.
|
229
165
|
# @param limit_text_characters [Fixnum] Sets the maximum number of characters that are processed by the service.
|
230
166
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
231
167
|
def analyze(features:, text: nil, html: nil, url: nil, clean: nil, xpath: nil, fallback_to_raw: nil, return_analyzed_text: nil, language: nil, limit_text_characters: nil)
|
232
168
|
raise ArgumentError("features must be provided") if features.nil?
|
169
|
+
|
233
170
|
headers = {
|
234
171
|
}
|
235
172
|
params = {
|
@@ -294,6 +231,7 @@ module IBMWatson
|
|
294
231
|
# @return [DetailedResponse] A `DetailedResponse` object representing the response.
|
295
232
|
def delete_model(model_id:)
|
296
233
|
raise ArgumentError("model_id must be provided") if model_id.nil?
|
234
|
+
|
297
235
|
headers = {
|
298
236
|
}
|
299
237
|
params = {
|