cncflora_commons 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []