rosette_api 1.12.1 → 1.14.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +13 -0
  3. data/README.md +38 -0
  4. data/examples/README.md +36 -0
  5. data/examples/address_similarity.rb +35 -0
  6. data/examples/categories.rb +24 -0
  7. data/examples/entities.rb +31 -0
  8. data/examples/info.rb +20 -0
  9. data/examples/language.rb +23 -0
  10. data/examples/language_multilingual.rb +33 -0
  11. data/examples/morphology_complete.rb +23 -0
  12. data/examples/morphology_compound_components.rb +24 -0
  13. data/examples/morphology_han_readings.rb +22 -0
  14. data/examples/morphology_lemmas.rb +24 -0
  15. data/examples/morphology_parts_of_speech.rb +24 -0
  16. data/examples/name_deduplication.rb +27 -0
  17. data/examples/name_similarity.rb +28 -0
  18. data/examples/name_translation.rb +26 -0
  19. data/examples/ping.rb +20 -0
  20. data/examples/relationships.rb +31 -0
  21. data/examples/semantic_vectors.rb +22 -0
  22. data/examples/sentences.rb +28 -0
  23. data/examples/sentiment.rb +32 -0
  24. data/examples/similar_terms.rb +23 -0
  25. data/examples/syntax_dependencies.rb +25 -0
  26. data/examples/tokens.rb +22 -0
  27. data/examples/topics.rb +29 -0
  28. data/examples/transliteration.rb +25 -0
  29. data/lib/address_parameter.rb +117 -0
  30. data/lib/address_similarity_parameters.rb +49 -0
  31. data/lib/bad_request_error.rb +2 -0
  32. data/lib/bad_request_format_error.rb +2 -0
  33. data/lib/document_parameters.rb +20 -11
  34. data/lib/name_deduplication_parameters.rb +15 -7
  35. data/lib/name_parameter.rb +6 -3
  36. data/lib/name_similarity_parameters.rb +14 -6
  37. data/lib/name_translation_parameters.rb +12 -6
  38. data/lib/request_builder.rb +43 -18
  39. data/lib/rosette_api.rb +156 -71
  40. data/lib/rosette_api_error.rb +3 -1
  41. metadata +43 -13
  42. data/.rubocop.yml +0 -312
  43. data/tests/tests_spec.rb +0 -611
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'rosette_api_error'
2
4
 
3
5
  # This class represents Rosette API errors with badRequest status_code.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'rosette_api_error'
2
4
 
3
5
  # This class represents Rosette API errors with badRequestFormat status_code.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'bad_request_format_error'
2
4
 
3
5
  # This class encapsulates parameters that will be used by most of the endpoints
@@ -5,9 +7,11 @@ require_relative 'bad_request_format_error'
5
7
  class DocumentParameters
6
8
  # Content to be analyzed (required if no content_uri and file_path)
7
9
  attr_accessor :content
8
- # URL to retrieve content from and analyze (required if no content and file_path)
10
+ # URL to retrieve content from and analyze (required if no content and
11
+ # file_path)
9
12
  attr_accessor :content_uri
10
- # File path of the file to be analyzed (required if no content and content_uri)
13
+ # File path of the file to be analyzed (required if no content and
14
+ # content_uri)
11
15
  attr_accessor :file_path
12
16
  # genre to categorize the input data
13
17
  attr_accessor :genre
@@ -40,15 +44,19 @@ class DocumentParameters
40
44
  # Validates the parameters by checking if there are multiple content sources
41
45
  # set or no content provided at all.
42
46
  def validate_params
47
+ content_msg = 'The format of the request is invalid: multiple content ' \
48
+ 'sources; must be one of an attachment, an inline "content" field, or ' \
49
+ 'an external "contentUri"'
50
+ no_content_msg = 'The format of the request is invalid: no content ' \
51
+ 'provided; must be one of an attachment, an inline "content" field, or ' \
52
+ 'an external "contentUri"'
53
+ opt_msg = 'rosette_options can only be an instance of a Hash'
43
54
  if [@content, @content_uri, @file_path].compact.length > 1
44
- raise BadRequestFormatError.new 'The format of the request is invalid: multiple content sources;' \
45
- ' must be one of an attachment, an inline "content" field, or an external' \
46
- '"contentUri"'
55
+ raise BadRequestFormatError.new(content_msg)
47
56
  elsif [@content, @content_uri, @file_path].all?(&:nil?)
48
- raise BadRequestFormatError.new 'The format of the request is invalid: no content provided; must' \
49
- ' be one of an attachment, an inline "content" field, or an external "contentUri"'
57
+ raise BadRequestFormatError.new(no_content_msg)
50
58
  elsif @rosette_options
51
- raise BadRequestError.new('rosette_options can only be an instance of a Hash') unless @rosette_options.is_a? Hash
59
+ raise BadRequestError.new(opt_msg) unless @rosette_options.is_a? Hash
52
60
  end
53
61
  end
54
62
 
@@ -57,9 +65,10 @@ class DocumentParameters
57
65
  # Returns the new Hash.
58
66
  def load_params
59
67
  validate_params
60
- to_hash.select { |_key, value| value }
61
- .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
62
- .to_h
68
+ to_hash
69
+ .select { |_key, value| value }
70
+ .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
71
+ .to_h
63
72
  end
64
73
 
65
74
  # Converts this class to Hash.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'bad_request_error'
2
4
  require_relative 'name_parameter'
