esnek 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.rdoc +26 -40
  2. data/lib/esnek/version.rb +1 -1
  3. metadata +6 -6
data/README.rdoc CHANGED
@@ -1,42 +1,35 @@
1
1
  = Esnek
2
2
 
3
3
  _Esnek_ provides a minimalistic Ruby interface for JSON APIs, such as ElasticSearch, Google APIs, Facebook Graph API..
4
-
5
- Esnek is mainly developed for _ElasticSearch_ in mind. ElasticSearch (http://www.elasticsearch.org)
6
- is a scalable, fast, distributed, highly-available, real time search RESTful search engine communicating
7
- by JSON over HTTP, based on _Lucene_ (http://lucene.apache.org).
4
+ Esnek is initially developed for _ElasticSearch_ http://www.elasticsearch.org which is based on _Lucene_ http://lucene.apache.org .
8
5
 
9
6
  == Installation:
10
7
 
11
- gem install esnek
12
-
13
- Esnek is under heavy development in april 2011, so use "gem update" frequently.
8
+ gem install esnek # In april-june 2011, under development so use "gem update" frequently.
14
9
 
15
- For the installation of elasticsearch please follow the guides at http://www.elasticsearch.org
16
-
17
10
  == Quick Start
18
11
 
19
12
  === ElasticSearch
20
13
 
21
- To use esnek just instantiate Esnek with the base API URL.
14
+ To install ElasticSearch please follow the guides at http://www.elasticsearch.org.
15
+ To use esnek just instantiate Esnek with the base API URL.
22
16
  require 'esnek'
23
17
  es = Esnek.new('http://localhost:9200')
24
18
 
25
- For example assuming elastic search is running at port 9200 on your localhost, the following code gets the state of the cluster for Elastic Search
19
+ Assuming Elastic Search is running at port 9200 on your localhost, the following code gets the state of the cluster:
26
20
 
27
21
  #curl -XGET 'http://localhost:9200/_cluster/state'
28
22
  es._cluster.state.get
29
23
 
30
-
31
- You may pass options as a hash parameter for each directory in your URL.
24
+ You may pass options as a hash parameter for each directory in your URL:
32
25
  #curl -XGET http://localhost:9200/twitter/tweet/_search?q=user:kimchy
33
26
  es.twitter.tweet._search(:q => 'good').get
34
27
 
35
- For literals such as 1, use __1; esnek simply omits __ (2 underscores)
28
+ For literals such as 1, use __1; esnek simply omits __ (2 underscores):
36
29
  #curl -XGET 'http://localhost:9200/twitter/tweet/1'
37
30
  es.twitter.tweet.__1.get
38
31
 
39
- In order to post a JSON data simply pass a block (do...end)
32
+ In order to post a JSON data simply pass a block (do...end) which returns a hash:
40
33
  #curl -XPUT http://localhost:9200/twitter/tweet/2 -d '{
41
34
  # "user": "kimchy", "post_date": "2009-11-15T14:12:12", "message": "You know, for Search"
42
35
  # }'
@@ -63,25 +56,24 @@ Notice that since "http://www.wsirussia.ru" is an invalid ruby method name, we u
63
56
  puts res.shares
64
57
 
65
58
  == Advanced
66
- With esnek just make a chained method call where each method is a directory in the URL
67
- for your specific JSON API and end append a final method for HTTP verb; get, post, put or delete.
59
+ With Esnek you make a chained method call where each method is a directory in the URL
60
+ for your target JSON API. You finish by appending a method for the HTTP verb; get, post, put or delete.
68
61
 
69
62
  === General Usage
70
- require 'esnek'
71
- Choose any JSON over HTTP API and identify the base url such as https://www.googleapis.com
63
+ require 'esnek'
64
+ Choose any JSON over HTTP API and identify the base url:
72
65
 
73
66
  gapi = Esnek.new('https://www.googleapis.com')
74
67
 
75
- Form a chained method call where each directory in the URL becomes a method and dont forget that
76
- your method chain must end with get, post, put or delete.
68
+ Form a chained method call and make sure you end with get, post, put or delete.
77
69
 
78
70
  gapi.language.translate.v2.get :q => "hello world", :source => :en, :target => :tr, :key => INSERT_YOUR_KEY
79
71
 
80
- Any query string should be given as a hash to any method in the method call, the following is valid too.
72
+ Any query string should be given as a hash parameter to any method in the method chain.
81
73
 
82
74
  gapi.language.translate.v2(:key => INSERT_YOUR_KEY).get(:q => "hello world", :source => :en, :target => :tr)
83
75
 
84
- If you face any portion of the URL which cannot be a valid Ruby method name use send(:'!1invalid_method')
76
+ If you face any portion of the URL which cannot be a valid Ruby method name, use send(:'!1invalid_method')
85
77
 
86
78
  res = fb.send(:"http://www.wsirussia.ru").get
87
79
 
@@ -89,37 +81,31 @@ Alternatively you may prefix digits with double underscore __
89
81
 
90
82
  es.twitter.tweet.__1.get
91
83
 
92
- If you append a block and pass a hash, the hash is converted into a JSON and posted as data.
84
+ If you append a block and the block returns a hash, the hash is converted into a JSON and posted as data.
93
85
 
94
86
  es.twitter.tweet.__2.put do
95
87
  {"user" => "alper", "post_date" => "2011-11-15T14:12:12", "message" => "For esnek"}
96
88
  end
97
89
 
98
90
  === Return Values
99
- Esnek simply converts the returned JSON into an Ostruct ruby object.
91
+ Esnek converts the returned JSON into an Ostruct object.
100
92
 
101
- res.my_field
102
- res.table[:my_field] # alternative form for field names such as .id which already exist in the base object
103
-
104
- Notice that Ostruct converts only the first level hash keys into object attributes.
105
- The deeper hashes are intact and should be accessed as Hash.
93
+ res.my_field # access as if it is an object's attrribute
94
+ res.table[:my_field] # For field names such as "id", you may use the "table" attribute.
106
95
 
107
- Consult your specific API documentation on how the return value is structured
96
+ Notice that Ostruct converts only the first level hash keys into Ostruct object attributes.
97
+ Consult your specific API documentation on how the return value is structured.
108
98
 
109
99
  === Proxy
110
- Esnek is based on restclient and some of the settings from Restclient apply to esnek to.
111
- Esnek will use the proxy specified by RestClient.proxy:
100
+ Esnek is based on Restclient, so some of the settings of Restclient apply to Esnek too.
101
+ For example Esnek will use the proxy specified by RestClient.proxy:
112
102
 
113
- RestClient.proxy = "http://proxy.example.com/"
114
- or the proxy url is set in an environment variable
115
- RestClient.proxy = ENV['http_proxy']
103
+ RestClient.proxy = "http://proxy.example.com/" # or =ENV['http_proxy']
116
104
 
117
105
  === Logging
118
106
 
119
- To enable logging the calls made to the API, you may
120
-
121
- * set RestClient.log with a ruby Logger
122
- * or set an environment variable to avoid modifying the code (in this case you can use a file name, "stdout" or "stderr"):
107
+ To enable logging the calls made to the API, you may set RestClient.log with a ruby Logger or set an environment
108
+ variable to avoid modifying the code (in this case you can use a file name, "stdout" or "stderr"):
123
109
 
124
110
  $ RESTCLIENT_LOG=stdout path/to/my/program
125
111
  $ RESTCLIENT_LOG=stdout irb
data/lib/esnek/version.rb CHANGED
@@ -1 +1 @@
1
- ESNEK_VERSION='0.2.5'
1
+ ESNEK_VERSION='0.2.6'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: esnek
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 2
9
- - 5
10
- version: 0.2.5
9
+ - 6
10
+ version: 0.2.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alper Akgun
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-27 00:00:00 Z
18
+ date: 2011-11-06 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: json
@@ -23,7 +23,7 @@ dependencies:
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
- - - ~>
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
28
  hash: 1
29
29
  segments:
@@ -39,7 +39,7 @@ dependencies:
39
39
  requirement: &id002 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
- - - ~>
42
+ - - ">="
43
43
  - !ruby/object:Gem::Version
44
44
  hash: 13
45
45
  segments: