rest-more 2.0.4 → 3.0.0
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.
- checksums.yaml +6 -6
- data/.gitignore +1 -2
- data/.gitmodules +1 -1
- data/.travis.yml +5 -4
- data/CHANGES.md +1 -1
- data/Gemfile +16 -10
- data/README.md +209 -44
- data/Rakefile +11 -22
- data/doc/{tutorial/facebook.md → facebook.md} +1 -1
- data/example/multi.rb +3 -3
- data/example/rails3/Gemfile +18 -8
- data/example/rails3/app/controllers/application_controller.rb +2 -5
- data/example/rails3/config/application.rb +1 -1
- data/example/rails3/test/functional/application_controller_test.rb +0 -12
- data/example/rails3/test/test_helper.rb +12 -5
- data/example/rails3/test/unit/rails_util_test.rb +1 -6
- data/example/simple.rb +2 -2
- data/lib/rest-core/client/firebase.rb +50 -0
- data/lib/rest-core/client/instagram.rb +59 -0
- data/lib/rest-core/client/linkedin.rb +0 -4
- data/lib/rest-more.rb +8 -6
- data/lib/rest-more/test.rb +0 -11
- data/lib/rest-more/version.rb +1 -1
- data/rest-more.gemspec +20 -17
- data/task/README.md +54 -0
- data/task/gemgem.rb +151 -156
- data/test/dropbox/test_api.rb +1 -1
- data/test/facebook/test_api.rb +6 -7
- data/test/facebook/test_error.rb +1 -1
- data/test/facebook/test_handler.rb +2 -2
- data/test/facebook/test_load_config.rb +1 -1
- data/test/facebook/test_misc.rb +4 -14
- data/test/facebook/test_oauth.rb +1 -1
- data/test/facebook/test_old.rb +1 -1
- data/test/facebook/test_page.rb +4 -5
- data/test/facebook/test_parse.rb +0 -7
- data/test/facebook/test_serialize.rb +1 -1
- data/test/facebook/test_timeout.rb +4 -4
- data/test/instagram/test_api.rb +54 -0
- data/test/twitter/test_api.rb +1 -1
- metadata +26 -23
- data/example/rainbows.rb +0 -67
- data/task/.gitignore +0 -1
data/Rakefile
CHANGED
@@ -1,34 +1,23 @@
|
|
1
|
-
# encoding: utf-8
|
2
1
|
|
3
2
|
begin
|
4
3
|
require "#{dir = File.dirname(__FILE__)}/task/gemgem"
|
5
4
|
rescue LoadError
|
6
|
-
sh
|
7
|
-
exec Gem.ruby,
|
5
|
+
sh 'git submodule update --init'
|
6
|
+
exec Gem.ruby, '-S', $PROGRAM_NAME, *ARGV
|
8
7
|
end
|
9
8
|
|
10
|
-
|
11
|
-
($LOAD_PATH << File.expand_path("#{Gemgem.dir}/lib" ) <<
|
12
|
-
File.expand_path("#{Gemgem.dir}/rest-core/lib")).uniq!
|
9
|
+
$LOAD_PATH.unshift(File.expand_path("#{dir}/rest-core/lib"))
|
13
10
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
s.version = RestMore::VERSION
|
20
|
-
s.homepage = 'https://github.com/cardinalblue/rest-more'
|
11
|
+
Gemgem.init(dir) do |s|
|
12
|
+
require 'rest-more/version'
|
13
|
+
s.name = 'rest-more'
|
14
|
+
s.version = RestMore::VERSION
|
15
|
+
s.homepage = 'https://github.com/godfat/rest-more'
|
21
16
|
|
22
|
-
|
17
|
+
%w[rest-core].each{ |g| s.add_runtime_dependency(g, '>=3.0.0') }
|
23
18
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
# exclude rest-core
|
28
|
-
s.files.reject!{ |f| f.start_with?('rest-core/') }
|
29
|
-
end
|
30
|
-
|
31
|
-
Gemgem.write
|
19
|
+
# exclude rest-core
|
20
|
+
s.files.reject!{ |f| f.start_with?('rest-core/') }
|
32
21
|
end
|
33
22
|
|
34
23
|
module Gemgem
|
@@ -170,4 +170,4 @@
|
|
170
170
|
|
171
171
|
That's it!
|
172
172
|
|
173
|
-
15. More information on customizing rest-more and its functions are to be found here: <https://github.com/
|
173
|
+
15. More information on customizing rest-more and its functions are to be found here: <https://github.com/godfat/rest-more>
|
data/example/multi.rb
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
require 'rest-more'
|
3
3
|
|
4
4
|
facebook = RC::Facebook.new(:log_method => method(:puts))
|
5
|
-
puts "
|
5
|
+
puts "httpclient with threads doing concurrent requests"
|
6
6
|
a = [facebook.get('4'), facebook.get('5')]
|
7
7
|
puts "It's not blocking... but doing concurrent requests underneath"
|
8
8
|
p a.map{ |r| r['name'] } # here we want the values, so it blocks here
|
9
9
|
puts "DONE"
|
10
10
|
|
11
11
|
puts "callback also works"
|
12
|
-
facebook.get('6')
|
12
|
+
facebook.get('6') do |r|
|
13
13
|
p r['name']
|
14
|
-
|
14
|
+
end
|
15
15
|
puts "It's not blocking... but doing concurrent requests underneath"
|
16
16
|
facebook.wait # we block here to wait for the request done
|
17
17
|
puts "DONE"
|
data/example/rails3/Gemfile
CHANGED
@@ -1,22 +1,32 @@
|
|
1
1
|
|
2
|
-
source '
|
2
|
+
source 'https://rubygems.org/'
|
3
3
|
|
4
|
-
gem 'rails', '3.2.
|
4
|
+
gem 'rails', '3.2.16'
|
5
5
|
|
6
|
-
gem 'rest-client' # for rest-core
|
7
6
|
gem 'rest-core', :path => '../../rest-core'
|
8
7
|
gem 'rest-more', :path => '../../'
|
9
8
|
|
10
|
-
group
|
11
|
-
gem '
|
9
|
+
group :test do
|
10
|
+
gem 'muack'
|
12
11
|
gem 'webmock'
|
13
12
|
end
|
14
13
|
|
15
|
-
platforms
|
14
|
+
platforms :ruby do
|
16
15
|
gem 'yajl-ruby'
|
17
|
-
gem 'psych' # why?
|
18
16
|
end
|
19
17
|
|
20
|
-
platforms
|
18
|
+
platforms :jruby do
|
21
19
|
gem 'jruby-openssl'
|
22
20
|
end
|
21
|
+
|
22
|
+
platforms :rbx do
|
23
|
+
gem 'rubysl-fiber' # used in rest-core
|
24
|
+
gem 'rubysl-weakref' # used in rest-core
|
25
|
+
gem 'rubysl-singleton' # used in rake
|
26
|
+
gem 'rubysl-rexml' # used in crack used in webmock
|
27
|
+
gem 'rubysl-bigdecimal' # used in crack used in webmock
|
28
|
+
gem 'rubysl-test-unit' # used in activesupport
|
29
|
+
gem 'rubysl-enumerator' # used in activesupport
|
30
|
+
gem 'rubysl-benchmark' # used in activesupport
|
31
|
+
gem 'racc' # used in journey used in actionpack
|
32
|
+
end
|
@@ -41,11 +41,8 @@ class ApplicationController < ActionController::Base
|
|
41
41
|
url = rc_facebook.url('cache')
|
42
42
|
rc_facebook.get('cache').tap{}
|
43
43
|
rc_facebook.get('cache').tap{}
|
44
|
-
|
45
|
-
|
46
|
-
RC::REQUEST_METHOD => :get,
|
47
|
-
RC::REQUEST_PATH => rc_facebook.url('cache'),
|
48
|
-
&RC::Middleware.id))
|
44
|
+
res = rc_facebook.request_full(RC::REQUEST_PATH => url)
|
45
|
+
key = RC::Cache.new(nil, nil, nil).cache_key(res)
|
49
46
|
render :text => Rails.cache.read(key)
|
50
47
|
end
|
51
48
|
|
@@ -15,7 +15,7 @@ module Rails3
|
|
15
15
|
|
16
16
|
logger = Logger.new($stdout)
|
17
17
|
logger.level = Logger::INFO
|
18
|
-
config.logger = logger
|
18
|
+
config.logger = logger if $DEBUG
|
19
19
|
|
20
20
|
# Configure sensitive parameters which will be filtered from the log file.
|
21
21
|
config.filter_parameters += [:password]
|
@@ -1,14 +1,7 @@
|
|
1
1
|
|
2
2
|
require 'test_helper'
|
3
|
-
require 'webmock'
|
4
|
-
require 'rr'
|
5
|
-
|
6
|
-
WebMock.disable_net_connect!
|
7
3
|
|
8
4
|
class ApplicationControllerTest < ActionController::TestCase
|
9
|
-
include WebMock::API
|
10
|
-
include RR::Adapters::TestUnit
|
11
|
-
|
12
5
|
def setup
|
13
6
|
body = rand(2) == 0 ? '{"error":{"type":"OAuthException"}}' :
|
14
7
|
'{"error_code":104}'
|
@@ -17,11 +10,6 @@ class ApplicationControllerTest < ActionController::TestCase
|
|
17
10
|
to_return(:body => body)
|
18
11
|
end
|
19
12
|
|
20
|
-
def teardown
|
21
|
-
RR.verify
|
22
|
-
WebMock.reset!
|
23
|
-
end
|
24
|
-
|
25
13
|
def assert_url expected
|
26
14
|
assert_equal(expected, normalize_url(assigns(:rc_facebook_authorize_url)))
|
27
15
|
if @response.status == 200 # js redirect
|
@@ -1,13 +1,20 @@
|
|
1
1
|
|
2
2
|
ENV["RAILS_ENV"] = "test"
|
3
3
|
require File.expand_path('../../config/environment', __FILE__)
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
end
|
4
|
+
require 'rails/test_help'
|
5
|
+
require 'webmock'
|
6
|
+
WebMock.disable_net_connect!
|
7
|
+
require 'muack'
|
9
8
|
|
10
9
|
class ActiveSupport::TestCase
|
10
|
+
include WebMock::API
|
11
|
+
include Muack::API
|
12
|
+
|
13
|
+
teardown do
|
14
|
+
WebMock.reset!
|
15
|
+
Muack.verify
|
16
|
+
end
|
17
|
+
|
11
18
|
def normalize_query query, amp='&'
|
12
19
|
'?' + query[1..-1].split(amp).sort.join(amp)
|
13
20
|
end
|
@@ -1,10 +1,7 @@
|
|
1
1
|
|
2
2
|
require 'test_helper'
|
3
|
-
require 'rr'
|
4
3
|
|
5
4
|
class RailsUtilTest < ActiveSupport::TestCase
|
6
|
-
include RR::Adapters::TestUnit
|
7
|
-
|
8
5
|
def setup_mock url
|
9
6
|
@controller = Class.new do
|
10
7
|
def self.helper dummy ; end
|
@@ -12,9 +9,7 @@ class RailsUtilTest < ActiveSupport::TestCase
|
|
12
9
|
include RestCore::Facebook::RailsUtil
|
13
10
|
end.new
|
14
11
|
mock(@controller).rc_facebook_in_canvas?{ false }
|
15
|
-
mock(@controller).request{
|
16
|
-
mock(Object.new).url{ url }
|
17
|
-
}
|
12
|
+
mock(@controller).request{ mock.url{ url }.object }
|
18
13
|
end
|
19
14
|
|
20
15
|
def test_rest_graph_normalized_request_uri_0
|
data/example/simple.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
|
2
2
|
require 'rest-more'
|
3
3
|
|
4
|
-
p RC::Twitter.new.statuses('
|
4
|
+
p RC::Twitter.new.statuses('godfat').first # get user tweets
|
5
5
|
puts
|
6
|
-
p RC::Github.new.get('users/
|
6
|
+
p RC::Github.new.get('users/godfat') # get user info
|
7
7
|
puts
|
8
8
|
p RC::Facebook.new.get('4') # get user info
|
@@ -0,0 +1,50 @@
|
|
1
|
+
|
2
|
+
require 'rest-core'
|
3
|
+
|
4
|
+
# https://www.firebase.com/docs/security/custom-login.html
|
5
|
+
# https://www.firebase.com/docs/rest-api.html
|
6
|
+
module RestCore
|
7
|
+
Firebase = Builder.client(:d, :secret, :auth) do
|
8
|
+
use Timeout , 10
|
9
|
+
|
10
|
+
use DefaultSite , 'https://SampleChat.firebaseIO-demo.com/'
|
11
|
+
use DefaultHeaders, {'Accept' => 'application/json'}
|
12
|
+
use DefaultQuery , nil
|
13
|
+
|
14
|
+
use CommonLogger , nil
|
15
|
+
use Cache , nil, 600 do
|
16
|
+
use ErrorHandler, lambda{ |env|
|
17
|
+
RuntimeError.new(env[RESPONSE_BODY]['message'])}
|
18
|
+
use ErrorDetectorHttp
|
19
|
+
use JsonResponse, true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
module RestCore::Firebase::Client
|
25
|
+
include RestCore
|
26
|
+
|
27
|
+
def generate_auth opts={}
|
28
|
+
header = {:typ => 'JWT', :alg => 'HS256'}
|
29
|
+
claims = {:v => 0, :iat => Time.now.to_i, :d => d}.merge(opts)
|
30
|
+
# http://tools.ietf.org/html/draft-ietf-jose-json-web-signature-26
|
31
|
+
input = [header, claims].map{ |d| base64url(Json.encode(d)) }.join('.')
|
32
|
+
# http://tools.ietf.org/html/draft-ietf-oauth-json-web-token-20
|
33
|
+
"#{input}.#{base64url(Hmac.sha256(secret, input))}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def request env, key=RESPONSE_BODY, app=app
|
37
|
+
super(env.merge(REQUEST_PATH => "#{env[REQUEST_PATH]}.json",
|
38
|
+
REQUEST_PAYLOAD => Json.encode(env[REQUEST_PAYLOAD])),
|
39
|
+
key, app)
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
def base64url str; [str].pack('m').tr('+/', '-_'); end
|
44
|
+
def default_query; {:auth => auth}; end
|
45
|
+
def default_auth ; generate_auth ; end
|
46
|
+
end
|
47
|
+
|
48
|
+
class RestCore::Firebase
|
49
|
+
include RestCore::Firebase::Client
|
50
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
|
2
|
+
require 'rest-core'
|
3
|
+
|
4
|
+
# http://instagram.com/developer/
|
5
|
+
module RestCore
|
6
|
+
Instagram = Builder.client(:client_id, :client_secret, :data) do
|
7
|
+
use Timeout , 10
|
8
|
+
|
9
|
+
use DefaultSite , 'https://api.instagram.com/'
|
10
|
+
use DefaultHeaders, {'Accept' => 'application/json'}
|
11
|
+
use DefaultQuery , nil
|
12
|
+
use Oauth2Query , nil
|
13
|
+
|
14
|
+
use CommonLogger , nil
|
15
|
+
use Cache , nil, 600 do
|
16
|
+
use ErrorHandler, lambda{ |env| RuntimeError.new(env[RESPONSE_BODY])}
|
17
|
+
use ErrorDetectorHttp
|
18
|
+
use JsonResponse, true
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module RestCore::Instagram::Client
|
24
|
+
include RestCore
|
25
|
+
|
26
|
+
def me query={}, opts={}
|
27
|
+
get('v1/users/self', query, opts)
|
28
|
+
end
|
29
|
+
|
30
|
+
def access_token
|
31
|
+
data['access_token']
|
32
|
+
end
|
33
|
+
|
34
|
+
def access_token= token
|
35
|
+
data['access_token'] = token
|
36
|
+
end
|
37
|
+
|
38
|
+
def authorize_url query={}, opts={}
|
39
|
+
url('oauth/authorize', {:access_token => false,
|
40
|
+
:response_type => 'code'}.merge(query), opts)
|
41
|
+
end
|
42
|
+
|
43
|
+
def authorize! payload={}, opts={}
|
44
|
+
p = {:client_id => client_id, :client_secret => client_secret,
|
45
|
+
:grant_type => 'authorization_code' }.
|
46
|
+
merge(payload)
|
47
|
+
|
48
|
+
self.data = post('oauth/access_token', p, {:access_token => false,
|
49
|
+
:client_id => false}, opts)
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
def default_data ; {}; end
|
54
|
+
def default_query; {:client_id => client_id}; end
|
55
|
+
end
|
56
|
+
|
57
|
+
class RestCore::Instagram
|
58
|
+
include RestCore::Instagram::Client
|
59
|
+
end
|
data/lib/rest-more.rb
CHANGED
@@ -2,11 +2,13 @@
|
|
2
2
|
require 'rest-core'
|
3
3
|
|
4
4
|
module RestCore
|
5
|
-
autoload :Config
|
5
|
+
autoload :Config , 'rest-core/util/config'
|
6
6
|
|
7
|
-
autoload :Dropbox
|
8
|
-
autoload :Facebook, 'rest-core/client/facebook'
|
9
|
-
autoload :
|
10
|
-
autoload :
|
11
|
-
autoload :
|
7
|
+
autoload :Dropbox , 'rest-core/client/dropbox'
|
8
|
+
autoload :Facebook , 'rest-core/client/facebook'
|
9
|
+
autoload :Firebase , 'rest-core/client/firebase'
|
10
|
+
autoload :Github , 'rest-core/client/github'
|
11
|
+
autoload :Instagram, 'rest-core/client/instagram'
|
12
|
+
autoload :Linkedin , 'rest-core/client/linkedin'
|
13
|
+
autoload :Twitter , 'rest-core/client/twitter'
|
12
14
|
end
|
data/lib/rest-more/test.rb
CHANGED
@@ -1,14 +1,3 @@
|
|
1
1
|
|
2
2
|
require 'rest-core/test'
|
3
3
|
require 'rest-more'
|
4
|
-
|
5
|
-
module TestHelper
|
6
|
-
module_function
|
7
|
-
def normalize_query query
|
8
|
-
'?' + query[1..-1].split('&').sort.join('&')
|
9
|
-
end
|
10
|
-
|
11
|
-
def normalize_url url
|
12
|
-
url.sub(/\?.+/){ |query| TestHelper.normalize_query(query) }
|
13
|
-
end
|
14
|
-
end
|
data/lib/rest-more/version.rb
CHANGED
data/rest-more.gemspec
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: rest-more 3.0.0 ruby lib
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = "rest-more"
|
5
|
-
s.version = "
|
6
|
+
s.version = "3.0.0"
|
6
7
|
|
7
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.
|
9
|
-
"
|
10
|
-
|
11
|
-
s.
|
12
|
-
s.
|
13
|
-
s.email = ["dev (XD) cardinalblue.com"]
|
9
|
+
s.require_paths = ["lib"]
|
10
|
+
s.authors = ["Lin Jen-Shin (godfat)"]
|
11
|
+
s.date = "2014-05-04"
|
12
|
+
s.description = "Various REST clients such as Facebook and Twitter built with [rest-core][].\n\n[rest-core]: https://github.com/godfat/rest-core"
|
13
|
+
s.email = ["godfat (XD) godfat.org"]
|
14
14
|
s.executables = ["rib-rest-core"]
|
15
15
|
s.files = [
|
16
16
|
".gitignore",
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
"Rakefile",
|
24
24
|
"TODO.md",
|
25
25
|
"bin/rib-rest-core",
|
26
|
-
"doc/
|
26
|
+
"doc/facebook.md",
|
27
27
|
"example/multi.rb",
|
28
28
|
"example/rails3/Gemfile",
|
29
29
|
"example/rails3/README",
|
@@ -44,14 +44,15 @@ Gem::Specification.new do |s|
|
|
44
44
|
"example/rails3/test/functional/application_controller_test.rb",
|
45
45
|
"example/rails3/test/test_helper.rb",
|
46
46
|
"example/rails3/test/unit/rails_util_test.rb",
|
47
|
-
"example/rainbows.rb",
|
48
47
|
"example/simple.rb",
|
49
48
|
"example/sinatra/config.ru",
|
50
49
|
"lib/rest-core/client/dropbox.rb",
|
51
50
|
"lib/rest-core/client/facebook.rb",
|
52
51
|
"lib/rest-core/client/facebook/rails_util.rb",
|
52
|
+
"lib/rest-core/client/firebase.rb",
|
53
53
|
"lib/rest-core/client/github.rb",
|
54
54
|
"lib/rest-core/client/github/rails_util.rb",
|
55
|
+
"lib/rest-core/client/instagram.rb",
|
55
56
|
"lib/rest-core/client/linkedin.rb",
|
56
57
|
"lib/rest-core/client/linkedin/rails_util.rb",
|
57
58
|
"lib/rest-core/client/twitter.rb",
|
@@ -63,7 +64,7 @@ Gem::Specification.new do |s|
|
|
63
64
|
"lib/rest-more/version.rb",
|
64
65
|
"lib/rib/app/rest-core.rb",
|
65
66
|
"rest-more.gemspec",
|
66
|
-
"task
|
67
|
+
"task/README.md",
|
67
68
|
"task/gemgem.rb",
|
68
69
|
"test/dropbox/test_api.rb",
|
69
70
|
"test/facebook/config/rest-core.yaml",
|
@@ -79,11 +80,12 @@ Gem::Specification.new do |s|
|
|
79
80
|
"test/facebook/test_parse.rb",
|
80
81
|
"test/facebook/test_serialize.rb",
|
81
82
|
"test/facebook/test_timeout.rb",
|
83
|
+
"test/instagram/test_api.rb",
|
82
84
|
"test/twitter/test_api.rb"]
|
83
|
-
s.homepage = "https://github.com/
|
84
|
-
s.
|
85
|
-
s.rubygems_version = "2.
|
86
|
-
s.summary = "Various REST clients such as Facebook and Twitter built with [rest-core][]"
|
85
|
+
s.homepage = "https://github.com/godfat/rest-more"
|
86
|
+
s.licenses = ["Apache License 2.0"]
|
87
|
+
s.rubygems_version = "2.2.2"
|
88
|
+
s.summary = "Various REST clients such as Facebook and Twitter built with [rest-core][]."
|
87
89
|
s.test_files = [
|
88
90
|
"test/dropbox/test_api.rb",
|
89
91
|
"test/facebook/test_api.rb",
|
@@ -98,17 +100,18 @@ Gem::Specification.new do |s|
|
|
98
100
|
"test/facebook/test_parse.rb",
|
99
101
|
"test/facebook/test_serialize.rb",
|
100
102
|
"test/facebook/test_timeout.rb",
|
103
|
+
"test/instagram/test_api.rb",
|
101
104
|
"test/twitter/test_api.rb"]
|
102
105
|
|
103
106
|
if s.respond_to? :specification_version then
|
104
107
|
s.specification_version = 4
|
105
108
|
|
106
109
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
107
|
-
s.add_runtime_dependency(%q<rest-core>, [">=
|
110
|
+
s.add_runtime_dependency(%q<rest-core>, [">= 3.0.0"])
|
108
111
|
else
|
109
|
-
s.add_dependency(%q<rest-core>, [">=
|
112
|
+
s.add_dependency(%q<rest-core>, [">= 3.0.0"])
|
110
113
|
end
|
111
114
|
else
|
112
|
-
s.add_dependency(%q<rest-core>, [">=
|
115
|
+
s.add_dependency(%q<rest-core>, [">= 3.0.0"])
|
113
116
|
end
|
114
117
|
end
|