3
5
 
@@ -23,13 +25,18 @@ class NameDeduplicationParameters
23
25
  # Validates the parameters by checking if name1 and name2 are instances of
24
26
  # a String or NameParameter.
25
27
  def validate_params
26
- raise BadRequestError.new('names must be an array of name_parameter') unless @names.instance_of? Array
28
+ param_msg = 'names must be an array of name_parameter'
29
+ raise BadRequestError.new(param_msg) unless @names.instance_of? Array
30
+
31
+ float_msg = 'threshold must be a float'
32
+ thresh_msg = 'threshold must be in the range of 0 to 1'
27
33
  if @threshold
28
- raise BadRequestError.new('threshold must be a float') unless @threshold.is_a?(Float)
29
- raise BadRequestError.new('threshold must be in the range of 0 to 1') if @threshold.negative? || @threshold > 1
34
+ raise BadRequestError.new(float_msg) unless @threshold.is_a?(Float)
35
+ raise BadRequestError.new(thresh_msg) if @threshold.negative? || @threshold > 1
30
36
  end
37
+ opt_msg = 'rosette_options can only be an instance of a Hash'
31
38
  if @rosette_options
32
- raise BadRequestError.new('rosette_options can only be an instance of a Hash') unless @rosette_options.is_a? Hash
39
+ raise BadRequestError.new(opt_msg) unless @rosette_options.is_a? Hash
33
40
  end
34
41
  end
35
42
 
@@ -38,9 +45,10 @@ class NameDeduplicationParameters
38
45
  # Returns the new Hash.
39
46
  def load_params
40
47
  validate_params
41
- to_hash.select { |_key, value| value }
42
- .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
43
- .to_h
48
+ to_hash
49
+ .select { |_key, value| value }
50
+ .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
51
+ .to_h
44
52
  end
45
53
 
46
54
  # Converts this class to Hash.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This class represents an entity name in Rosette API.
2
4
  class NameParameter
3
5
  # Name's entity type (PERSON, LOCATION, ORGANIZATION) (optional)
@@ -25,9 +27,10 @@ class NameParameter
25
27
  #
26
28
  # Returns the new Hash.
27
29
  def load_param
28
- to_hash.select { |_key, value| value }
29
- .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
30
- .to_h
30
+ to_hash
31
+ .select { |_key, value| value }
32
+ .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
33
+ .to_h
31
34
  end
32
35
 
33
36
  # Converts this class to Hash.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'bad_request_error'
2
4
  require_relative 'name_parameter'
3
5
 
@@ -27,10 +29,15 @@ class NameSimilarityParameters
27
29
  # Validates the parameters by checking if name1 and name2 are instances of
28
30
  # a String or NameParameter.
29
31
  def validate_params
30
- raise BadRequestError.new('name1 option can only be an instance of a String or NameParameter') if [String, NameParameter].none? { |clazz| @name1.is_a? clazz }
31
- raise BadRequestError.new('name2 option can only be an instance of a String or NameParameter') if [String, NameParameter].none? { |clazz| @name2.is_a? clazz }
32
+ n1_msg = 'name1 option can only be an instance of a String or NameParameter'
33
+ raise BadRequestError.new(n1_msg) if [String, NameParameter].none? { |clazz| @name1.is_a? clazz }
34
+
35
+ n2_msg = 'name2 option can only be an instance of a String or NameParameter'
36
+ raise BadRequestError.new(n2_msg) if [String, NameParameter].none? { |clazz| @name2.is_a? clazz }
37
+
38
+ opt_msg = 'rosette_options can only be an instance of a Hash'
32
39
  if @rosette_options
33
- raise BadRequestError.new('rosette_options can only be an instance of a Hash') unless @rosette_options.is_a? Hash
40
+ raise BadRequestError.new(opt_msg) unless @rosette_options.is_a? Hash
34
41
  end
35
42
  end
36
43
 
@@ -39,9 +46,10 @@ class NameSimilarityParameters
39
46
  # Returns the new Hash.
40
47
  def load_params
41
48
  validate_params
42
- to_hash.reject { |_key, value| value.nil? }
43
- .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
44
- .to_h
49
+ to_hash
50
+ .reject { |_key, value| value.nil? }
51
+ .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
52
+ .to_h
45
53
  end
46
54
 
47
55
  # Converts this class to Hash.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'rosette_api_error'
2
4
 
3
5
  # This class encapsulates parameters that are needed for name-translation in
@@ -11,7 +13,8 @@ class NameTranslationParameters
11
13
  attr_accessor :name
12
14
  # Rosette API options (optional, should be a hash)
13
15
  attr_accessor :rosette_options
14
- # ISO 693-3 code of the name's native language the name originates in (optional)
16
+ # ISO 693-3 code of the name's native language the name originates in
17
+ # (optional)
15
18
  attr_accessor :source_language_of_origin
16
19
  # ISO 693-3 code of the name's language of use (optional)
17
20
  attr_accessor :source_language_of_use
@@ -47,10 +50,12 @@ class NameTranslationParameters
47
50
  @target_script = options[:target_script]
48
51
  end
49
52
 
50
- # Validates the parameters by checking if rosette_options is an instance of a Hash.
53
+ # Validates the parameters by checking if rosette_options is an instance
54
+ # of a Hash.
51
55
  def validate_params
56
+ msg = 'rosette_options can only be an instance of a Hash'
52
57
  if @rosette_options
