open_calais 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cfee4412e753c0734f0e86dfc7e1c9f3a41d0f90
4
- data.tar.gz: 7f089cfb4f3b93254657caadb85d057a279da5f4
2
+ SHA256:
3
+ metadata.gz: 34b051160ea2d22366cacafdcb786d98e7671c49cfd67798095e0563b08766bc
4
+ data.tar.gz: fc056e88eb523daeaa03d14e5b70ceb5797b352e062dbf15d7807b204dc99491
5
5
  SHA512:
6
- metadata.gz: d5a527e6ee398dfbc2f1109b32a749ade4dee974f31031b93b90184ab4bf675fa7d566d1e5d098c0a812968acc51d98cfdacc61d8c2eb27383bd20dd8bf621ac
7
- data.tar.gz: 2b1d762948ea81a8c62d67e188a07870a23e087d73293be21048575de1a2ef12e9202ecdaf894decc882ad0e1a273ed0f5dcb1962af14c8f6ae587b1ad043c2c
6
+ metadata.gz: 8765c48314b227bee03d5fd88c7e6e178724574a316b139c651a27da1ad8d992fd33bf54ae419d76a68d88d44bc0535df5195c47ce905e405104adc13f13b08d
7
+ data.tar.gz: 01b798fb0b54312b077c1ef3cc38fa926dc86ce395323bcfeef4ae24410838bc1b944b6d363c1ac49d36282761eef0f7996f9f0e2aa3e3d2cca6f86ade3c3a21
@@ -1,6 +1,11 @@
1
+ sudo: false
1
2
  language: ruby
2
- rvm:
3
- - "2.1.6"
4
- - "2.2.1"
3
+ cache: bundler
5
4
  env:
6
5
  - TRAVIS=true
