esnek 0.2.4 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 9153314d5f750f06fcc7b1c72f64ddcf1f649b77c968bd5c08bae9d5ab73c479
4
+ data.tar.gz: aced97a3519743c985288a3f6eac1411d240979184f53fcee24dfcd204a8bd22
5
+ SHA512:
6
+ metadata.gz: e1dc1335259ec7c875a155df37ad8bfe518f9b5e3990075ecb36c9f99552448762047c8026cd326b027f915715849318d12359c3b89e261240d215febc723585
7
+ data.tar.gz: 6044087de7c8abbb1dc523473da0d36a06430b0650d96714fdd8b81cce8c5d9ad7fe8c55c2bd72ed8e98cfce3db677b11a24774c1792755bba8018401c8eed53
data/.gitignore ADDED
@@ -0,0 +1,16 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ *.gem
15
+ mkmf.log
16
+ .redcar
data/AUTHORS CHANGED
@@ -1,5 +1,3 @@
1
1
  Esnek was initialled developed and hosted by Sayarus.
2
2
 
3
3
  Alper Akgun: initial developer
4
-
5
-
data/CHANGES CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  == Expected
4
4
 
5
+ == 0.5.1
6
+ * Verify SSL 1 support
7
+
8
+ == 0.4.x
9
+ * MIT License adopted
10
+
11
+ == 0.4.x
12
+ * hash post data in the block are now converted into a form post data
13
+ * oauth support with an access token through restclient
14
+ * json_return option controls jsonifaction of return values
15
+
16
+ == 0.3.x
17
+ * bug fixed for content type inclusions
18
+ * custom headers are supported
19
+ * Non Json data payloads are now supported
20
+
5
21
  == 0.2.x
6
22
  * tests with elasticsearch API
7
23
  * Authentication mechanisms
@@ -15,5 +31,3 @@
15
31
  == 0.0.x
16
32
  * the very initial release
17
33
 
18
-
19
-
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ require './lib/esnek/version'
2
+ RUBY_ENGINE = 'ruby' unless defined? RUBY_ENGINE
3
+ source 'https://rubygems.org' unless ENV['QUICK']
4
+ gemspec
5
+
6
+ gem 'rake'
7
+ gem 'rest-client'
8
+ gem 'json'
9
+ gem "minitest", "~> 4.0"
10
+ gem 'rdoc'
data/LICENSE CHANGED
@@ -1,13 +1,19 @@
1
- Esnek is free software: you can redistribute it and/or modify
2
- it under the terms of the GNU General Public License as published by
3
- the Free Software Foundation, either version 3 of the License, or
4
- (at your option) any later version.
1
+ Copyright (c) Alper Akgun
5
2
 
6
- Devrinim is distributed in the hope that it will be useful,
7
- but WITHOUT ANY WARRANTY; without even the implied warranty of
8
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9
- GNU General Public License for more details.
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
10
9
 
11
- You should have received a copy of the GNU General Public License
12
- along with Devrinim. If not, see <http://www.gnu.org/licenses/>.
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
13
12
 
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/README.rdoc CHANGED
@@ -1,42 +1,47 @@
1
1
  = Esnek
2
2
 
3
- _Esnek_ provides a minimalistic Ruby interface for JSON APIs, such as ElasticSearch, Google APIs, Facebook Graph API..
3
+ _Esnek_ is a minimalistic client for any Web API in general and no API
4
+ in particular. Esnek has been used in production for a few years already.
5
+ ElasticSearch, Google APIs, Facebook Graph API, LinkedIn, Facebook,
6
+ Twitter OAuth login integrations.
4
7
 
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).
8
8
 
9
9
  == Installation:
10
10
 
11
- gem install esnek
11
+ gem install esnek
12
12
 
13
- Esnek is under heavy development in april 2011, so use "gem update" frequently.
14
-
15
- For the installation of elasticsearch please follow the guides at http://www.elasticsearch.org
16
-
17
13
  == Quick Start
18
14
 