53
- raise BadRequestError.new('rosette_options can only be an instance of a Hash') unless @rosette_options.is_a? Hash
58
+ raise BadRequestError.new(msg) unless @rosette_options.is_a? Hash
54
59
  end
55
60
  end
56
61
 
@@ -59,9 +64,10 @@ class NameTranslationParameters
59
64
  # Returns the new Hash.
60
65
  def load_params
61
66
  validate_params
62
- to_hash.select { |_key, value| value }
63
- .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
64
- .to_h
67
+ to_hash
68
+ .select { |_key, value| value }
69
+ .map { |key, value| [key.to_s.split('_').map(&:capitalize).join.sub!(/\D/, &:downcase), value] }
70
+ .to_h
65
71
  end
66
72
 
67
73
  # Converts this class to Hash.
@@ -1,4 +1,5 @@
1
- # encoding: UTF-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'net/http'
3
4
  require 'net/https'
4
5
  require 'json'
@@ -20,15 +21,17 @@ class RequestBuilder
20
21
  # User-Agent string
21
22
  attr_reader :user_agent
22
23
 
23
- def initialize(user_key, alternate_url, http_client, params = {}, url_parameters = nil, binding_version)
24
+ def initialize(user_key, alternate_url, http_client, binding_version,
25
+ params = {}, url_parameters = nil)
24
26
  @user_key = user_key
25
27
  @alternate_url = alternate_url
26
28
  @http_client = http_client
27
- @params = params
28
29
  @binding_version = binding_version
30
+ @params = params
29
31
  @user_agent = 'Ruby/' + binding_version + '/' + RUBY_VERSION
30
32
 
31
33
  return unless url_parameters
34
+
32
35
  @alternate_url = @alternate_url + '?' + URI.encode_www_form(url_parameters)
33
36
  end
34
37
 
@@ -43,19 +46,27 @@ class RequestBuilder
43
46
  begin
44
47
  uri = URI.parse @alternate_url
45
48
  request = Net::HTTP::Post.new uri.request_uri
46
- rescue
47
- raise RosetteAPIError.new 'connectionError', 'Failed to establish connection with Rosette API server.'
49
+ rescue StandardError
50
+ # Not ideal. Consider switching to a different library.
51
+ # https://stackoverflow.com/a/11802674
52
+ raise RosetteAPIError.new(
53
+ 'connectionError',
54
+ 'Failed to establish connection with Rosette server.'
55
+ )
48
56
  end
49
57
 
50
58
  custom_headers = params['customHeaders']
51
59
 
52
60
  if custom_headers
53
61
  keys_array = custom_headers.keys
54
- for key in keys_array
62
+ keys_array.each do |key|
55
63
  if key.to_s =~ /^X-RosetteAPI-/
56
64
  request[key] = custom_headers[key]
57
65
  else
58
- raise RosetteAPIError.new 'invalidHeader', 'Custom header must begin with "X-RosetteAPI-"'
66
+ raise RosetteAPIError.new(
67
+ 'invalidHeader',
68
+ 'Custom header must begin with "X-RosetteAPI-"'
69
+ )
59
70
  end
60
71
  end
61
72
  params.delete 'customHeaders'
@@ -83,8 +94,8 @@ class RequestBuilder
83
94
  begin
84
95
  file = File.open params['filePath'], 'r'
85
96
  text = file.read
86
- rescue => err
87
- raise err
97
+ rescue StandardError => e
98
+ raise RosetteAPIError.new('readMultipartError', e)
88
99
  end
89
100
 
90
101
  boundary = SecureRandom.hex
@@ -94,7 +105,8 @@ class RequestBuilder
94
105
 
95
106
  # Add the content data
96
107
  post_body << "--#{boundary}\r\n"
97
- post_body << "Content-Disposition: form-data; name=\"content\"; filename=\"#{File.basename(file)}\"\r\n"
108
+ post_body << 'Content-Disposition: form-data; name="content"; ' \
109
+ "filename=\"#{File.basename(file)}\"\r\n"
98
110
  post_body << "Content-Type: text/plain\r\n\r\n"
99
111
  post_body << text
100
112
 
@@ -109,24 +121,33 @@ class RequestBuilder
109
121
  begin
110
122
  uri = URI.parse @alternate_url
111
123
  request = Net::HTTP::Post.new uri.request_uri
112
- rescue
113
- raise RosetteAPIError.new 'connectionError', 'Failed to establish connection with Rosette API server.'
124
+ rescue StandardError
125
+ # Not ideal. Consider switching to a different library.
126
+ # https://stackoverflow.com/a/11802674
127
+ raise RosetteAPIError.new(
128
+ 'connectionError',
129
+ 'Failed to establish connection with Rosette API server.'
130
+ )
114
131
  end
115
132
 
116
133
  # add any custom headers from the user
117
134
  unless params['customHeaders'].nil?
118
135
  keys_array = params['customHeaders'].keys
119
- for k in keys_array
136
+ keys_array.each do |k|
120
137
  if k.to_s =~ /^X-RosetteAPI-/
121
138
  request.add_field k, params['customHeaders'][k]
122
139
  else
123
- raise RosetteAPIError.new 'invalidHeader', 'Custom header must begin with "X-RosetteAPI-"'
140
+ raise RosetteAPIError.new(
141
+ 'invalidHeader',
142
+ 'Custom header must begin with "X-RosetteAPI-"'
143
+ )
124
144
  end