6
+ rvm:
7
+ - 2.5.8
8
+ - 2.6.6
9
+ - 2.7.1
10
+ script:
11
+ - bundle exec rake test
data/README.md CHANGED
@@ -4,15 +4,18 @@
4
4
  [![Build Status](https://travis-ci.org/PRX/open_calais.svg?branch=master)](https://travis-ci.org/PRX/open_calais)
5
5
  [![Code Climate](https://codeclimate.com/github/PRX/open_calais/badges/gpa.svg)](https://codeclimate.com/github/PRX/open_calais)
6
6
  [![Coverage Status](https://coveralls.io/repos/PRX/open_calais/badge.svg?branch=master)](https://coveralls.io/r/PRX/open_calais?branch=master)
7
- [![Dependency Status](https://gemnasium.com/PRX/open_calais.svg)](https://gemnasium.com/PRX/open_calais)
8
7
 
9
8
  _Gem Version 0.1.* supports the original OpenCalais API_
10
9
 
11
- _Gem Version 0.2.* now uses the upgraded API http://new.opencalais.com/upgrade/_
10
+ _Gem Version 0.2.* now uses the upgraded API http://www.opencalais.com/_
12
11
 
13
- If you are upgrading the the new version of the API, you will need a new API key. You should also review the [upgrade guide](http://new.opencalais.com/upgrade/).
12
+ _Gem Version 0.4.* supports refinitiv API_
14
13
 
15
- This is a ruby gem to access the [OpenCalais API](http://www.opencalais.com/documentation/calais-web-service-api/api-invocation/rest), using the REST API, and JSON responses.
14
+ Open Calais is now found at: https://developers.refinitiv.com/open-permid/intelligent-tagging-restful-api
15
+
16
+ It has a new default endpoint: https://api-eit.refinitiv.com/permid/calais
17
+
18
+ This is a ruby gem to access the (formerly OpenCalais) [Refinitiv Intelligent Tagging API](https://developers.refinitiv.com/open-permid/intelligent-tagging-restful-api), using the REST API, and JSON responses.
16
19
 
17
20
  It uses [Faraday](https://github.com/lostisland/faraday) to abstract HTTP library (defaults to use excon because it is excellent), and multi_json to abstract JSON parsing.
18
21
 
@@ -34,7 +37,7 @@ Or install it yourself as:
34
37
 
35
38
  ## Usage
36
39
 
37
- OpenCalais has one main method, `enrich`, and so does the gem:
40
+ Intelligent Tagging (OpenCalais) has one main method, `enrich`, and so does the gem:
38
41
 
39
42
  ```ruby
40
43
  require 'open_calais'
@@ -45,7 +48,7 @@ OpenCalais.configure do |c|
45
48
  end
46
49
 
47
50
  # or you can configure for a single call
48
- open_calais = OpenCalais::Client.new(:api_key=>'an api key')
51
+ open_calais = OpenCalais::Client.new(:api_key => 'an api key')
49
52
 
50
53
  # it returns a OpenCalais::Response instance
51
54
  response = open_calais.enrich('Ruby on Rails is a fantastic web framework. It uses MVC, and the Ruby programming language invented by Matz in Japan.')
@@ -55,7 +58,7 @@ response.raw
55
58
 
56
59
  # and has been parsed a bit to get :language, :topics, :tags, :entities, :relations, :locations
57
60
  # as lists of hashes
58
- response.tags.each{|t| puts t[:name] }
61
+ response.tags.each { |t| puts t[:name] }
59
62
  ```
60
63
 
61
64
  ## Contributing
data/Rakefile CHANGED
@@ -6,6 +6,7 @@ Rake::TestTask.new do |t|
6
6
  t.libs.push 'test'
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  t.verbose = true
9
+ t.warning = true
9
10
  end
10
11
 
11
12
  task :default => :test
@@ -9,7 +9,7 @@ module OpenCalais
9
9
 
10
10
  include Connection
11
11
 
12
- attr_reader *OpenCalais::Configuration.keys
12
+ attr_reader(*OpenCalais::Configuration.keys)
13
13
 
14
14
  attr_accessor :current_options
15
15
 
@@ -17,12 +17,12 @@ module OpenCalais
17
17
  DEFAULT_ADAPTER = :excon
18
18
 
19
19
  # The api endpoint to get REST info from opencalais
20
- DEFAULT_ENDPOINT = 'https://api.thomsonreuters.com/permid/calais'.freeze
20
+ DEFAULT_ENDPOINT = 'https://api-eit.refinitiv.com/permid/calais'.freeze
21
21
 
22
22
  # The value sent in the http header for 'User-Agent' if none is set
23
23
  DEFAULT_USER_AGENT = "OpenCalais Ruby Gem #{OpenCalais::VERSION}".freeze
24
24
 
25
- attr_accessor *VALID_OPTIONS_KEYS
25
+ attr_accessor(*VALID_OPTIONS_KEYS)
26
26
 
27
27
  # Convenience method to allow for global setting of configuration options
28
28
  def configure
@@ -1,10 +1,15 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  require 'faraday_middleware'
4
+ require 'hashie'
4
5
 
5
6
  module OpenCalais
6
7
  module Connection
7
8
 
9
+ class HashieWrapper < ::Hashie::Mash
10
+ disable_warnings
11
+ end
12
+
8
13
  ALLOWED_OPTIONS = [
9
14
  :headers,
10
15
  :url,
@@ -37,6 +42,7 @@ module OpenCalais
37
42
 
38
43
  def connection(options={})
39
44
  opts = merge_default_options(options)
45
+ FaradayMiddleware::Mashify.mash_class = HashieWrapper
40
46
  Faraday::Connection.new(opts) do |connection|
41
47
  connection.request :url_encoded
42
48
  connection.response :mashify
@@ -41,38 +41,68 @@ module OpenCalais
41
41
  r.each do |k,v|
42
42
  case v._typeGroup
43
43
  when 'topics'
44
- self.topics << {:name => humanize_topic(v.name), :score => v.score.to_f, :original => v.name}
44
+ self.topics << {
45
+ :name => humanize_topic(v.name),
46
+ :score => v.score.to_f,
47
+ :original => v.name
48
+ }
45
49
  when 'socialTag'
46
- self.tags << {:name => v.name.gsub('_', ' and ').downcase, :score => importance_to_score(v.importance)}
50
+ self.tags << {
51
+ :name => v.name.gsub('_', ' and ').downcase,
52
+ :score => importance_to_score(v.importance)
53
+ }
47
54
  when 'entities'
48
- item = {:guid => k, :name => v.name, :type => transliterate(v._type).titleize, :score => v.relevance}
49
-
50
- instances = Array(v.instances).select{|i| i.exact.downcase != item[:name].downcase }
51
- item[:matches] = instances if instances && instances.size > 0
52
-
53
- if OpenCalais::GEO_TYPES.include?(v._type)
54
- if (v.resolutions && v.resolutions.size > 0)
55
- r = v.resolutions.first
56
- item[:name] = r.shortname || r.name
57
- item[:latitude] = r.latitude
58
- item[:longitude] = r.longitude
59
- item[:country] = r.containedbycountry if r.containedbycountry
60
- item[:state] = r.containedbystate if r.containedbystate
61
- end
62
- self.locations << item
63
- else
64
- self.entities << item
65
- end
55
+ parse_entity(k, v)
66
56
  when 'relations'
67
- item = v.reject{|k,v| k[0] == '_' || k == 'instances'} || {}
68
- item[:type] = transliterate(v._type).titleize
69
- self.relations << item
57
+ parse_relation(k, v)
70
58
  end
71
59
  end
72
60
 
73
61
  # remove social tags which are in the topics list already
74
- topic_names = self.topics.collect{|topic| topic[:name].downcase}
75
- self.tags.delete_if{|tag| topic_names.include?(tag[:name]) }
62
+ topic_names = self.topics.collect { |topic| topic[:name].downcase }
63
+ self.tags.delete_if { |tag| topic_names.include?(tag[:name]) }
64
+ end
65
+
66
+ def parse_entity(k, v)
67
+ if v.name.nil?
68
+ v.name = v.instances.first[:exact]
69
+ end
70
+
71
+ item = {
72
+ :guid => k,
73
+ :name => v.name,
74
+ :type => transliterate(v._type).titleize,
75
+ :score => v.relevance
76
+ }
77
+
78
+ instances = Array(v.instances).select { |i| i.exact.downcase != item[:name].downcase }
79
+ if instances && instances.size > 0
80
+ item[:matches] = instances
81
+ end
82
+
83
+ if OpenCalais::GEO_TYPES.include?(v._type)
84
+ self.locations << set_location_info(item, v)
85
+ else
86
+ self.entities << item
87
+ end
88
+ end
89
+
90
+ def set_location_info(item, v)
91
+ if (v.resolutions && v.resolutions.size > 0)
92
+ r = v.resolutions.first
93
+ item[:name] = r.shortname || r.name
94
+ item[:latitude] = r.latitude
95
+ item[:longitude] = r.longitude
96
+ item[:country] = r.containedbycountry if r.containedbycountry
97
+ item[:state] = r.containedbystate if r.containedbystate
98
+ end
99
+ item
100
+ end
101
+
102
+ def parse_relation(k, v)
103
+ item = v.reject { |key,val| key[0] == '_' || key == 'instances' } || {}
104
+ item[:type] = transliterate(v._type).titleize
105
+ self.relations << item
76
106
  end
77
107
  end
78
108
  end
@@ -1,5 +1,5 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  module OpenCalais
4
- VERSION = '0.3.2'
4
+ VERSION = '0.4.0'
5
5
  end
@@ -4,36 +4,36 @@ describe OpenCalais::Client do
4
4
 
5
5
  it "is initialized with defaults" do
6
6
  oc = OpenCalais::Client.new
7
- oc.current_options.wont_be_nil
8
- oc.current_options.must_equal OpenCalais.options
7
+ _(oc.current_options).wont_be_nil
8
+ _(oc.current_options).must_equal OpenCalais.options
9
9
  end
10
10
 
11
11
  it "is initialized with specific values" do
12
12
  oc = OpenCalais::Client.new(:api_key => 'current')
13
- oc.current_options.wont_be_nil
14
- oc.current_options.wont_equal OpenCalais.options
15
- oc.current_options[:api_key].must_equal 'current'
16
- oc.api_key.must_equal 'current'
13
+ _(oc.current_options).wont_be_nil
14
+ _(oc.current_options).wont_equal OpenCalais.options
15
+ _(oc.current_options[:api_key]).must_equal 'current'
16
+ _(oc.api_key).must_equal 'current'
17
17
  end
18
18
 
19
19
  it "gets tags for text" do
20
20
  oc = OpenCalais::Client.new(:api_key => ENV['OPEN_CALAIS_KEY'])
21
21
  response = oc.enrich("Ruby on Rails is a fantastic web framework. It uses MVC, and the ruby programming language invented by Matz")
22
- response.wont_be_nil
23
- response.raw.wont_be_nil
22
+ _(response).wont_be_nil
23
+ _(response.raw).wont_be_nil
24
24
  end
25
25
 
26
26
  it "passes in header options in client" do
27
27
  oc = OpenCalais::Client.new(:api_key => ENV['OPEN_CALAIS_KEY'], :content_type => OpenCalais::CONTENT_TYPES[:html])
28
28
  response = oc.enrich("Ruby on Rails is a fantastic web framework. It uses MVC, and the ruby programming language invented by Matz")
29
- response.wont_be_nil
30
- response.raw.wont_be_nil
29
+ _(response).wont_be_nil
30
+ _(response.raw).wont_be_nil
31
31
  end
32
32
 
33
33
  it "passes in header optionsin enrich" do
34
34
  oc = OpenCalais::Client.new(:api_key => ENV['OPEN_CALAIS_KEY'])
35
35
  response = oc.enrich("Ruby on Rails is a fantastic web framework. It uses MVC, and the ruby programming language invented by Matz", :headers => {:content_type => OpenCalais::CONTENT_TYPES[:html]})
36
- response.wont_be_nil
37
- response.raw.wont_be_nil
36
+ _(response).wont_be_nil
37
+ _(response.raw).wont_be_nil
38
38
  end
39
39
  end
@@ -8,7 +8,7 @@ describe OpenCalais::Configuration do
8
8
 
9
9
  it "can be configured" do
10
10
  TestConfig.configure do |c|
11
- c.must_be_kind_of OpenCalais::Configuration
11
+ _(c).must_be_kind_of OpenCalais::Configuration
12
12
  end
13
13
  end
14
14
  end
@@ -3,22 +3,22 @@ require File.expand_path(File.dirname(__FILE__) + '/test_helper')
3
3
  describe OpenCalais do
4
4
 
5
5
  it "has default configuration options" do
6
- OpenCalais.options.wont_be_nil
7
- OpenCalais.options[:adapter].must_equal OpenCalais::Configuration::DEFAULT_ADAPTER
6
+ _(OpenCalais.options).wont_be_nil
7
+ _(OpenCalais.options[:adapter]).must_equal OpenCalais::Configuration::DEFAULT_ADAPTER
8
8
  end
9
9
 
10
10
  it "can be configured" do
11
- OpenCalais.must_respond_to(:configure)
11
+ _(OpenCalais).must_respond_to(:configure)
12
12
 
13
- OpenCalais.api_key.must_be_nil
13
+ _(OpenCalais.api_key).must_be_nil
14
14
 
15
15
  OpenCalais.configure do |c|
16
- c.must_equal OpenCalais
16
+ _(c).must_equal OpenCalais
17
17
  c.api_key = "this is a test key"
18
18
  end
19
19
 
20
- OpenCalais.api_key.must_equal "this is a test key"
20
+ _(OpenCalais.api_key).must_equal "this is a test key"
21
21
 
22
- OpenCalais.options[:api_key].must_equal "this is a test key"
22
+ _(OpenCalais.options[:api_key]).must_equal "this is a test key"
23
23
  end
24
24
  end
@@ -8,7 +8,6 @@ if ENV['TRAVIS']
8
8
  Coveralls.wear!
9
9
  end
10
10
 
11
- require 'minitest/spec'
12
11
  require 'minitest/autorun'
13
12
 
14
13
  require 'open_calais'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: open_calais
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kuklewicz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-14 00:00:00.000000000 Z
11
+ date: 2020-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -208,8 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
208
  - !ruby/object:Gem::Version
209
209
  version: '0'
210
210
  requirements: []
211
- rubyforge_project:
212
- rubygems_version: 2.4.5
211
+ rubygems_version: 3.1.2
213
212
  signing_key:
214
213
  specification_version: 4
215
214
  summary: This is a gem to call the OpenCalais improved REST API.