15
+ ===
16
+ require 'esnek'
17
+ esnek = Esnek.new('https://jsonplaceholder.typicode.com/')
18
+ todo = esnek.todos.__1.get
19
+ puts todo.id
20
+ puts todo.inspect
21
+
22
+ === Facebook Graph API
23
+ require 'esnek'
24
+
19
25
  === ElasticSearch
20
26
 
21
- To use esnek just instantiate Esnek with the base API URL.
27
+ To use esnek just instantiate Esnek with the base API URL.
22
28
  require 'esnek'
23
29
  es = Esnek.new('http://localhost:9200')
24
30
 
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
31
+ Assuming Elastic Search is running at port 9200 on your localhost, the following code gets the state of the cluster:
26
32
 
27
33
  #curl -XGET 'http://localhost:9200/_cluster/state'
28
34
  es._cluster.state.get
29
35
 
30
-
31
- You may pass options as a hash parameter for each directory in your URL.
36
+ You may pass options as a hash parameter for each directory in your URL:
32
37
  #curl -XGET http://localhost:9200/twitter/tweet/_search?q=user:kimchy
33
38
  es.twitter.tweet._search(:q => 'good').get
34
39
 
35
- For literals such as 1, use __1; esnek simply omits __ (2 underscores)
40
+ For literals such as 1, use __1; esnek simply omits __ (2 underscores):
36
41
  #curl -XGET 'http://localhost:9200/twitter/tweet/1'
37
42
  es.twitter.tweet.__1.get
38
43
 
39
- In order to post a JSON data simply pass a block (do...end)
44
+ In order to post a JSON data simply pass a block (do...end) which returns a hash:
40
45
  #curl -XPUT http://localhost:9200/twitter/tweet/2 -d '{
41
46
  # "user": "kimchy", "post_date": "2009-11-15T14:12:12", "message": "You know, for Search"
42
47
  # }'
@@ -44,44 +49,26 @@ In order to post a JSON data simply pass a block (do...end)
44
49
  {"user" => "alper", "post_date" => "2011-11-15T14:12:12", "message" => "For esnek"}
45
50
  end
46
51
 
47
- === Google Translate API
48
- require 'esnek'
49
- gapi = Esnek.new('https://www.googleapis.com')
50
- gapi.language.translate.v2.get :q => "hello world", :source => :en, :target => :tr, :key => INSERT_YOUR_KEY
51
-
52
- === Google URL Shortener
53
- require 'esnek'
54
- gapi = Esnek.new('https://www.googleapis.com')
55
- res = gapi.urlshortener.v1.url.post {{:longUrl => "http://www.sayarus.com/"}}
56
- puts res.longUrl # Use res.table[:id] instead of res.id, because id method already exist for Object
57
-
58
- === Facebook Graph API
59
- require 'esnek'
60
- fb = Esnek.new('http://graph.facebook.com')
61
- res = fb.send(:"http://www.wsirussia.ru").get
62
- Notice that since "http://www.wsirussia.ru" is an invalid ruby method name, we use "send" to call it
63
- puts res.shares
64
52
 
65
53
  == 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.
54
+ With Esnek you make a chained method call where each method is a directory in the URL
55
+ for your target JSON API. You finish by appending a method for the HTTP verb; get, post, put or delete.
68
56
 
69
57
  === General Usage
70
- require 'esnek'
71
- Choose any JSON over HTTP API and identify the base url such as https://www.googleapis.com
58
+ require 'esnek'
59
+ Choose any JSON over HTTP API and identify the base url:
72
60
 
73
61
  gapi = Esnek.new('https://www.googleapis.com')
74
62
 
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.
63
+ Form a chained method call and make sure you end with get, post, put or delete.
77
64
 
78
65
  gapi.language.translate.v2.get :q => "hello world", :source => :en, :target => :tr, :key => INSERT_YOUR_KEY
79
66
 
80
- Any query string should be given as a hash to any method in the method call, the following is valid too.
67
+ Any query string should be given as a hash parameter to any method in the method chain.
81
68
 