125
145
  end
126
146
  params.delete 'customHeaders'
127
147
  end
128
148
 
129
- request.add_field 'Content-Type', "multipart/form-data; boundary=#{boundary}"
149
+ request.add_field 'Content-Type',
150
+ "multipart/form-data; boundary=#{boundary}"
130
151
  request.add_field 'User-Agent', @user_agent
131
152
  request.add_field 'X-RosetteAPI-Key', @user_key
132
153
  request.add_field 'X-RosetteAPI-Binding', 'ruby'
@@ -142,10 +163,14 @@ class RequestBuilder
142
163
  def send_get_request
143
164
  begin
144
165
  uri = URI.parse @alternate_url
145
-
146
166
  request = Net::HTTP::Get.new uri.request_uri
147
- rescue
148
- raise RosetteAPIError.new 'connectionError', 'Failed to establish connection with Rosette API server.'
167
+ rescue StandardError
168
+ # Not ideal. Consider switching to a different library.
169
+ # https://stackoverflow.com/a/11802674
170
+ raise RosetteAPIError.new(
171
+ 'connectionError',
172
+ 'Failed to establish connection with Rosette API server.'
173
+ )
149
174
  end
150
175
  request['X-RosetteAPI-Key'] = @user_key
151
176
  request['User-Agent'] = @user_agent
@@ -1,8 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'request_builder'
2
4
  require_relative 'document_parameters'
3
5
  require_relative 'name_deduplication_parameters'
4
6
  require_relative 'name_translation_parameters'
5
7
  require_relative 'name_similarity_parameters'
8
+ require_relative 'address_similarity_parameters'
6
9
  require_relative 'rosette_api_error'
7
10
  require_relative 'bad_request_error'
8
11
  require_relative 'bad_request_format_error'
@@ -10,46 +13,47 @@ require_relative 'bad_request_format_error'
10
13
  # This class allows you to access all Rosette API endpoints.
11
14
  class RosetteAPI
12
15
  # Version of Ruby binding
13
- BINDING_VERSION = '1.12.1'
16
+ BINDING_VERSION = '1.14.3'
14
17
  # Rosette API language endpoint
15
- LANGUAGE_ENDPOINT = '/language'.freeze
18
+ LANGUAGE_ENDPOINT = '/language'
16
19
  # Rosette API morphology endpoint
17
- MORPHOLOGY_ENDPOINT = '/morphology'.freeze
20
+ MORPHOLOGY_ENDPOINT = '/morphology'
18
21
  # Rosette API entities endpoint
19
- ENTITIES_ENDPOINT = '/entities'.freeze
22
+ ENTITIES_ENDPOINT = '/entities'
20
23
  # Rosette API categories endpoint
21
- CATEGORIES_ENDPOINT = '/categories'.freeze
24
+ CATEGORIES_ENDPOINT = '/categories'
22
25
  # Rosette API relationships endpoint
23
- RELATIONSHIPS_ENDPOINT = '/relationships'.freeze
26
+ RELATIONSHIPS_ENDPOINT = '/relationships'
24
27
  # Rosette API sentiment endpoint
25
- SENTIMENT_ENDPOINT = '/sentiment'.freeze
28
+ SENTIMENT_ENDPOINT = '/sentiment'
26
29
  # Name Deduplication endpoint
27
- NAME_DEDUPLICATION_ENDPOINT = '/name-deduplication'.freeze
30
+ NAME_DEDUPLICATION_ENDPOINT = '/name-deduplication'
28
31
  # Rosette API name-translation endpoint
29
- NAME_TRANSLATION_ENDPOINT = '/name-translation'.freeze
32
+ NAME_TRANSLATION_ENDPOINT = '/name-translation'
30
33
  # Rosette API name-similarity endpoint
31
- NAME_SIMILARITY_ENDPOINT = '/name-similarity'.freeze
34
+ NAME_SIMILARITY_ENDPOINT = '/name-similarity'
35
+ # Rosette API address-similarity endpoint
36
+ ADDRESS_SIMILARITY_ENDPOINT = '/address-similarity'
32
37
  # Rosette API tokens endpoint
33
- TOKENS_ENDPOINT = '/tokens'.freeze
38
+ TOKENS_ENDPOINT = '/tokens'
34
39
  # Rosette API sentences endpoint
35
- SENTENCES_ENDPOINT = '/sentences'.freeze
40
+ SENTENCES_ENDPOINT = '/sentences'
36
41
  # Rosette API info endpoint
37
- INFO = '/info'.freeze
42
+ INFO = '/info'
38
43
  # Rosette API ping endpoint
39
- PING = '/ping'.freeze
44
+ PING = '/ping'
40
45
  # Text Embedding endpoint (deprecated)
41
- TEXT_EMBEDDING = '/text-embedding'.freeze
46
+ TEXT_EMBEDDING = '/text-embedding'
42
47
  # Semantic Vectors endpoint (replaces /text-embedding)
43
- SEMANTIC_VECTORS = '/semantics/vector'.freeze
48
+ SEMANTIC_VECTORS = '/semantics/vector'
44
49
  # Similar Terms endpoint
45
- SIMILAR_TERMS_ENDPOINT = '/semantics/similar'.freeze
50
+ SIMILAR_TERMS_ENDPOINT = '/semantics/similar'
46
51
  # Syntactic Dependencies endpoint
