cncflora_commons 0.0.1
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.
- data/lib/cncflora_commons.rb +95 -0
- metadata +63 -0
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'json'
|
3
|
+
require 'net/http'
|
4
|
+
|
5
|
+
def http_get(uri)
|
6
|
+
JSON.parse(Net::HTTP.get(URI(uri)))
|
7
|
+
end
|
8
|
+
|
9
|
+
def http_post(uri,doc)
|
10
|
+
uri = URI.parse(uri)
|
11
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
12
|
+
|
13
|
+
if doc.class == Hash
|
14
|
+
header = {'Content-Type'=> 'application/json'}
|
15
|
+
elsif doc.class == String
|
16
|
+
header = {'Content-Type'=> 'application/x-www-form-urlencoded'}
|
17
|
+
end
|
18
|
+
|
19
|
+
request = Net::HTTP::Post.new(uri.request_uri, header)
|
20
|
+
|
21
|
+
if doc.class == Hash
|
22
|
+
request.body = doc.to_json
|
23
|
+
elsif doc.class == String
|
24
|
+
request.body = doc
|
25
|
+
end
|
26
|
+
|
27
|
+
response = http.request(request)
|
28
|
+
JSON.parse(response.body)
|
29
|
+
end
|
30
|
+
|
31
|
+
def http_put(uri,doc)
|
32
|
+
uri = URI.parse(uri)
|
33
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
34
|
+
|
35
|
+
if doc.class == Hash
|
36
|
+
header = {'Content-Type'=> 'application/json'}
|
37
|
+
elsif doc.class == String
|
38
|
+
header = {'Content-Type'=> 'application/x-www-form-urlencoded'}
|
39
|
+
end
|
40
|
+
|
41
|
+
request = Net::HTTP::Put.new(uri.request_uri, header)
|
42
|
+
|
43
|
+
if doc.class == Hash
|
44
|
+
request.body = doc.to_json
|
45
|
+
elsif doc.class == String
|
46
|
+
request.body = doc
|
47
|
+
end
|
48
|
+
|
49
|
+
response = http.request(request)
|
50
|
+
JSON.parse(response.body)
|
51
|
+
end
|
52
|
+
|
53
|
+
def http_delete(uri)
|
54
|
+
uri = URI.parse(uri)
|
55
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
56
|
+
request = Net::HTTP::Delete.new(uri.request_uri)
|
57
|
+
response = http.request(request)
|
58
|
+
JSON.parse(response.body)
|
59
|
+
end
|
60
|
+
|
61
|
+
def search(index,query)
|
62
|
+
query="scientificName:'Aphelandra longiflora'" unless query != nil && query.length > 0
|
63
|
+
result = []
|
64
|
+
r = http_get("#{settings.elasticsearch}/#{index}/_search?size=999&q=#{URI.encode(query)}")
|
65
|
+
r['hits']['hits'].each{|hit|
|
66
|
+
result.push(hit["_source"])
|
67
|
+
}
|
68
|
+
result
|
69
|
+
end
|
70
|
+
|
71
|
+
def flatten(obj)
|
72
|
+
flat = {}
|
73
|
+
if obj["dir"] then
|
74
|
+
obj["nodes"].each { |n|
|
75
|
+
flat = flat.merge(flatten(n))
|
76
|
+
}
|
77
|
+
else
|
78
|
+
key = obj["key"].gsub("/","_").gsub("-","_")
|
79
|
+
flat[key[1..key.length].to_sym]=obj["value"]
|
80
|
+
end
|
81
|
+
flat
|
82
|
+
end
|
83
|
+
|
84
|
+
def etcd2config(server)
|
85
|
+
config = flatten( http_get("#{server}/?recursive=true")["node"] )
|
86
|
+
config
|
87
|
+
end
|
88
|
+
|
89
|
+
def etcd2settings(server)
|
90
|
+
config = etcd2config(server)
|
91
|
+
config.keys.each { |key| set key, config[key] }
|
92
|
+
set :config, config
|
93
|
+
config
|
94
|
+
end
|
95
|
+
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cncflora_commons
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Diogo Silva
|
9
|
+
- Bruno Giminiani
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2014-05-23 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :development
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
description: HTTP, etcd...
|
32
|
+
email: diogo@cncflora.jbrj.gov.br
|
33
|
+
executables: []
|
34
|
+
extensions: []
|
35
|
+
extra_rdoc_files: []
|
36
|
+
files:
|
37
|
+
- lib/cncflora_commons.rb
|
38
|
+
homepage: https://github.com/CNCFlora/cncflora-commons
|
39
|
+
licenses:
|
40
|
+
- Apache License 2.0
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options: []
|
43
|
+
require_paths:
|
44
|
+
- lib
|
45
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '0'
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
requirements: []
|
58
|
+
rubyforge_project:
|
59
|
+
rubygems_version: 1.8.23
|
60
|
+
signing_key:
|
61
|
+
specification_version: 3
|
62
|
+
summary: CNCFlora common functions
|
63
|
+
test_files: []
|