82
69
  gapi.language.translate.v2(:key => INSERT_YOUR_KEY).get(:q => "hello world", :source => :en, :target => :tr)
83
70
 
84
- If you face any portion of the URL which cannot be a valid Ruby method name use send(:'!1invalid_method')
71
+ If you face any portion of the URL which cannot be a valid Ruby method name, use send(:'!1invalid_method')
85
72
 
86
73
  res = fb.send(:"http://www.wsirussia.ru").get
87
74
 
@@ -89,37 +76,32 @@ Alternatively you may prefix digits with double underscore __
89
76
 
90
77
  es.twitter.tweet.__1.get
91
78
 
92
- If you append a block and pass a hash, the hash is converted into a JSON and posted as data.
79
+ If you append a block and the block returns a hash, the hash is converted into a JSON and posted as data.
93
80
 
94
81
  es.twitter.tweet.__2.put do
95
82
  {"user" => "alper", "post_date" => "2011-11-15T14:12:12", "message" => "For esnek"}
96
83
  end
97
84
 
98
85
  === Return Values
99
- Esnek simply converts the returned JSON into an Ostruct ruby object.
86
+ Esnek converts the returned JSON into an Ostruct object. You may use
87
+ the returned object's inspect method to see how it works for a given API.
100
88
 
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.
89
+ res.my_field # access as if it is an object's attrribute
90
+ res.table[:my_field] # For field names such as "id", you may use the "table" attribute.
106
91
 
107
- Consult your specific API documentation on how the return value is structured
92
+ Notice that Ostruct converts only the first level hash keys into Ostruct object attributes.
93
+ Consult your specific API documentation on how the return value is structured.
108
94
 
109
95
  === 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:
96
+ Esnek is based on Restclient, so some of the settings of Restclient apply to Esnek too.
97
+ For example Esnek will use the proxy specified by RestClient.proxy:
112
98
 
113
- RestClient.proxy = "http://proxy.example.com/"
114
- or the proxy url is set in an environment variable
115
- RestClient.proxy = ENV['http_proxy']
99
+ RestClient.proxy = "http://proxy.example.com/" # or =ENV['http_proxy']
116
100
 
117
101
  === Logging
118
102
 
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"):
103
+ To enable logging the calls made to the API, you may set RestClient.log with a ruby Logger or set an environment
104
+ variable to avoid modifying the code (in this case you can use a file name, "stdout" or "stderr"):
123
105
 
124
106
  $ RESTCLIENT_LOG=stdout path/to/my/program
125
107
  $ RESTCLIENT_LOG=stdout irb
@@ -127,4 +109,5 @@ To enable logging the calls made to the API, you may
127
109
 
128
110
  == Notes
129
111
 
130
- Esnek was initially developed using Redcar under Ubuntu Linux 10.10.
112
+ Esnek was initially developed using Emacs under Ubuntu Linux.
113
+
data/Rakefile CHANGED
@@ -1,28 +1,8 @@
1
- require 'rubygems'
2
- require 'rake'
3
- require 'rake/clean'
4
- require 'rake/gempackagetask'
5
- require 'rake/rdoctask'
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'esnek/version'
6
4
  require 'rake/testtask'
7
- require './lib/esnek/version'
8
-
9
-
10
- spec = eval(File.read('esnek.gemspec'))
11
-
12
- Rake::GemPackageTask.new(spec) do |p|
13
- p.gem_spec = spec
14
- p.need_tar = false
15
- p.need_zip = false
16
- end
17
-
18
- Rake::RDocTask.new do |rdoc|
19
- files =['README.rdoc', 'LICENSE','CHANGES', 'AUTHORS', 'lib/**/*.rb', 'test/**/*.rb']
20
- rdoc.rdoc_files.add(files)
21
- rdoc.main = "README"
22
- rdoc.title = "Esnek Documentation"
23
- rdoc.rdoc_dir = 'doc/rdoc'
24
- rdoc.options
25
- end
5
+ require "bundler/gem_tasks"
26
6
 