47
- SYNTACTIC_DEPENDENCIES_ENDPOINT = '/syntax/dependencies'.freeze
52
+ SYNTACTIC_DEPENDENCIES_ENDPOINT = '/syntax/dependencies'
48
53
  # Transliteration endpoint
49
- TRANSLITERATION_ENDPOINT = '/transliteration'.freeze
54
+ TRANSLITERATION_ENDPOINT = '/transliteration'
50
55
  # Topics endpoint
51
- TOPICS_ENDPOINT = '/topics'.freeze
52
-
56
+ TOPICS_ENDPOINT = '/topics'
53
57
 
54
58
  # Rosette API key
55
59
  attr_accessor :user_key
@@ -78,7 +82,8 @@ class RosetteAPI
78
82
  #
79
83
  # ==== Attributes
80
84
  #
81
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
85
+ # * +params+ - DocumentParameters helps to build the request body in
86
+ # RequestBuilder.
82
87
  #
83
88
  # Returns list of candidate languages in order of descending confidence.
84
89
  def get_language(params)
@@ -86,7 +91,8 @@ class RosetteAPI
86
91
 
87
92
  params = params.load_params
88
93
 
89
- RequestBuilder.new(@user_key, @alternate_url + LANGUAGE_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
94
+ RequestBuilder.new(@user_key, @alternate_url + LANGUAGE_ENDPOINT,
95
+ @http_client, BINDING_VERSION, params, @url_parameters)
90
96
  .send_post_request
91
97
  end
92
98
 
@@ -95,7 +101,8 @@ class RosetteAPI
95
101
  #
96
102
  # ==== Attributes
97
103
  #
98
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
104
+ # * +params+ - DocumentParameters helps to build the request body in
105
+ # RequestBuilder.
99
106
  #
100
107
  # Returns the lemmas, compound components, Han-readings, and parts-of-speech
101
108
  # tags of the input for supported languages.
@@ -104,7 +111,9 @@ class RosetteAPI
104
111
 
105
112
  params = params.load_params
106
113
 
107
- RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/complete', @http_client, params, @url_parameters, BINDING_VERSION)
114
+ endpoint = MORPHOLOGY_ENDPOINT + '/complete'
115
+ RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client,
116
+ BINDING_VERSION, params, @url_parameters)
108
117
  .send_post_request
109
118
  end
110
119
 
@@ -112,7 +121,8 @@ class RosetteAPI
112
121
  #
113
122
  # ==== Attributes
114
123
  #
115
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
124
+ # * +params+ - DocumentParameters helps to build the request body in
125
+ # RequestBuilder.
116
126
  #
117
127
  # Returns list of components for each compound word of the input for supported
118
128
  # languages.
@@ -121,7 +131,9 @@ class RosetteAPI
121
131
 
122
132
  params = params.load_params
123
133
 
124
- RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/compound-components', @http_client, params, @url_parameters, BINDING_VERSION)
134
+ endpoint = MORPHOLOGY_ENDPOINT + '/compound-components'
135
+ RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client,
136
+ BINDING_VERSION, params, @url_parameters)
125
137
  .send_post_request
126
138
  end
127
139
 
@@ -129,7 +141,8 @@ class RosetteAPI
129
141
  #
130
142
  # ==== Attributes
131
143
  #
132
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
144
+ # * +params+ - DocumentParameters helps to build the request body in
145
+ # RequestBuilder.
133
146
  #
134
147
  # Returns list of Han-readings which provide pronunciation information for
135
148
  # Han script, in both Chinese and Japanese input text.
@@ -138,7 +151,9 @@ class RosetteAPI
138
151
 
139
152
  params = params.load_params
140
153
 
141
- RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/han-readings', @http_client, params, @url_parameters, BINDING_VERSION)
154
+ endpoint = MORPHOLOGY_ENDPOINT + '/han-readings'
155
+ RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client,
156
+ BINDING_VERSION, params, @url_parameters)
142
157
  .send_post_request
143
158
  end
144
159
 
@@ -146,7 +161,8 @@ class RosetteAPI
146
161
  #
147
162
  # ==== Attributes
148
163
  #
149
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
164
+ # * +params+ - DocumentParameters helps to build the request body in
165
+ # RequestBuilder.
150
166
  #
151
167
  # Returns list of lemmas for each token of the input for supported languages.
152
168
  def get_lemmas(params)
@@ -154,7 +170,9 @@ class RosetteAPI
154
170
 
155
171
  params = params.load_params
156
172
 
157
- RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/lemmas', @http_client, params, @url_parameters, BINDING_VERSION)
173
+ endpoint = MORPHOLOGY_ENDPOINT + '/lemmas'
174
+ RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client,
175
+ BINDING_VERSION, params, @url_parameters)
158
176
  .send_post_request
159
177
  end
160
178
 
@@ -162,7 +180,8 @@ class RosetteAPI
162
180
  #
163
181
  # ==== Attributes
164
182
  #
165
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
183
+ # * +params+ - DocumentParameters helps to build the request body in
184
+ # RequestBuilder.
166
185
  #
167
186
  # Returns list of part-of-speech (POS) tags for each of the words of the
168
187
  # input, depending on the context of how it is used.
@@ -171,7 +190,9 @@ class RosetteAPI
171
190
 
172
191
  params = params.load_params
173
192
 
