Skip to content

Commit 9ccee18

Browse files
author
Chris Park
committed
Merge branch 'develop'
2 parents 1e7cedb + 04350a9 commit 9ccee18

20 files changed

Lines changed: 155 additions & 126 deletions

examples/text_embedding.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
require 'rosette_api'
2+
3+
api_key, url = ARGV
4+
5+
if !url
6+
rosette_api = RosetteAPI.new(api_key)
7+
else
8+
rosette_api = RosetteAPI.new(api_key, url)
9+
end
10+
11+
embeddings_data = 'Cambridge, Massachusetts'
12+
params = DocumentParameters.new(content: embeddings_data)
13+
response = rosette_api.get_text_embedding(params)
14+
puts JSON.pretty_generate(response)

lib/request_builder.rb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,24 @@
99
class RequestBuilder
1010
# Alternate Rosette API URL
1111
attr_reader :alternate_url
12+
# Rosette API HTTP client
13+
attr_reader :http_client
1214
# Parameters to build the body of the request from
1315
attr_accessor :params
1416
# Rosette API key
1517
attr_accessor :user_key
1618
# Rosette API binding version
1719
attr_accessor :binding_version
1820

19-
def initialize(user_key, alternate_url, params = {}, binding_version) #:notnew:
21+
22+
def initialize(user_key, alternate_url, http_client, params = {}, binding_version) #:notnew:
2023
@user_key = user_key
2124
@alternate_url = alternate_url
25+
@http_client = http_client
2226
@params = params
2327
@retries = 5
2428
@binding_version = binding_version
29+
2530
end
2631

2732
# Prepares a plain POST request for Rosette API.
@@ -34,8 +39,6 @@ def initialize(user_key, alternate_url, params = {}, binding_version) #:notnew:
3439
def prepare_plain_request(params)
3540
begin
3641
uri = URI.parse @alternate_url
37-
http = Net::HTTP.new uri.host, uri.port
38-
http.use_ssl = uri.scheme == 'https'
3942
request = Net::HTTP::Post.new uri.request_uri
4043
rescue
4144
raise RosetteAPIError.new 'connectionError', 'Failed to establish connection with Rosette API server.'
@@ -60,7 +63,7 @@ def prepare_plain_request(params)
6063
request['X-RosetteAPI-Binding-Version'] = @binding_version
6164
request.body = params.to_json
6265

63-
[http, request]
66+
[@http_client, request]
6467
end
6568

6669
# Prepares a multipart/form-data POST request for Rosette API.
@@ -99,8 +102,6 @@ def prepare_multipart_request(params)
99102
# Create the HTTP objects
100103
begin
101104
uri = URI.parse @alternate_url
102-
http = Net::HTTP.new uri.host, uri.port
103-
http.use_ssl = uri.scheme == 'https'
104105
request = Net::HTTP::Post.new uri.request_uri
105106
rescue
106107
raise RosetteAPIError.new 'connectionError', 'Failed to establish connection with Rosette API server.'
@@ -125,7 +126,7 @@ def prepare_multipart_request(params)
125126
request.add_field 'X-RosetteAPI-Binding-Version', @binding_version
126127
request.body = post_body.join
127128

128-
[http, request]
129+
[@http_client, request]
129130
end
130131

131132
# Sends a GET request to Rosette API.
@@ -134,16 +135,14 @@ def prepare_multipart_request(params)
134135
def send_get_request
135136
begin
136137
uri = URI.parse @alternate_url
137-
http = Net::HTTP.new uri.host, uri.port
138-
http.use_ssl = uri.scheme == 'https'
139138

140139
request = Net::HTTP::Get.new uri.request_uri
141140
rescue
142141
raise RosetteAPIError.new 'connectionError', 'Failed to establish connection with Rosette API server.'
143142
end
144143
request['X-RosetteAPI-Key'] = @user_key
145144

146-
self.get_response http, request
145+
self.get_response @http_client, request
147146
end
148147

149148
# Sends a POST request to Rosette API.