27
7
  Rake::TestTask.new do |t|
28
8
  t.test_files = FileList['test/**/*.rb']
data/esnek.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'esnek/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'esnek'
8
+ s.version = ESNEK_VERSION
9
+ s.extra_rdoc_files = ['README.rdoc', 'LICENSE','CHANGES','AUTHORS']
10
+ s.summary = 'Esnek provides a minimalistic Ruby interface for JSON APIs, such as ElasticSearch'
11
+ s.description = s.summary
12
+ s.authors = ['Alper Akgun']
13
+ s.email = 'esnek@sayarus.com'
14
+ s.homepage = "https://github.com/sayarus/esnek"
15
+ s.license = "MIT"
16
+ s.files = `git ls-files -z`.split("\x0")
17
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
+ s.require_paths = ["lib"]
20
+ s.bindir = "bin"
21
+ s.add_dependency("json", ">= 1.4")
22
+ s.add_dependency("rest-client", ">= 1.6.1")
23
+ s.add_development_dependency "bundler", "~> 1.6"
24
+ s.add_development_dependency "rake", "~> 10.0"
25
+ end
data/lib/esnek.rb CHANGED
@@ -1,2 +1 @@
1
-
2
1
  require 'esnek/base'
data/lib/esnek/base.rb CHANGED
@@ -1,57 +1,94 @@
1
1
  require 'rest_client'
2
2
  require 'json'
3
- require 'ostruct'
4
3
 
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).
4
+ # _Esnek_ provides a quick Ruby interface for JSON APIs, such as _ElasticSearch_ (http://www.elasticsearch.org); a scalable, fast, distributed,
5
+ # highly-available, real time search RESTful search engine communicating by JSON over HTTP, based on _Lucene_ (http://lucene.apache.org).
7
6
  class Esnek
8
- attr_accessor :chain, :url_root
9
- def initialize(url_root)
10
- @url_root = url_root
11
- @chain = []
7
+ #attr_accessor :esnek_chain, :esnek_url_root, :esnek_params, :esnek_url
8
+ def initialize(esnek_url_root, options={:verify_ssl=>true, :json_api=>true,:json_return=>true, :header=>{}})
9
+ @esnek_url_root = esnek_url_root
10
+ @esnek_chain = []
11
+ @json_api = options[:json_api].nil? ? true : options[:json_api]
12
+ @json_return = options[:json_return].nil? ? @json_api : options[:json_return]
13
+ @verify_ssl = options[:verify_ssl]
14
+ @header= options[:header] || {}
15
+ if options[:oauth] # Esnek assumes that oauth ruby gem is installed
16
+ options[:oauth][:scheme] ||= :header
17
+ consumer = OAuth::Consumer.new(options[:oauth][:consumer_key],options[:oauth][:consumer_secret], {:site => options[:oauth][:site], :scheme => options[:oauth][:scheme]})
18
+ @access_token = OAuth::AccessToken.from_hash(consumer, {:oauth_token => options[:oauth][:oauth_token], :oauth_token_secret => options[:oauth][:oauth_token_secret]} )
19
+ else
20
+ @access_token = nil
21
+ end
12
22
  end
13
23
 
14
24
  def parse_json(resp)
15
25
  j = JSON.parse resp
16
26
  case
17
27
  when j.is_a?(Hash)
18
- r=OpenStruct.new(j)
19
- class << r;def table;@table;end;end
28
+ r = OpenStruct.new(j)
29
+ class<<r;def table;@table;end;end;
20
30
  r
21
31
  when j.is_a?(Array)
22
- j.map{|e| r=OpenStruct.new(e);class << r;def table;@table;end;end;r}
32
+ j.map do |e|
33
+ r= if e.is_a?(Hash)
34
+ r = OpenStruct.new(e)
35
+ class<<r;def table;@table;end;end;
36
+ else
37
+ e
38
+ end
39
+ r
40
+ end
23
41
  else
