textrazor 0.0.6 → 0.0.7
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 +18 -3
- data/lib/textrazor.rb +17 -0
- data/lib/textrazor/client.rb +6 -0
- data/lib/textrazor/configuration.rb +9 -0
- data/lib/textrazor/request.rb +8 -1
- data/lib/textrazor/response.rb +12 -7
- data/lib/textrazor/version.rb +1 -1
- data/spec/lib/textrazor/client_spec.rb +20 -1
- data/spec/lib/textrazor/configuration_spec.rb +19 -0
- data/spec/lib/textrazor/request_spec.rb +36 -2
- data/spec/lib/textrazor/response_spec.rb +35 -0
- data/spec/lib/textrazor_spec.rb +17 -3
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17c7396459d35be185762cdd33e48422c550382f
|
4
|
+
data.tar.gz: 5162e912ea4c29574f42a291c08945d4be062f03
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e77134b8e36ed76bd5c779100cb203b2542cebd86d436d7054bb64b695f06aa1509077d811b838246cf86531cd90134562e9d6f225cf83b5e7e7d9b8ab797c50
|
7
|
+
data.tar.gz: 18b6342068846a68bd645599fb2a6c55da017320a1fe2d11cf7386ea192d4998431368cdd3acf72d360632fe9518dfe3f1b5e38af7baf774975b2df3b9c626f4
|
data/README.md
CHANGED
@@ -21,6 +21,17 @@ Or download the git repository and install it yourself as:
|
|
21
21
|
|
22
22
|
## Usage
|
23
23
|
|
24
|
+
### Configuration
|
25
|
+
|
26
|
+
By default TextRazor uses the secure SSL endpoint of the Text Razor API.
|
27
|
+
You can use the HTTP endpoint by configuring TextRazor:
|
28
|
+
|
29
|
+
```
|
30
|
+
TextRazor.configure do |config|
|
31
|
+
config.secure = false
|
32
|
+
end
|
33
|
+
```
|
34
|
+
|
24
35
|
### When the client is persisted across different requests
|
25
36
|
|
26
37
|
```
|
@@ -31,6 +42,8 @@ response = client.analyse('text to be analysed')
|
|
31
42
|
|
32
43
|
response.topics # Returns an array of TextRazor::Topic instances.
|
33
44
|
|
45
|
+
response.coarse_topics # Returns an array of TextRazor::Topic instances.
|
46
|
+
|
34
47
|
response.entities # Returns an array of TextRazor::Entity instances.
|
35
48
|
|
36
49
|
response.words # Returns an array of TextRazor::Word instances.
|
@@ -39,13 +52,15 @@ response.words # Returns an array of TextRazor::Word instances.
|
|
39
52
|
|
40
53
|
### One off requests
|
41
54
|
|
42
|
-
For making one off request to retrieve topics, entities or words you
|
43
|
-
can use the following handy method. A new client is instantiated and
|
55
|
+
For making one off request to retrieve topics, entities or words you
|
56
|
+
can use the following handy method. A new client is instantiated and
|
44
57
|
discarded everytime you make this request.
|
45
58
|
|
46
59
|
```
|
47
60
|
TextRazor.topics('api_key', 'text')
|
48
61
|
|
62
|
+
TextRazor.coarse_topics('api_key', 'text')
|
63
|
+
|
49
64
|
TextRazor.entities('api_key', 'text')
|
50
65
|
|
51
66
|
TextRazor.words('api_key', 'text')
|
@@ -54,7 +69,7 @@ TextRazor.words('api_key', 'text')
|
|
54
69
|
|
55
70
|
## Next steps
|
56
71
|
|
57
|
-
Only implemented this for topics, entities, and words. Also, implement
|
72
|
+
Only implemented this for topics, entities, and words. Also, implement
|
58
73
|
it for other information that we can retrieve from the public API.
|
59
74
|
|
60
75
|
|
data/lib/textrazor.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "textrazor/version"
|
2
|
+
require "textrazor/configuration"
|
2
3
|
require "textrazor/client"
|
3
4
|
require "textrazor/request"
|
4
5
|
require "textrazor/response"
|
@@ -20,4 +21,20 @@ module TextRazor
|
|
20
21
|
Client.words(api_key, text, options)
|
21
22
|
end
|
22
23
|
|
24
|
+
class << self
|
25
|
+
attr_writer :configuration
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.configuration
|
29
|
+
@configuration ||= Configuration.new
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.reset
|
33
|
+
@configuration = Configuration.new
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.configure
|
37
|
+
yield(configuration)
|
38
|
+
end
|
39
|
+
|
23
40
|
end
|
data/lib/textrazor/client.rb
CHANGED
@@ -31,6 +31,12 @@ module TextRazor
|
|
31
31
|
topics
|
32
32
|
end
|
33
33
|
|
34
|
+
def self.coarse_topics(api_key, text, options = {})
|
35
|
+
new(api_key, options.merge(extractors: ['topics'])).
|
36
|
+
analyse(text).
|
37
|
+
coarse_topics
|
38
|
+
end
|
39
|
+
|
34
40
|
def self.entities(api_key, text, options = {})
|
35
41
|
new(api_key, options.merge(extractors: ['entities'])).
|
36
42
|
analyse(text).
|
data/lib/textrazor/request.rb
CHANGED
@@ -4,6 +4,9 @@ module TextRazor
|
|
4
4
|
|
5
5
|
class Request
|
6
6
|
|
7
|
+
HTTP_URL = 'http://api.textrazor.com/'
|
8
|
+
HTTPS_URL = 'https://api.textrazor.com/'
|
9
|
+
|
7
10
|
OPTIONS_MAPPING = {
|
8
11
|
extractors: 'extractors',
|
9
12
|
cleanup_html: 'cleanupHTML',
|
@@ -13,7 +16,11 @@ module TextRazor
|
|
13
16
|
}
|
14
17
|
|
15
18
|
def self.post(text, options)
|
16
|
-
::RestClient.post
|
19
|
+
::RestClient.post url, build_query(text, options), accept_encoding: 'gzip'
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.url
|
23
|
+
TextRazor.configuration.secure ? HTTPS_URL : HTTP_URL
|
17
24
|
end
|
18
25
|
|
19
26
|
private
|
data/lib/textrazor/response.rb
CHANGED
@@ -22,14 +22,11 @@ module TextRazor
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def topics
|
25
|
-
|
26
|
-
|
25
|
+
@topics ||= parse_topics(raw_response["topics"])
|
26
|
+
end
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
Topic.create_from_hash(topic_hash)
|
31
|
-
end
|
32
|
-
end
|
28
|
+
def coarse_topics
|
29
|
+
@coarse_topics ||= parse_topics(raw_response["coarseTopics"])
|
33
30
|
end
|
34
31
|
|
35
32
|
def entities
|
@@ -72,6 +69,14 @@ module TextRazor
|
|
72
69
|
code == 413
|
73
70
|
end
|
74
71
|
|
72
|
+
def parse_topics(raw_topics)
|
73
|
+
return nil if raw_topics.nil?
|
74
|
+
|
75
|
+
raw_topics.map do |topic_hash|
|
76
|
+
Topic.create_from_hash(topic_hash)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
75
80
|
end
|
76
81
|
|
77
82
|
end
|
data/lib/textrazor/version.rb
CHANGED
@@ -123,7 +123,26 @@ module TextRazor
|
|
123
123
|
|
124
124
|
it "should make correct calls" do
|
125
125
|
client = OpenStruct.new
|
126
|
-
response = OpenStruct.new topics: ['topic1']
|
126
|
+
response = OpenStruct.new topics: ['topic1'], coarseTopics: ['topic1']
|
127
|
+
|
128
|
+
Client.should_receive(:new).
|
129
|
+
with(api_key, {extractors: ['topics']}).
|
130
|
+
and_return(client)
|
131
|
+
|
132
|
+
client.should_receive(:analyse).
|
133
|
+
with("text").
|
134
|
+
and_return(response)
|
135
|
+
|
136
|
+
Client.topics(api_key, 'text', {})
|
137
|
+
end
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
context ".coarse_topics" do
|
142
|
+
|
143
|
+
it "should make correct calls" do
|
144
|
+
client = OpenStruct.new
|
145
|
+
response = OpenStruct.new topics: ['topic1'], coarseTopics: ['topic1']
|
127
146
|
|
128
147
|
Client.should_receive(:new).
|
129
148
|
with(api_key, {extractors: ['topics']}).
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
module TextRazor
|
4
|
+
describe Configuration do
|
5
|
+
describe "#secure" do
|
6
|
+
it "default value is true" do
|
7
|
+
Configuration.new.secure = true
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "#secure=" do
|
12
|
+
it "can set value" do
|
13
|
+
config = Configuration.new
|
14
|
+
config.secure = false
|
15
|
+
expect(config.secure).to eq(false)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -4,6 +4,40 @@ module TextRazor
|
|
4
4
|
|
5
5
|
describe Request do
|
6
6
|
|
7
|
+
describe ".url" do
|
8
|
+
after :each do
|
9
|
+
TextRazor.reset
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:url) do
|
13
|
+
TextRazor::Request.url
|
14
|
+
end
|
15
|
+
|
16
|
+
context "with the config 'secure' set to false" do
|
17
|
+
before :each do
|
18
|
+
TextRazor.configure do |config|
|
19
|
+
config.secure = false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns the unsecured URL" do
|
24
|
+
expect(url).to eq 'http://api.textrazor.com/'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "with the config 'secure' set to true" do
|
29
|
+
before :each do
|
30
|
+
TextRazor.configure do |config|
|
31
|
+
config.secure = true
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns the unsecured URL" do
|
36
|
+
expect(url).to eq 'https://api.textrazor.com/'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
7
41
|
context ".post" do
|
8
42
|
|
9
43
|
context "default options" do
|
@@ -12,7 +46,7 @@ module TextRazor
|
|
12
46
|
options = {api_key: 'api_key', extractors: %w(entities topics words dependency-trees relations entailments)}
|
13
47
|
|
14
48
|
::RestClient.should_receive(:post).
|
15
|
-
with("
|
49
|
+
with("https://api.textrazor.com/", { "text" => 'text', "apiKey" => 'api_key',
|
16
50
|
"extractors" => "entities,topics,words,dependency-trees,relations,entailments" }, accept_encoding: 'gzip')
|
17
51
|
|
18
52
|
Request.post('text', options)
|
@@ -27,7 +61,7 @@ module TextRazor
|
|
27
61
|
language: 'fre', filter_dbpedia_types: %w(type1), filter_freebase_types: %w(type2)}
|
28
62
|
|
29
63
|
::RestClient.should_receive(:post).
|
30
|
-
with("
|
64
|
+
with("https://api.textrazor.com/", { "text" => 'text', "apiKey" => 'api_key', "extractors" => "entities,topics,words",
|
31
65
|
"cleanupHTML" => true, "languageOverride" => 'fre', "entities.filterDbpediaTypes" => "type1",
|
32
66
|
"entities.filterFreebaseTypes" => "type2" },
|
33
67
|
accept_encoding: 'gzip')
|
@@ -91,6 +91,41 @@ module TextRazor
|
|
91
91
|
|
92
92
|
end
|
93
93
|
|
94
|
+
context "#coarse_topics" do
|
95
|
+
|
96
|
+
context "if there are topics returned from api" do
|
97
|
+
|
98
|
+
it "should return topics" do
|
99
|
+
body = "\n {\"time\":\"0.013219\",\"response\":{\"language\":\"eng\",\"languageIsReliable\":true,\"coarseTopics\":[{\"id\":0,\"label\":\"Airlines \",\"wikiLink\":\"http://en.wikipedia.org/Category:Airlines_by_country\",\"score\":0.199069},{\"id\":1,\"label\":\"Companies \",\"wikiLink\":\"http://en.wikipedia.org/Category:Companies_by_year_of_establishment\",\"score\":0.136068}]}} \n"
|
100
|
+
|
101
|
+
http_response = ::OpenStruct.new code: 200, body: body
|
102
|
+
|
103
|
+
response = Response.new(http_response)
|
104
|
+
|
105
|
+
topics = response.coarse_topics
|
106
|
+
|
107
|
+
expect(topics).to_not be_nil
|
108
|
+
expect(topics.size).to eq(2)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
context "if there are no topics returned from api" do
|
114
|
+
|
115
|
+
it "should return nil" do
|
116
|
+
body = "{\"time\":\"0.013219\",\"response\":{\"language\":\"eng\",\"languageIsReliable\":true}}"
|
117
|
+
|
118
|
+
http_response = ::OpenStruct.new code: 200, body: body
|
119
|
+
|
120
|
+
response = Response.new(http_response)
|
121
|
+
|
122
|
+
expect(response.topics).to be_nil
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
126
|
+
|
127
|
+
end
|
128
|
+
|
94
129
|
context "#entities" do
|
95
130
|
|
96
131
|
context "if there are any entities returned" do
|
data/spec/lib/textrazor_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe TextRazor do
|
4
4
|
|
5
|
-
|
5
|
+
describe ".topics" do
|
6
6
|
|
7
7
|
it "should make correct calls" do
|
8
8
|
TextRazor::Client.should_receive(:topics).
|
@@ -13,7 +13,7 @@ describe TextRazor do
|
|
13
13
|
|
14
14
|
end
|
15
15
|
|
16
|
-
|
16
|
+
describe ".entities" do
|
17
17
|
|
18
18
|
it "should make correct calls" do
|
19
19
|
TextRazor::Client.should_receive(:entities).
|
@@ -24,7 +24,7 @@ describe TextRazor do
|
|
24
24
|
|
25
25
|
end
|
26
26
|
|
27
|
-
|
27
|
+
describe ".words" do
|
28
28
|
|
29
29
|
it "should make correct calls" do
|
30
30
|
TextRazor::Client.should_receive(:words).
|
@@ -35,4 +35,18 @@ describe TextRazor do
|
|
35
35
|
|
36
36
|
end
|
37
37
|
|
38
|
+
describe ".reset" do
|
39
|
+
before :each do
|
40
|
+
TextRazor.configure do |config|
|
41
|
+
config.secure = false
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
it "resets the configuration" do
|
46
|
+
TextRazor.reset
|
47
|
+
config = TextRazor.configuration
|
48
|
+
expect(config.secure).to eq(true)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
38
52
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textrazor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anuj Dutta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-08-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- Rakefile
|
110
110
|
- lib/textrazor.rb
|
111
111
|
- lib/textrazor/client.rb
|
112
|
+
- lib/textrazor/configuration.rb
|
112
113
|
- lib/textrazor/entity.rb
|
113
114
|
- lib/textrazor/request.rb
|
114
115
|
- lib/textrazor/response.rb
|
@@ -116,6 +117,7 @@ files:
|
|
116
117
|
- lib/textrazor/version.rb
|
117
118
|
- lib/textrazor/word.rb
|
118
119
|
- spec/lib/textrazor/client_spec.rb
|
120
|
+
- spec/lib/textrazor/configuration_spec.rb
|
119
121
|
- spec/lib/textrazor/entity_spec.rb
|
120
122
|
- spec/lib/textrazor/request_spec.rb
|
121
123
|
- spec/lib/textrazor/response_spec.rb
|
@@ -150,6 +152,7 @@ specification_version: 4
|
|
150
152
|
summary: An api wrapper for text razor in ruby
|
151
153
|
test_files:
|
152
154
|
- spec/lib/textrazor/client_spec.rb
|
155
|
+
- spec/lib/textrazor/configuration_spec.rb
|
153
156
|
- spec/lib/textrazor/entity_spec.rb
|
154
157
|
- spec/lib/textrazor/request_spec.rb
|
155
158
|
- spec/lib/textrazor/response_spec.rb
|