esnek 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.
- data/README.rdoc +14 -1
- data/lib/esnek/base.rb +28 -5
- data/lib/esnek/version.rb +1 -1
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -13,9 +13,22 @@ For the installation of elasticsearch please follow the guides at http://www.ela
|
|
13
13
|
== Usage:
|
14
14
|
|
15
15
|
require 'esnek'
|
16
|
-
es = Esnek.new('http://localhost:9200')
|
16
|
+
es = Esnek.new('http://localhost:9200',true)
|
17
|
+
|
18
|
+
#curl -XGET 'http://localhost:9200/_cluster/state'
|
17
19
|
es._cluster.state.get
|
18
20
|
|
21
|
+
#curl -XGET http://localhost:9200/twitter/tweet/_search?q=user:kimchy
|
22
|
+
es.twitter.tweet._search(:q => 'good').get
|
23
|
+
|
24
|
+
#curl -XGET 'http://localhost:9200/twitter/tweet/1'
|
25
|
+
es.twitter.tweet.__1.get
|
26
|
+
|
27
|
+
#curl -XPUT http://localhost:9200/twitter/tweet/2 -d '{ "user": "kimchy", "post_date": "2009-11-15T14:12:12", "message": "You know, for Search"}'
|
28
|
+
es.twitter.tweet.__2.put do
|
29
|
+
{"user" => "alper", "post_date" => "2011-11-15T14:12:12", "message" => "For esnek"}
|
30
|
+
end
|
31
|
+
|
19
32
|
== Notes
|
20
33
|
|
21
34
|
Esnek was initially developed using Redcar under Ubuntu Linux 10.10.
|
data/lib/esnek/base.rb
CHANGED
@@ -2,23 +2,46 @@ require 'rest_client'
|
|
2
2
|
require 'json'
|
3
3
|
require 'ostruct'
|
4
4
|
|
5
|
+
# _Esnek_ provides a quick Ruby interface for JSON APIs, such as _ElasticSearch_ (http://www.elasticsearch.org); a scalable, fast, distributed,
|
6
|
+
# highly-available, real time search RESTful search engine communicating by JSON over HTTP, based on _Lucene_ (http://lucene.apache.org).
|
5
7
|
class Esnek
|
6
8
|
attr_accessor :chain, :url_root
|
7
|
-
def initialize(url_root)
|
9
|
+
def initialize(url_root, debug=false)
|
8
10
|
@url_root = url_root
|
11
|
+
@debug = debug
|
9
12
|
@chain = []
|
10
13
|
end
|
11
14
|
|
12
15
|
def method_missing(method_sym, *args, &block)
|
13
16
|
if [:get, :put, :post, :delete].include?(method_sym)
|
14
|
-
|
15
|
-
|
17
|
+
@chain << {:method => nil, :arg => (args.empty? ? {} : args[0]) }
|
18
|
+
url = @url_root.gsub(/\/$/,'') + '/' + @chain.map{|e| e[:method]}.compact.join('/')
|
19
|
+
params = @chain.inject({}){|s,e| s.merge!(e[:arg] || {}) if e[:arg].is_a?(Hash)}
|
20
|
+
if block_given?
|
21
|
+
data = block.call.to_json rescue nil
|
22
|
+
end
|
23
|
+
if @debug
|
24
|
+
puts url
|
25
|
+
puts data.inspect
|
26
|
+
puts @chain.inspect
|
27
|
+
end
|
16
28
|
@chain = []
|
17
|
-
|
29
|
+
|
30
|
+
resp = block_given? ? RestClient.send(method_sym, url, data, :params => params) :
|
31
|
+
RestClient.send(method_sym, url,:params => params)
|
32
|
+
|
33
|
+
if resp.headers[:content_type].include?('application/json')
|
34
|
+
OpenStruct.new JSON.parse resp
|
35
|
+
else
|
36
|
+
resp
|
37
|
+
end
|
18
38
|
else
|
19
|
-
@chain << {:method => method_sym, :arg => args
|
39
|
+
@chain << {:method => method_sym.to_s.gsub(/^__/,''), :arg => (args.empty? ? {} : args[0]) }
|
20
40
|
self
|
21
41
|
end
|
42
|
+
rescue
|
43
|
+
@chain = []
|
44
|
+
raise $!
|
22
45
|
end
|
23
46
|
|
24
47
|
def respond_to?(method_sym)
|
data/lib/esnek/version.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ESNEK_VERSION='0.1.
|
1
|
+
ESNEK_VERSION='0.1.2'
|
metadata
CHANGED