24
42
  j
25
43
  end
26
44
  end
27
45
  def method_missing(method_sym, *args, &block)
28
- if [:get, :put, :post, :delete].include?(method_sym)
29
- @chain << {:method => nil, :arg => (args.empty? ? {} : args[0]) }
30
- url = @url_root.gsub(/\/$/,'') + '/' + @chain.map{|e| e[:method]}.compact.join('/')
31
- params = @chain.inject({}){|s,e| s.merge!(e[:arg] || {}) if e[:arg].is_a?(Hash)}
32
- if block_given?
33
- data = block.call.to_json rescue nil
46
+ if [:get, :put, :post, :delete, :patch, :head].include?(method_sym)
47
+ @esnek_chain << {:method => nil, :arg => (args.empty? ? {} : args[0]) }
48
+ @esnek_url = @esnek_url_root.gsub(/\/$/,'') + '/' + @esnek_chain.map{|e| e[:method]}.compact.join('/')
49
+ @esnek_params = @esnek_chain.inject({}){|s,e| s.merge!(e[:arg] || {}) if e[:arg].is_a?(Hash)}
50
+ @esnek_chain = []
51
+ heades = {:params => @esnek_params}.merge(@header)
52
+ data = block_given? ? block.call : nil #rescue nil
53
+
54
+ # if a JSON api is set in initializer both the payload data and the result will be un/jsonized
55
+ if @json_api
56
+ heades.merge!({:content_type => :json, :accept => :json})
57
+ data = data.to_json if data #rescue nil
58
+ elsif data.is_a? Hash
59
+ data = data.map{|k,v| "#{CGI::escape(k)}=#{CGI::escape(v)}"}.join('&')
34
60
  end
35
- @chain = []
36
- resp = block_given? ? RestClient.send(method_sym, url, data,:params => params,:content_type => :json, :accept => :json) :
37
- RestClient.send(method_sym, url,:params => params,:content_type => :json, :accept => :json)
38
-
39
- resp.headers[:content_type].include?('application/json') ? parse_json(resp) : resp
40
- else
41
- @chain << {:method => method_sym.to_s.gsub(/^__/,''), :arg => (args.empty? ? {} : args[0]) }
61
+ # if a oauth token exist, use it; unfortunately restclient does not allow a proper
62
+ RestClient.reset_before_execution_procs
63
+ RestClient.add_before_execution_proc do |req, par|
64
+ @access_token.sign! req
65
+ end if @access_token
66
+ resp = if [:put, :post,:patch].include?(method_sym)
67
+ RestClient::Request.execute(:method=>method_sym, :url=>@esnek_url, :payload=>data, :headers=>heades, :verify_ssl=>@verify_ssl)
68
+ else
69
+ RestClient::Request.execute(:method=>method_sym, :url=>@esnek_url, :headers=>heades, :verify_ssl=>@verify_ssl)
70
+ end
71
+
72
+ if @json_return
73
+ parse_json(resp)
74
+ else
75
+ resp
76
+ end
77
+ else
78
+ @esnek_chain << {:method => method_sym.to_s.gsub(/^__/,''), :arg => (args.empty? ? {} : args[0]) }
42
79
  self
43
80
  end
44
81
  rescue
45
- @chain = []
82
+ @esnek_chain = []
46
83
  raise $!
47
84
  end
48
-
85
+
49
86
  def respond_to?(method_sym)
50
- if [:get, :put, :post, :delete].include?(method_sym)
87
+ if [:head,:get, :put, :post,:patch, :delete].include?(method_sym)
51
88
  true
52
89
  else
53
90
  super
54
91
  end
55
92
  end