lib/rosette_api.rb

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
# This class allows you to access all Rosette API endpoints.
1010
class RosetteAPI
1111
# Version of Ruby binding
12-
BINDING_VERSION = '1.2.0'
12+
BINDING_VERSION = '1.3.0'
1313
# Rosette API language endpoint
1414
LANGUAGE_ENDPOINT = '/language'
1515
# Rosette API morphology endpoint
@@ -34,6 +34,8 @@ class RosetteAPI
3434
INFO = '/info'
3535
# Rosette API ping endpoint
3636
PING = '/ping'
37+
# Text Embedding endpoint
38+
TEXT_EMBEDDING = '/text-embedding'
3739

3840
# Rosette API key
3941
attr_accessor :user_key
@@ -49,6 +51,10 @@ def initialize(user_key, alternate_url = 'https://api.rosette.com/rest/v1') #:no
4951
if @alternate_url.to_s.end_with?('/')
5052
@alternate_url = alternate_url.to_s.slice(0..-2)
5153
end
54+
55+
uri = URI.parse alternate_url
56+
@http_client = Net::HTTP.new uri.host, uri.port
57+
@http_client.use_ssl = uri.scheme == 'https'
5258
end
5359

5460
# Identifies in which language(s) the input is written.
@@ -63,7 +69,7 @@ def get_language(params)
6369

6470
params = params.load_params
6571

66-
RequestBuilder.new(@user_key, @alternate_url + LANGUAGE_ENDPOINT, params, BINDING_VERSION)
72+
RequestBuilder.new(@user_key, @alternate_url + LANGUAGE_ENDPOINT, @http_client, params, BINDING_VERSION)
6773
.send_post_request
6874
end
6975

@@ -81,7 +87,7 @@ def get_morphology_complete(params)
8187

8288
params = params.load_params
8389

84-
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/complete', params, BINDING_VERSION)
90+
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/complete', @http_client, params, BINDING_VERSION)
8591
.send_post_request
8692
end
8793

@@ -98,7 +104,7 @@ def get_compound_components(params)
98104

99105
params = params.load_params
100106

101-
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/compound-components', params, BINDING_VERSION)
107+
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/compound-components', @http_client, params, BINDING_VERSION)
102108
.send_post_request
103109
end
104110

@@ -115,7 +121,7 @@ def get_han_readings(params)
115121

116122
params = params.load_params
117123

118-
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/han-readings', params, BINDING_VERSION)
124+
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/han-readings', @http_client, params, BINDING_VERSION)
119125
.send_post_request
120126
end
121127

@@ -131,7 +137,7 @@ def get_lemmas(params)
131137

132138
params = params.load_params
133139

134-
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/lemmas', params, BINDING_VERSION)
140+
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/lemmas', @http_client, params, BINDING_VERSION)
135141
.send_post_request
136142
end
137143

@@ -148,7 +154,7 @@ def get_parts_of_speech(params)
148154

149155
params = params.load_params
150156

151-
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/parts-of-speech', params, BINDING_VERSION)
157+
RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/parts-of-speech', @http_client, params, BINDING_VERSION)
152158
.send_post_request
153159
end
154160

@@ -168,7 +174,7 @@ def get_entities(params, resolve_entities = false)
168174
params = params.load_params
169175

170176
endpoint = resolve_entities ? (ENTITIES_ENDPOINT + '/linked') : ENTITIES_ENDPOINT
171-
RequestBuilder.new(@user_key, @alternate_url + endpoint, params, BINDING_VERSION)
177+
RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client, params, BINDING_VERSION)
172178
.send_post_request
173179
end
174180

@@ -200,7 +206,7 @@ def get_categories(params)
200206

201207
params = params.load_params
202208

203-
RequestBuilder.new(@user_key, @alternate_url + CATEGORIES_ENDPOINT, params, BINDING_VERSION)
209+
RequestBuilder.new(@user_key, @alternate_url + CATEGORIES_ENDPOINT, @http_client, params, BINDING_VERSION)
204210
.send_post_request
205211
end
206212

@@ -216,7 +222,7 @@ def get_relationships(params)
216222

