vidalo 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/vidalo/api/get.rb +37 -0
- data/lib/vidalo/api/search.rb +49 -0
- data/lib/vidalo/connection.rb +23 -0
- data/lib/vidalo/parser.rb +22 -0
- data/lib/vidalo.rb +1 -0
- metadata +48 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ec108eae52b5747eee1c9274e0f12b622db0b375
|
4
|
+
data.tar.gz: 5ef829bdc878d526837c77f57cdb4a30e32d2294
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e5af7fb67661b82946e421a62a545eacc6b2863f939c0a0189f6af5ae104f4a147da3851ad191e1359260cb9d4ce1a0e0858296ea52b5fbf7d3732d68d4ea936
|
7
|
+
data.tar.gz: b5ace2570953e1c71a2759dc65ed891904446a70d406be6f342e0d7e63bb975db6b135a59d6084fd51eaaf4a02a6ca99c99c44242c17f1cbdb0ae1636abfe4ac
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Vidalo
|
2
|
+
module API
|
3
|
+
module Get
|
4
|
+
# Return Nokogiri object
|
5
|
+
def send_api_request(keyword, params = {})
|
6
|
+
request = @conn.get do |req|
|
7
|
+
req.url(keyword)
|
8
|
+
unless params.empty?
|
9
|
+
params.each do |param_key, param_value|
|
10
|
+
req.params[param_key] = param_value
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
unless request.status == 200
|
16
|
+
raise %{
|
17
|
+
|
18
|
+
Seems there is a problem when connect to Vidal server.
|
19
|
+
The HTTP request status code is: #{request.status}.
|
20
|
+
|
21
|
+
You may want to test the connection with the URL below in your browser:
|
22
|
+
#{request.env.url}
|
23
|
+
}
|
24
|
+
else
|
25
|
+
Nokogiri::XML(request.body).errors.empty? ?
|
26
|
+
Nokogiri::XML(request.body).remove_namespaces!.at('feed') :
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Return number of total products
|
32
|
+
def get_number_of_products
|
33
|
+
send_api_request('products', { 'start-page' => 1, 'page-size' => 1 }).at('totalResults').text.to_i
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Vidalo
|
2
|
+
module API
|
3
|
+
module Search
|
4
|
+
# Get result of a set of Nokogiri Objects
|
5
|
+
#
|
6
|
+
# @params type [String], query [String], start_page [Fixnum], page_size [Fixnum]
|
7
|
+
# @return [Array]
|
8
|
+
def search(type: nil, query: nil, start_page: 1, page_size: 10)
|
9
|
+
if type.nil?
|
10
|
+
raise ArgumentError.new 'Error: You need to define "type" at least (eg. "products")'
|
11
|
+
end
|
12
|
+
@res = send_api_request(type, {'q' => query, 'start-page' => start_page, 'page-size' => page_size })
|
13
|
+
@res.search('entry').to_a if @res
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
# Get result of a product's information
|
18
|
+
#
|
19
|
+
# @params id[Fixnum], aggregate[Array[String]], all_info[TrueClass]
|
20
|
+
# @return [Nokogiri]
|
21
|
+
#
|
22
|
+
# Example:
|
23
|
+
# api.search_product(id: 45, aggregate: ['UCD'])
|
24
|
+
# api.search_product(id: 45, all_info: true)
|
25
|
+
#
|
26
|
+
def search_product(id: nil, aggregate: [], all_info: nil)
|
27
|
+
raise %{
|
28
|
+
|
29
|
+
Need a Vidal Product ID.
|
30
|
+
|
31
|
+
} unless id.is_a? Fixnum || id.to_i.to_s == id
|
32
|
+
aggregate = %w(
|
33
|
+
molecules
|
34
|
+
indications
|
35
|
+
ald_detail
|
36
|
+
smr_asmr
|
37
|
+
atc_classification
|
38
|
+
VIDAL_CLASSIFICATION
|
39
|
+
product_range
|
40
|
+
document
|
41
|
+
reco
|
42
|
+
UCDS
|
43
|
+
UNITS
|
44
|
+
) if all_info == true
|
45
|
+
@res = send_api_request("product/#{id}", { 'aggregate' => aggregate })
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'vidalo/parser'
|
2
|
+
require 'vidalo/api/get'
|
3
|
+
require 'vidalo/api/search'
|
4
|
+
VIDAL_API_URL = 'http://apirest-dev.vidal.fr/rest/api/'
|
5
|
+
|
6
|
+
module Vidalo
|
7
|
+
class Connection
|
8
|
+
include Vidalo::API::Get
|
9
|
+
include Vidalo::API::Search
|
10
|
+
include Vidalo::Parser
|
11
|
+
attr_reader :app_id, :app_key
|
12
|
+
|
13
|
+
def initialize(app_id, app_key)
|
14
|
+
@app_id = app_id
|
15
|
+
@app_key = app_key
|
16
|
+
@conn = Faraday.new(url: VIDAL_API_URL,
|
17
|
+
request: { params_encoder: Faraday::FlatParamsEncoder },
|
18
|
+
params: { app_id: app_id, app_key: app_key }) do |faraday|
|
19
|
+
faraday.adapter Faraday.default_adapter
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Vidalo
|
2
|
+
module Parser
|
3
|
+
# Return string
|
4
|
+
def get_inner_text(type: nil, id: nil, node: nil)
|
5
|
+
if type.nil? || id.nil? || node.nil?
|
6
|
+
raise ArgumentError.new 'Error: You need to define "type", "id" and node name - eg. get_inner_text(type: "package", id: 5355, node: "title")'
|
7
|
+
end
|
8
|
+
result = send_api_request("#{type}/#{id}")
|
9
|
+
result ?
|
10
|
+
get_node_value(result.at('entry').at(node)) :
|
11
|
+
""
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
# Return string
|
16
|
+
def get_node_value(node)
|
17
|
+
node ?
|
18
|
+
node.text :
|
19
|
+
""
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/vidalo.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'vidalo/connection'
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vidalo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Xiaofan Wu
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-23 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A gem for using Vidal API easier
|
14
|
+
email: xfanwu@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/vidalo.rb
|
20
|
+
- lib/vidalo/api/get.rb
|
21
|
+
- lib/vidalo/api/search.rb
|
22
|
+
- lib/vidalo/connection.rb
|
23
|
+
- lib/vidalo/parser.rb
|
24
|
+
homepage: http://rubygems.org/gems/vidalo
|
25
|
+
licenses:
|
26
|
+
- MIT
|
27
|
+
metadata: {}
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 2.4.8
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: A gem for using Vidal API easier
|
48
|
+
test_files: []
|