56
-
57
- end
93
+
94
+ end
data/lib/esnek/version.rb CHANGED
@@ -1 +1 @@
1
- ESNEK_VERSION='0.2.4'
1
+ ESNEK_VERSION='0.5.2'
data/test/base.rb ADDED
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+ require 'rubygems'
3
+ require './lib/esnek'
4
+ require 'minitest/autorun'
5
+
6
+ describe Esnek do
7
+ before do
8
+ end
9
+
10
+ describe "When I query json placeholder API" do
11
+ it "should return an object" do
12
+ esnek = Esnek.new('https://jsonplaceholder.typicode.com/')
13
+ res = esnek.todos.__1.get
14
+ assert_equal 1, res.id
15
+ end
16
+
17
+ it "should put" do
18
+ esnek = Esnek.new('https://jsonplaceholder.typicode.com/')
19
+ res = esnek.todos.__1.put { { title: 'A' }}
20
+ assert_equal 1, res.id
21
+ end
22
+
23
+ it "should post" do
24
+ esnek = Esnek.new('https://jsonplaceholder.typicode.com/')
25
+ res = esnek.todos.post { { title: 'A' }}
26
+ assert res.id > 0
27
+ end
28
+
29
+ it "should delete" do
30
+ esnek = Esnek.new('https://jsonplaceholder.typicode.com/')
31
+ res = esnek.todos.__1.delete
32
+ assert res.id.nil?
33
+ end
34
+ end
35
+ end
metadata CHANGED
@@ -1,106 +1,116 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: esnek
3
- version: !ruby/object:Gem::Version
4
- hash: 31
5
- prerelease:
6
- segments:
7
- - 0
8
- - 2
9
- - 4
10
- version: 0.2.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Alper Akgun
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-04-23 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2021-04-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: json
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 1
29
- segments:
30
- - 1
31
- - 5
32
- - 1
33
- version: 1.5.1
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.4'
34
20
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: rest-client
38
21
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 13
45
- segments:
46
- - 1
47
- - 6
48
- - 1
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rest-client
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
49
33
  version: 1.6.1
50
34
  type: :runtime
51
- version_requirements: *id002
52
- description: Esnek provides a minimalistic Ruby interface for JSON APIs, such as ElasticSearch
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.6.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.6'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.6'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: Esnek provides a minimalistic Ruby interface for JSON APIs, such as
70
+ ElasticSearch
53
71
  email: esnek@sayarus.com
54
72
  executables: []
55
-
56
73
  extensions: []
57
-
58
- extra_rdoc_files:
74
+ extra_rdoc_files:
59
75
  - README.rdoc
60
76
  - LICENSE
61
77
  - CHANGES
62
78
  - AUTHORS
63
- files:
79
+ files:
80
+ - ".gitignore"
81
+ - AUTHORS
82
+ - CHANGES
83
+ - Gemfile
64
84
  - LICENSE
65
85
  - README.rdoc
66
86
  - Rakefile
67
- - AUTHORS
68
- - CHANGES
87
+ - esnek.gemspec
88
+ - lib/esnek.rb
69
89
  - lib/esnek/base.rb
70
90
  - lib/esnek/version.rb
71
- - lib/esnek.rb
91
+ - test/base.rb
72
92
  homepage: https://github.com/sayarus/esnek
73
- licenses: []
74
-
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
75
96
  post_install_message:
76
97
  rdoc_options: []
77
-
78
- require_paths:
98
+ require_paths:
79
99
  - lib
80
- required_ruby_version: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
83
102
  - - ">="
84
- - !ruby/object:Gem::Version
85
- hash: 3
86
- segments:
87
- - 0
88
- version: "0"
89
- required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
92
107
  - - ">="
93
- - !ruby/object:Gem::Version
94
- hash: 3
95
- segments:
96
- - 0
97
- version: "0"
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
98
110
  requirements: []
99
-
100
- rubyforge_project:
101
- rubygems_version: 1.7.2
111
+ rubygems_version: 3.1.2
102
112
  signing_key:
103
- specification_version: 3
113
+ specification_version: 4
104
114
  summary: Esnek provides a minimalistic Ruby interface for JSON APIs, such as ElasticSearch
105
- test_files: []
106
-
115
+ test_files:
116
+ - test/base.rb