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.
Files changed (2) hide show
  1. data/lib/cncflora_commons.rb +95 -0
  2. 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: []