174
- RequestBuilder.new(@user_key, @alternate_url + MORPHOLOGY_ENDPOINT + '/parts-of-speech', @http_client, params, @url_parameters, BINDING_VERSION)
193
+ endpoint = MORPHOLOGY_ENDPOINT + '/parts-of-speech'
194
+ RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client,
195
+ BINDING_VERSION, params, @url_parameters)
175
196
  .send_post_request
176
197
  end
177
198
 
@@ -179,7 +200,8 @@ class RosetteAPI
179
200
  #
180
201
  # ==== Attributes
181
202
  #
182
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
203
+ # * +params+ - DocumentParameters helps to build the request body in
204
+ # RequestBuilder.
183
205
  #
184
206
  # Returns each entity extracted from the input.
185
207
  def get_entities(params)
@@ -188,7 +210,8 @@ class RosetteAPI
188
210
  params = params.load_params
189
211
 
190
212
  endpoint = ENTITIES_ENDPOINT
191
- RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client, params, @url_parameters, BINDING_VERSION)
213
+ RequestBuilder.new(@user_key, @alternate_url + endpoint, @http_client,
214
+ BINDING_VERSION, params, @url_parameters)
192
215
  .send_post_request
193
216
  end
194
217
 
@@ -196,7 +219,8 @@ class RosetteAPI
196
219
  #
197
220
  # ==== Attributes
198
221
  #
199
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
222
+ # * +params+ - DocumentParameters helps to build the request body in
223
+ # RequestBuilder.
200
224
  #
201
225
  # Returns the contextual categories identified in the input.
202
226
  def get_categories(params)
@@ -204,7 +228,8 @@ class RosetteAPI
204
228
 
205
229
  params = params.load_params
206
230
 
