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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f10f112cfc9a3924c9cf8bf116021c729abe3cf
4
- data.tar.gz: 36a927f5626900143c4f73d275594054f530c182
3
+ metadata.gz: e449c82286ed12e288982e5f15bebb36520e9dad
4
+ data.tar.gz: c2c03c668c022656a79a6075bd7e69b8b9eab601
5
5
  SHA512:
6
- metadata.gz: 8df322ae6e16aed3d645a25c7b9522abdafd0a9362b8ac11091814036556a5e503cb144f8282ea0f5a676a530ebbb5c04c32566aef36af2ca884ddf57ba8f475
7
- data.tar.gz: eee296f802c0090c88a784acd22b81f05c6071de17b79e461261e5c7a522a2649bcb2efed0ceb79d505bc2ac76f1592d7451427cc2113b1c5a353d2760cf9b67
6
+ metadata.gz: f411e73d35a44359a2f8166abbe48299666b732691c2de81a59f6bacec8bf3fcb3080ec982a1c21b1e0909e52cbd22c6963abe5f67b84d25295a22006f8ca294
7
+ data.tar.gz: 36cfabae4abe35c92b4505875a277d31ad15cf637520641b2cc738a313e2e4b27c538667ad1a0626fc35a412657fb36afe851e57415ef22d58e01a598af4253b
@@ -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
- check_error response unless response.code == 200
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
- check_error response unless response.code == 200
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 = @nori.parse response.body
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 = @nori.parse response.body
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
@@ -2,12 +2,12 @@ module Version
2
2
 
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- PATCH = 1
5
+ PATCH = 2
6
6
  PRE = nil
7
7
 
8
8
  YEAR = "2015"
9
9
  MONTH = "02"
10
- DAY = "10"
10
+ DAY = "11"
11
11
 
12
12
  def self.to_s
13
13
  [MAJOR, MINOR, PATCH, PRE].compact.join(".")
@@ -10,6 +10,7 @@ class TestTwitterAPI < Minitest::Test
10
10
  end
11
11
 
12
12
  def test_extract_dde
13
- @twitter.extract_dde lang: 'en', username: 'Ann', screenname: 'bob', description: 'I am Ann from NY', tweet:'Hi there, I am Ann fromNY'
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.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-10 00:00:00.000000000 Z
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