217223
params = params.load_params
218224

219-
RequestBuilder.new(@user_key, @alternate_url + RELATIONSHIPS_ENDPOINT, params, BINDING_VERSION)
225+
RequestBuilder.new(@user_key, @alternate_url + RELATIONSHIPS_ENDPOINT, @http_client, params, BINDING_VERSION)
220226
.send_post_request
221227
end
222228

@@ -232,7 +238,7 @@ def get_sentiment(params)
232238

233239
params = params.load_params
234240

235-
RequestBuilder.new(@user_key, @alternate_url + SENTIMENT_ENDPOINT, params, BINDING_VERSION)
241+
RequestBuilder.new(@user_key, @alternate_url + SENTIMENT_ENDPOINT, @http_client, params, BINDING_VERSION)
236242
.send_post_request
237243
end
238244

@@ -248,7 +254,7 @@ def name_translation(params)
248254

249255
params = params.load_params
250256

251-
RequestBuilder.new(@user_key, @alternate_url + NAME_TRANSLATION_ENDPOINT, params, BINDING_VERSION)
257+
RequestBuilder.new(@user_key, @alternate_url + NAME_TRANSLATION_ENDPOINT, @http_client, params, BINDING_VERSION)
252258
.send_post_request
253259
end
254260

@@ -265,7 +271,7 @@ def name_similarity(params)
265271

266272
params = params.load_params
267273

268-
RequestBuilder.new(@user_key, @alternate_url + NAME_SIMILARITY_ENDPOINT, params, BINDING_VERSION)
274+
RequestBuilder.new(@user_key, @alternate_url + NAME_SIMILARITY_ENDPOINT, @http_client, params, BINDING_VERSION)
269275
.send_post_request
270276
end
271277

@@ -281,7 +287,7 @@ def get_tokens(params)
281287

282288
params = params.load_params
283289

284-
RequestBuilder.new(@user_key, @alternate_url + TOKENS_ENDPOINT, params, BINDING_VERSION)
290+
RequestBuilder.new(@user_key, @alternate_url + TOKENS_ENDPOINT, @http_client, params, BINDING_VERSION)
285291
.send_post_request
286292
end
287293

@@ -297,21 +303,37 @@ def get_sentences(params)
297303

298304
params = params.load_params
299305

300-
RequestBuilder.new(@user_key, @alternate_url + SENTENCES_ENDPOINT, params, BINDING_VERSION)
306+
RequestBuilder.new(@user_key, @alternate_url + SENTENCES_ENDPOINT, @http_client, params, BINDING_VERSION)
307+
.send_post_request
308+
end
309+
#
310+
# Returns the vectors associated with the text
311+
#
312+
# ==== Attributes
313+
#
314+
# * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
315+
#
316+
# Returns list of linguistic sentences of the input.
317+
def get_text_embedding(params)
318+
check_params params
319+
320+
params = params.load_params
321+
322+
RequestBuilder.new(@user_key, @alternate_url + TEXT_EMBEDDING, @http_client, params, BINDING_VERSION)
301323
.send_post_request
302324
end
303325

304326
# Gets information about the Rosette API, returns name, build number
305327
# and build time.
306328
def info
307-
RequestBuilder.new(@user_key, @alternate_url + INFO, BINDING_VERSION)
329+
RequestBuilder.new(@user_key, @alternate_url + INFO, @http_client, BINDING_VERSION)
308330
.send_get_request
309331
end
310332

311333
# Pings the Rosette API for a response indicting that the service is
312334
# available.
313335
def ping
314-
RequestBuilder.new(@user_key, @alternate_url + PING, BINDING_VERSION)
336+
RequestBuilder.new(@user_key, @alternate_url + PING, @http_client, BINDING_VERSION)
315337
.send_get_request
316338
end
317339

mock-data/request/categories.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

mock-data/request/entities.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

mock-data/request/entities_no_qids.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

mock-data/request/language.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

mock-data/request/morphology_complete.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

mock-data/request/morphology_compound_components.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

mock-data/request/morphology_han_readings.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)