207
- RequestBuilder.new(@user_key, @alternate_url + CATEGORIES_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
231
+ RequestBuilder.new(@user_key, @alternate_url + CATEGORIES_ENDPOINT,
232
+ @http_client, BINDING_VERSION, params, @url_parameters)
208
233
  .send_post_request
209
234
  end
210
235
 
@@ -212,7 +237,8 @@ class RosetteAPI
212
237
  #
213
238
  # ==== Attributes
214
239
  #
215
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
240
+ # * +params+ - DocumentParameters helps to build the request body in
241
+ # RequestBuilder.
216
242
  #
217
243
  # Returns each relationship extracted from the input.
218
244
  def get_relationships(params)
@@ -220,7 +246,8 @@ class RosetteAPI
220
246
 
221
247
  params = params.load_params
222
248
 
223
- RequestBuilder.new(@user_key, @alternate_url + RELATIONSHIPS_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
249
+ RequestBuilder.new(@user_key, @alternate_url + RELATIONSHIPS_ENDPOINT,
250
+ @http_client, BINDING_VERSION, params, @url_parameters)
224
251
  .send_post_request
225
252
  end
226
253
 
@@ -228,7 +255,8 @@ class RosetteAPI
228
255
  #
229
256
  # ==== Attributes
230
257
  #
231
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
258
+ # * +params+ - DocumentParameters helps to build the request body in
259
+ # RequestBuilder.
232
260
  #
233
261
  # Returns sentiment analysis results.
234
262
  def get_sentiment(params)
@@ -236,7 +264,8 @@ class RosetteAPI
236
264
 
237
265
  params = params.load_params
238
266
 
239
- RequestBuilder.new(@user_key, @alternate_url + SENTIMENT_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
267
+ RequestBuilder.new(@user_key, @alternate_url + SENTIMENT_ENDPOINT,
268
+ @http_client, BINDING_VERSION, params, @url_parameters)
240
269
  .send_post_request
241
270
  end
242
271
 
@@ -244,15 +273,19 @@ class RosetteAPI
244
273
  #
245
274
  # ==== Attributes
246
275
  #
247
- # * +params+ - NameDeduplicationParameters helps to build the request body in RequestBuilder.
276
+ # * +params+ - NameDeduplicationParameters helps to build the request body in
277
+ # RequestBuilder.
248
278
  #
249
279
  # Returns the list of deduplicated names.
250
280
  def get_name_deduplication(params)
251
- check_params params, 'Expects a NameDeduplicationParameters type as an argument', NameDeduplicationParameters
281
+ check_params params,
282
+ 'Expects a NameDeduplicationParameters type as an argument',
283
+ NameDeduplicationParameters
252
284
 
253
285
  params = params.load_params
254
286
 
255
- RequestBuilder.new(@user_key, @alternate_url + NAME_DEDUPLICATION_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
287
+ RequestBuilder.new(@user_key, @alternate_url + NAME_DEDUPLICATION_ENDPOINT,
288
+ @http_client, BINDING_VERSION, params, @url_parameters)
256
289
  .send_post_request
257
290
  end
258
291
 
@@ -260,15 +293,19 @@ class RosetteAPI
260
293
  #
261
294
  # ==== Attributes
262
295
  #
263
- # * +params+ - NameTranslationParameters helps to build the request body in RequestBuilder.
296
+ # * +params+ - NameTranslationParameters helps to build the request body in
297
+ # RequestBuilder.
264
298
  #
265
299
  # Returns the translation of a name.
266
300
  def get_name_translation(params)
267
- check_params params, 'Expects a NameTranslationParameters type as an argument', NameTranslationParameters
301
+ check_params params,
302
+ 'Expects a NameTranslationParameters type as an argument',
303
+ NameTranslationParameters
268
304
 
269
305
  params = params.load_params
270
306
 
271
- RequestBuilder.new(@user_key, @alternate_url + NAME_TRANSLATION_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
307
+ RequestBuilder.new(@user_key, @alternate_url + NAME_TRANSLATION_ENDPOINT,
308
+ @http_client, BINDING_VERSION, params, @url_parameters)
272
309
  .send_post_request
273
310
  end
274
311
 
@@ -277,15 +314,39 @@ class RosetteAPI
277
314
  #
278
315
  # ==== Attributes
279
316
  #
280
- # * +params+ - NameSimilarityParameters helps to build the request body in RequestBuilder.
317
+ # * +params+ - NameSimilarityParameters helps to build the request body in
318
+ # RequestBuilder.
281
319
  #
282
320
  # Returns the confidence score of matching 2 names.
283
321
  def get_name_similarity(params)
284
- check_params params, 'Expects a NameSimilarityParameters type as an argument', NameSimilarityParameters
322
+ check_params params,
323
+ 'Expects a NameSimilarityParameters type as an argument',
324
+ NameSimilarityParameters
325
+
326
+ params = params.load_params
327
+
328
+ RequestBuilder.new(@user_key, @alternate_url + NAME_SIMILARITY_ENDPOINT,
329
+ @http_client, BINDING_VERSION, params, @url_parameters)
330
+ .send_post_request
331
+ end
332
+
333
+ # Compares two addresses and returns a match score from 0 to 1.
334
+ #
335
+ # ==== Attributes
336
+ #
337
+ # * +params+ - AddressSimilarityParameters helps to build the request body in
338
+ # RequestBuilder.
339
+ #
340
+ # Returns the confidence score of matching 2 addresses.
341
+ def get_address_similarity(params)
342
+ check_params params,
343
+ 'Expects a AddressSimilarityParameters type as an argument',
344
+ AddressSimilarityParameters
285
345
 
286
346
  params = params.load_params
287
347
 
288
- RequestBuilder.new(@user_key, @alternate_url + NAME_SIMILARITY_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
348
+ RequestBuilder.new(@user_key, @alternate_url + ADDRESS_SIMILARITY_ENDPOINT,
349
+ @http_client, BINDING_VERSION, params, @url_parameters)
289
350
  .send_post_request
290
351
  end
291
352
 
@@ -293,7 +354,8 @@ class RosetteAPI
293
354
  #
294
355
  # ==== Attributes
295
356
  #
296
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
357
+ # * +params+ - DocumentParameters helps to build the request body in
358
+ # RequestBuilder.
297
359
  #
298
360
  # Returns list of tokens of the input.
299
361
  def get_tokens(params)
@@ -301,7 +363,8 @@ class RosetteAPI
301
363
 
302
364
  params = params.load_params
303
365
 
304
- RequestBuilder.new(@user_key, @alternate_url + TOKENS_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
366
+ RequestBuilder.new(@user_key, @alternate_url + TOKENS_ENDPOINT,
367
+ @http_client, BINDING_VERSION, params, @url_parameters)
305
368
  .send_post_request
306
369
  end
307
370
 
@@ -309,7 +372,8 @@ class RosetteAPI
309
372
  #
310
373
  # ==== Attributes
311
374
  #
312
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
375
+ # * +params+ - DocumentParameters helps to build the request body in
376
+ # RequestBuilder.
313
377
  #
314
378
  # Returns list of linguistic sentences of the input.
315
379
  def get_sentences(params)
@@ -317,7 +381,8 @@ class RosetteAPI
317
381
 
318
382
  params = params.load_params
319
383
 
320
- RequestBuilder.new(@user_key, @alternate_url + SENTENCES_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
384
+ RequestBuilder.new(@user_key, @alternate_url + SENTENCES_ENDPOINT,
385
+ @http_client, BINDING_VERSION, params, @url_parameters)
321
386
  .send_post_request
322
387
  end
323
388
 
@@ -328,7 +393,8 @@ class RosetteAPI
328
393
  #
329
394
  # ==== Attributes
330
395
  #
331
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
396
+ # * +params+ - DocumentParameters helps to build the request body in
397
+ # RequestBuilder.
332
398
  #
333
399
  # Returns the text embedding representation of the input.
334
400
  def get_text_embedding(params)
@@ -336,7 +402,8 @@ class RosetteAPI
336
402
 
337
403
  params = params.load_params
338
404
 
339
- RequestBuilder.new(@user_key, @alternate_url + TEXT_EMBEDDING, @http_client, params, @url_parameters, BINDING_VERSION)
405
+ RequestBuilder.new(@user_key, @alternate_url + TEXT_EMBEDDING, @http_client,
406
+ BINDING_VERSION, params, @url_parameters)
340
407
  .send_post_request
341
408
  end
342
409
 
@@ -345,13 +412,15 @@ class RosetteAPI
345
412
  #
346
413
  # ==== Attributes
347
414
  #
348
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
415
+ # * +params+ - DocumentParameters helps to build the request body in
416
+ # RequestBuilder.
349
417
  #
350
418
  # Returns the text embedding representation of the input.
351
419
  def get_semantic_vectors(params)
352
420
  check_params params
353
421
  params = params.load_params
354
- RequestBuilder.new(@user_key, @alternate_url + SEMANTIC_VECTORS, @http_client, params, @url_parameters, BINDING_VERSION)
422
+ RequestBuilder.new(@user_key, @alternate_url + SEMANTIC_VECTORS,
423
+ @http_client, BINDING_VERSION, params, @url_parameters)
355
424
  .send_post_request
356
425
  end
357
426
 
@@ -360,7 +429,8 @@ class RosetteAPI
360
429
  #
361
430
  # ==== Attributes
362
431
  #
363
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
432
+ # * +params+ - DocumentParameters helps to build the request body in
433
+ # RequestBuilder.
364
434
  #
365
435
  # Returns list of linguistic sentences of the input.
366
436
  def get_syntax_dependencies(params)
@@ -368,7 +438,9 @@ class RosetteAPI
368
438
 
369
439
  params = params.load_params
370
440
 
371
- RequestBuilder.new(@user_key, @alternate_url + SYNTACTIC_DEPENDENCIES_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
441
+ RequestBuilder.new(@user_key,
442
+ @alternate_url + SYNTACTIC_DEPENDENCIES_ENDPOINT,
443
+ @http_client, BINDING_VERSION, params, @url_parameters)
372
444
  .send_post_request
373
445
  end
374
446
 
@@ -377,15 +449,19 @@ class RosetteAPI
377
449
  #
378
450
  # ==== Attributes
379
451
  #
380
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
452
+ # * +params+ - DocumentParameters helps to build the request body in
453
+ # RequestBuilder.
381
454
  #
382
455
  # Returns the transliteration of the input.
383
456
  def get_transliteration(params)
384
- check_params params, 'Expects a DocumentParameters type as an argument', DocumentParameters
457
+ check_params params,
458
+ 'Expects a DocumentParameters type as an argument',
459
+ DocumentParameters
385
460
 
386
461
  params = params.load_params
387
462
 
388
- RequestBuilder.new(@user_key, @alternate_url + TRANSLITERATION_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
463
+ RequestBuilder.new(@user_key, @alternate_url + TRANSLITERATION_ENDPOINT,
464
+ @http_client, BINDING_VERSION, params, @url_parameters)
389
465
  .send_post_request
390
466
  end
391
467
 
@@ -393,7 +469,8 @@ class RosetteAPI
393
469
  #
394
470
  # ==== Attributes
395
471
  #
396
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
472
+ # * +params+ - DocumentParameters helps to build the request body in
473
+ # RequestBuilder.
397
474
  #
398
475
  # Returns list of topics of the input.
399
476
  def get_topics(params)
@@ -401,7 +478,8 @@ class RosetteAPI
401
478
 
402
479
  params = params.load_params
403
480
 
404
- RequestBuilder.new(@user_key, @alternate_url + TOPICS_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
481
+ RequestBuilder.new(@user_key, @alternate_url + TOPICS_ENDPOINT,
482
+ @http_client, BINDING_VERSION, params, @url_parameters)
405
483
  .send_post_request
406
484
  end
407
485
 
@@ -409,7 +487,8 @@ class RosetteAPI
409
487
  #
410
488
  # ==== Attributes
411
489
  #
412
- # * +params+ - DocumentParameters helps to build the request body in RequestBuilder.
490
+ # * +params+ - DocumentParameters helps to build the request body in
491
+ # RequestBuilder.
413
492
  #
414
493
  # Returns a mapping of languageCode to similar terms
415
494
  def get_similar_terms(params)
@@ -417,33 +496,39 @@ class RosetteAPI
417
496
 
418
497
  params = params.load_params
419
498
 
420
- RequestBuilder.new(@user_key, @alternate_url + SIMILAR_TERMS_ENDPOINT, @http_client, params, @url_parameters, BINDING_VERSION)
499
+ RequestBuilder.new(@user_key, @alternate_url + SIMILAR_TERMS_ENDPOINT,
500
+ @http_client, BINDING_VERSION, params, @url_parameters)
421
501
  .send_post_request
422
502
  end
423
503
 
424
504
  # Gets information about the Rosette API, returns name, build number
425
505
  # and build time.
426
506
  def info
427
- RequestBuilder.new(@user_key, @alternate_url + INFO, @http_client, @url_parameters, BINDING_VERSION)
507
+ RequestBuilder.new(@user_key, @alternate_url + INFO, @http_client,
508
+ BINDING_VERSION, @url_parameters)
428
509
  .send_get_request
429
510
  end
430
511
 
431
512
  # Pings the Rosette API for a response indicting that the service is
432
513
  # available.
433
514
  def ping
434
- RequestBuilder.new(@user_key, @alternate_url + PING, @http_client, @url_parameters, BINDING_VERSION)
515
+ RequestBuilder.new(@user_key, @alternate_url + PING, @http_client,
516
+ BINDING_VERSION, @url_parameters)
435
517
  .send_get_request
436
518
  end
437
519
 
438
520
  # Gets the User-Agent string
439
521
  def user_agent
440
- RequestBuilder.new(@user_key, @alternate_url + PING, @http_client, @url_parameters, BINDING_VERSION).user_agent
522
+ RequestBuilder.new(@user_key, @alternate_url + PING, @http_client,
523
+ BINDING_VERSION, @url_parameters).user_agent
441
524
  end
442
525
 
443
526
  private
444
527
 
445
528
  # Checks that the right parameter type is being passed in.
446
- def check_params(params, message = 'Expects a DocumentParameters type as an argument', type = DocumentParameters)
529
+ def check_params(params,
530
+ message = 'Expects a DocumentParameters type as an argument',
531
+ type = DocumentParameters)
447
532
  raise BadRequestError.new message unless params.is_a? type
448
533
  end
449
534
  end