ispras-api 0.1.1 → 0.1.2
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 +24 -0
- data/lib/ispras-api/ispras_api.rb +2 -6
- data/lib/ispras-api/texterra_api.rb +4 -2
- data/lib/ispras-api/twitter_api.rb +4 -2
- data/lib/ispras-api/version.rb +2 -2
- data/test/test_twitter_api.rb +2 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e449c82286ed12e288982e5f15bebb36520e9dad
|
4
|
+
data.tar.gz: c2c03c668c022656a79a6075bd7e69b8b9eab601
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f411e73d35a44359a2f8166abbe48299666b732691c2de81a59f6bacec8bf3fcb3080ec982a1c21b1e0909e52cbd22c6963abe5f67b84d25295a22006f8ca294
|
7
|
+
data.tar.gz: 36cfabae4abe35c92b4505875a277d31ad15cf637520641b2cc738a313e2e4b27c538667ad1a0626fc35a412657fb36afe851e57415ef22d58e01a598af4253b
|
data/README.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Ruby wrapper for [ISPRAS API](https://api.ispras.ru/)
|
2
|
+
|
3
|
+
## Installation
|
4
|
+
It's simple gem, so ```gem install ispras-api``` and adding ```gem 'ipras-api'``` should work.
|
5
|
+
|
6
|
+
## Usage
|
7
|
+
|
8
|
+
Currently wraps *texterra* and *twitter-nlp* services, so apikey for any of those is needed
|
9
|
+
|
10
|
+
Code should look similar to this:
|
11
|
+
```ruby
|
12
|
+
require 'ispras-api'
|
13
|
+
|
14
|
+
texterra = TexterraAPI.new 'APIKEY'
|
15
|
+
text = 'Apple today updated iMac to bring numerous high-performance enhancements to the leading all-in-one desktop.'
|
16
|
+
|
17
|
+
key_concepts = texterra.key_concepts text
|
18
|
+
puts key_concepts[0]
|
19
|
+
# > {:id=>"21492980", :kbname=>"enwiki", :title=>"IMac", :weight=>"0.35956284403800964"}
|
20
|
+
|
21
|
+
wiki_url = texterra.get_attributes('21492980:enwiki', 'url(en)')[:elements][:object][:attributes][:i_attribute][:url]
|
22
|
+
# > "http://en.m.wikipedia.org/wiki/IMac"
|
23
|
+
```
|
24
|
+
Don't forget to check [REST documentation](https://api.ispras.ru/dev/rest)
|
@@ -6,13 +6,11 @@ class IsprasAPI
|
|
6
6
|
include HTTParty
|
7
7
|
# debug_output $stdout
|
8
8
|
ROOT_URL = 'api.ispras.ru/%s/%s'
|
9
|
-
parser Proc.new { |data| data }
|
10
9
|
|
11
10
|
def initialize(key, name, ver)
|
12
11
|
if key && key.size == 40
|
13
12
|
self.class.base_uri ROOT_URL % [name, ver]
|
14
13
|
self.class.default_params apikey: key
|
15
|
-
@nori = Nori.new(parser: :rexml, convert_tags_to: lambda { |tag| tag.snakecase.to_sym })
|
16
14
|
else
|
17
15
|
raise ApiError, 'Please provide proper apikey'
|
18
16
|
end
|
@@ -21,15 +19,13 @@ class IsprasAPI
|
|
21
19
|
def GET(path='', params={})
|
22
20
|
options = { query: params }
|
23
21
|
response = self.class.get "/#{path}", options
|
24
|
-
|
25
|
-
hash = @nori.parse response.body
|
22
|
+
response.code == 200 ? response.parsed_response : check_error(response)
|
26
23
|
end
|
27
24
|
|
28
25
|
def POST(path='', params={}, form={})
|
29
26
|
options = { query: params, body: form }
|
30
27
|
response = self.class.post "/#{path}", options
|
31
|
-
|
32
|
-
hash = @nori.parse response.body
|
28
|
+
response.code == 200 ? response.parsed_response : check_error(response)
|
33
29
|
end
|
34
30
|
|
35
31
|
private
|
@@ -7,8 +7,10 @@ class TexterraAPI < IsprasAPI
|
|
7
7
|
# Note that NLP methods return annotations only
|
8
8
|
include TexterraNLP, TexterraKBM
|
9
9
|
disable_rails_query_string_format
|
10
|
+
nori = Nori.new(parser: :rexml, convert_tags_to: lambda { |tag| tag.snakecase.to_sym })
|
11
|
+
parser Proc.new { |data| nori.parse data }
|
10
12
|
|
11
|
-
def initialize(key, name, ver)
|
13
|
+
def initialize(key, name=nil, ver=nil)
|
12
14
|
name='texterra' if name.nil? || name.empty?
|
13
15
|
ver='v3.1' if ver.nil? || ver.empty?
|
14
16
|
super(key, name, ver)
|
@@ -78,7 +80,7 @@ class TexterraAPI < IsprasAPI
|
|
78
80
|
private
|
79
81
|
|
80
82
|
def check_error(response)
|
81
|
-
hash =
|
83
|
+
hash = response.parsed_response
|
82
84
|
er_node = hash[:html][:body][:p].detect { |node| node.is_a? Hash and node[:b] == 'root cause' }
|
83
85
|
raise ApiError, er_node[:pre].gsub(/ru\.ispras.*:\s*/, '')
|
84
86
|
end
|
@@ -3,8 +3,10 @@ require_relative './ispras_api'
|
|
3
3
|
class TwitterAPI < IsprasAPI
|
4
4
|
#This class provides methods to work with Twitter NLP REST via OpenAPI
|
5
5
|
disable_rails_query_string_format
|
6
|
+
nori = Nori.new(parser: :rexml, convert_tags_to: lambda { |tag| tag.snakecase.to_sym })
|
7
|
+
parser Proc.new { |data| nori.parse data }
|
6
8
|
|
7
|
-
def initialize(key, name, ver)
|
9
|
+
def initialize(key, name=nil, ver=nil)
|
8
10
|
name='twitter-nlp' if name.nil? || name.empty?
|
9
11
|
ver='1.0' if ver.nil? || ver.empty?
|
10
12
|
super(key, name, ver)
|
@@ -31,7 +33,7 @@ class TwitterAPI < IsprasAPI
|
|
31
33
|
private
|
32
34
|
|
33
35
|
def check_error(response)
|
34
|
-
hash =
|
36
|
+
hash = response.parsed_response
|
35
37
|
er_node = hash[:html][:body][:p].detect { |node| node.is_a? Hash and node[:b] == 'root cause' }
|
36
38
|
raise ApiError, er_node[:pre].gsub(/ru\.ispras.*:\s*/, '')
|
37
39
|
end
|
data/lib/ispras-api/version.rb
CHANGED
data/test/test_twitter_api.rb
CHANGED
@@ -10,6 +10,7 @@ class TestTwitterAPI < Minitest::Test
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def test_extract_dde
|
13
|
-
|
13
|
+
req = { lang: 'en', username: 'Ann', screenname: 'bob', description: 'I am Ann from NY', tweet:'Hi there, I am Ann fromNY' }
|
14
|
+
assert_instance_of Hash, @twitter.extract_dde(req)
|
14
15
|
end
|
15
16
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ispras-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexey Laguta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -87,6 +87,7 @@ extensions: []
|
|
87
87
|
extra_rdoc_files: []
|
88
88
|
files:
|
89
89
|
- ".gitignore"
|
90
|
+
- README.md
|
90
91
|
- Rakefile
|
91
92
|
- ispras-api.gemspec
|
92
93
|
- lib/ispras-api.rb
|