rest-more 0.8.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +4 -2
- data/CHANGES.md +54 -34
- data/Gemfile +3 -1
- data/README.md +187 -14
- data/Rakefile +1 -1
- data/TODO.md +2 -12
- data/doc/ToC.md +9 -0
- data/doc/dependency.md +4 -0
- data/doc/design.md +4 -0
- data/doc/rest-graph.md +4 -0
- data/doc/tutorial/facebook.md +173 -0
- data/example/async.rb +89 -0
- data/example/facebook.rb +13 -0
- data/example/multi.rb +28 -0
- data/example/rails3/Gemfile +1 -1
- data/example/rainbows.rb +40 -0
- data/example/simple.rb +8 -0
- data/lib/rest-core/client/bing.rb +15 -7
- data/lib/rest-core/client/dropbox.rb +104 -0
- data/lib/rest-core/client/facebook.rb +59 -15
- data/lib/rest-core/client/flurry.rb +11 -1
- data/lib/rest-core/client/github.rb +11 -1
- data/lib/rest-core/client/linkedin.rb +10 -6
- data/lib/rest-core/client/twitter.rb +18 -9
- data/lib/rest-core/util/config.rb +15 -9
- data/lib/rest-more.rb +1 -0
- data/lib/rest-more/version.rb +1 -1
- data/rest-more.gemspec +54 -41
- data/test/{client/bing → bing}/test_api.rb +0 -0
- data/test/dropbox/test_api.rb +37 -0
- data/test/{client/facebook → facebook}/config/rest-core.yaml +0 -0
- data/test/{client/facebook → facebook}/test_api.rb +0 -0
- data/test/{client/facebook → facebook}/test_cache.rb +0 -0
- data/test/{client/facebook → facebook}/test_default.rb +0 -0
- data/test/{client/facebook → facebook}/test_error.rb +0 -0
- data/test/{client/facebook → facebook}/test_handler.rb +0 -0
- data/test/{client/facebook → facebook}/test_load_config.rb +0 -0
- data/test/{client/facebook → facebook}/test_misc.rb +0 -0
- data/test/{client/facebook → facebook}/test_oauth.rb +0 -0
- data/test/{client/facebook → facebook}/test_old.rb +0 -0
- data/test/{client/facebook → facebook}/test_page.rb +16 -29
- data/test/{client/facebook → facebook}/test_parse.rb +2 -2
- data/test/{client/facebook → facebook}/test_serialize.rb +0 -0
- data/test/{client/facebook → facebook}/test_timeout.rb +0 -0
- data/test/{client/flurry → flurry}/test_metrics.rb +0 -0
- data/test/{client/mixi → mixi}/test_api.rb +0 -0
- data/test/{client/twitter → twitter}/test_api.rb +4 -3
- metadata +60 -41
@@ -0,0 +1,104 @@
|
|
1
|
+
|
2
|
+
require 'rest-core'
|
3
|
+
|
4
|
+
# https://www.dropbox.com/developers/reference/api
|
5
|
+
RestCore::Dropbox = RestCore::Builder.client(:root) do
|
6
|
+
s = self.class # this is only for ruby 1.8!
|
7
|
+
use s::Timeout , 10
|
8
|
+
|
9
|
+
use s::DefaultSite , 'https://api.dropbox.com/'
|
10
|
+
use s::DefaultHeaders, {'Accept' => 'application/json',
|
11
|
+
'Content-Type' => 'application/octet-stream'}
|
12
|
+
|
13
|
+
use s::Oauth1Header ,
|
14
|
+
'1/oauth/request_token', '1/oauth/access_token',
|
15
|
+
'https://www.dropbox.com/1/oauth/authorize'
|
16
|
+
|
17
|
+
use s::CommonLogger , nil
|
18
|
+
use s::Cache , nil, 600 do
|
19
|
+
use s::ErrorHandler, lambda{ |env|
|
20
|
+
if env[s::ASYNC]
|
21
|
+
if env[s::RESPONSE_BODY].kind_of?(::Exception)
|
22
|
+
env
|
23
|
+
else
|
24
|
+
env.merge(s::RESPONSE_BODY => ::RestCore::Dropbox::Error.call(env))
|
25
|
+
end
|
26
|
+
else
|
27
|
+
raise ::RestCore::Dropbox::Error.call(env)
|
28
|
+
end}
|
29
|
+
use s::ErrorDetectorHttp
|
30
|
+
use s::JsonDecode , true
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class RestCore::Dropbox::Error < RestCore::Error
|
35
|
+
include RestCore
|
36
|
+
class ServerError < Dropbox::Error; end
|
37
|
+
|
38
|
+
class BadRequest < Dropbox::Error; end
|
39
|
+
class Unauthorized < Dropbox::Error; end
|
40
|
+
class Forbidden < Dropbox::Error; end
|
41
|
+
class NotFound < Dropbox::Error; end
|
42
|
+
class MethodNotAllowed < Dropbox::Error; end
|
43
|
+
|
44
|
+
# a 5xx error which is not a server error
|
45
|
+
class OverStorageQuota < Dropbox::Error; end
|
46
|
+
|
47
|
+
class ServiceUnavailable < Dropbox::Error::ServerError; end
|
48
|
+
|
49
|
+
attr_reader :error, :code, :url
|
50
|
+
def initialize error, code, url=''
|
51
|
+
@error, @code, @url = error, code, url
|
52
|
+
super("[#{code}] #{error.inspect} from #{url}")
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.call env
|
56
|
+
error, code, url = env[RESPONSE_BODY], env[RESPONSE_STATUS],
|
57
|
+
Middleware.request_uri(env)
|
58
|
+
return new(error, code, url) unless error.kind_of?(Hash)
|
59
|
+
case code
|
60
|
+
when 400; BadRequest
|
61
|
+
when 401; Unauthorized
|
62
|
+
when 403; Forbidden
|
63
|
+
when 404; NotFound
|
64
|
+
when 405; MethodNotAllowed
|
65
|
+
when 503; ServiceUnavailable
|
66
|
+
when 507; OverStorageQuota
|
67
|
+
else ; if code / 100 == 5
|
68
|
+
Dropbox::Error::ServerError
|
69
|
+
else
|
70
|
+
Dropbox::Error
|
71
|
+
end
|
72
|
+
end.new(error, code, url)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
module RestCore::Dropbox::Client
|
77
|
+
include RestCore
|
78
|
+
|
79
|
+
def me query={}, opts={}
|
80
|
+
get('1/account/info', query, opts)
|
81
|
+
end
|
82
|
+
|
83
|
+
def default_root
|
84
|
+
'sandbox'
|
85
|
+
end
|
86
|
+
|
87
|
+
def download path, query={}, opts={}
|
88
|
+
get("https://api-content.dropbox.com/1/files/#{root}/#{path}",
|
89
|
+
query, {:json_decode => false}.merge(opts))
|
90
|
+
end
|
91
|
+
|
92
|
+
def upload path, file, query={}, opts={}
|
93
|
+
put("https://api-content.dropbox.com/1/files_put/#{root}/#{path}",
|
94
|
+
file, query, opts)
|
95
|
+
end
|
96
|
+
|
97
|
+
def ls path='', query={}, opts={}
|
98
|
+
get("1/metadata/#{root}/#{path}", query, opts)['contents'].
|
99
|
+
map{ |c| c['path'] }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
RestCore::Dropbox.send(:include, RestCore::ClientOauth1)
|
104
|
+
RestCore::Dropbox.send(:include, RestCore::Dropbox::Client)
|
@@ -18,7 +18,15 @@ RestCore::Facebook = RestCore::Builder.client(
|
|
18
18
|
use s::CommonLogger , nil
|
19
19
|
use s::Cache , nil, 600 do
|
20
20
|
use s::ErrorHandler, lambda{ |env|
|
21
|
-
|
21
|
+
if env[s::ASYNC]
|
22
|
+
if env[s::RESPONSE_BODY].kind_of?(::Exception)
|
23
|
+
env
|
24
|
+
else
|
25
|
+
env.merge(s::RESPONSE_BODY => ::RestCore::Facebook::Error.call(env))
|
26
|
+
end
|
27
|
+
else
|
28
|
+
raise ::RestCore::Facebook::Error.call(env)
|
29
|
+
end}
|
22
30
|
use s::ErrorDetector, lambda{ |env|
|
23
31
|
if env[s::RESPONSE_BODY].kind_of?(Hash)
|
24
32
|
env[s::RESPONSE_BODY]['error'] ||
|
@@ -45,7 +53,7 @@ class RestCore::Facebook::Error < RestCore::Error
|
|
45
53
|
|
46
54
|
def self.call env
|
47
55
|
error, url = env[RESPONSE_BODY], Middleware.request_uri(env)
|
48
|
-
return new(
|
56
|
+
return new(error, url) unless error.kind_of?(Hash)
|
49
57
|
if invalid_token?(error)
|
50
58
|
InvalidAccessToken.new(error, url)
|
51
59
|
elsif missing_token?(error)
|
@@ -91,31 +99,67 @@ module RestCore::Facebook::Client
|
|
91
99
|
def authorized? ; !!access_token ; end
|
92
100
|
|
93
101
|
def next_page hash, opts={}, &cb
|
94
|
-
if hash
|
95
|
-
|
102
|
+
if hash.nil?
|
103
|
+
nil
|
104
|
+
elsif hash['paging'].kind_of?(Hash) && hash['paging']['next']
|
105
|
+
# FIXME: facebook is returning broken URI....
|
106
|
+
get(URI.encode(hash['paging']['next']), {}, opts, &cb)
|
107
|
+
elsif block_given?
|
108
|
+
yield(nil)
|
109
|
+
self
|
96
110
|
else
|
97
|
-
|
111
|
+
nil
|
98
112
|
end
|
99
113
|
end
|
100
114
|
|
101
115
|
def prev_page hash, opts={}, &cb
|
102
|
-
if hash
|
103
|
-
|
116
|
+
if hash.nil?
|
117
|
+
nil
|
118
|
+
elsif hash['paging'].kind_of?(Hash) && hash['paging']['previous']
|
119
|
+
# FIXME: facebook is returning broken URI....
|
120
|
+
get(URI.encode(hash['paging']['previous']), {}, opts, &cb)
|
121
|
+
elsif block_given?
|
122
|
+
yield(nil)
|
123
|
+
self
|
104
124
|
else
|
105
|
-
|
125
|
+
nil
|
106
126
|
end
|
107
127
|
end
|
108
128
|
alias_method :previous_page, :prev_page
|
109
129
|
|
110
130
|
def for_pages hash, pages=1, opts={}, kind=:next_page, &cb
|
111
|
-
if
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
131
|
+
if hash.nil?
|
132
|
+
nil
|
133
|
+
elsif pages <= 0
|
134
|
+
if block_given?
|
135
|
+
yield(nil)
|
136
|
+
self
|
137
|
+
else
|
138
|
+
nil
|
139
|
+
end
|
140
|
+
elsif pages == 1
|
141
|
+
if block_given?
|
142
|
+
yield(hash)
|
143
|
+
yield(nil)
|
144
|
+
self
|
145
|
+
else
|
146
|
+
hash
|
147
|
+
end
|
116
148
|
else
|
117
|
-
|
118
|
-
|
149
|
+
if block_given?
|
150
|
+
yield(hash)
|
151
|
+
send(kind, hash, opts){ |result|
|
152
|
+
if result.nil?
|
153
|
+
yield(nil)
|
154
|
+
else
|
155
|
+
for_pages(result, pages - 1, opts, kind, &cb)
|
156
|
+
end
|
157
|
+
}
|
158
|
+
else
|
159
|
+
merge_data(
|
160
|
+
for_pages(send(kind, hash, opts), pages - 1, opts, kind),
|
161
|
+
hash)
|
162
|
+
end
|
119
163
|
end
|
120
164
|
end
|
121
165
|
|
@@ -14,7 +14,17 @@ RestCore::Flurry = RestCore::Builder.client(:apiKey, :apiAccessCode) do
|
|
14
14
|
|
15
15
|
use s::CommonLogger , nil
|
16
16
|
use s::Cache , nil, 600 do
|
17
|
-
use s::ErrorHandler, lambda{|env|
|
17
|
+
use s::ErrorHandler, lambda{ |env|
|
18
|
+
if env[s::ASYNC]
|
19
|
+
if env[s::RESPONSE_BODY].kind_of?(::Exception)
|
20
|
+
env
|
21
|
+
else
|
22
|
+
env.merge(s::RESPONSE_BODY =>
|
23
|
+
RuntimeError.new(env[s::RESPONSE_BODY]['message']))
|
24
|
+
end
|
25
|
+
else
|
26
|
+
raise env[s::RESPONSE_BODY]['message']
|
27
|
+
end}
|
18
28
|
use s::ErrorDetectorHttp
|
19
29
|
use s::JsonDecode , true
|
20
30
|
end
|
@@ -12,7 +12,17 @@ RestCore::Github = RestCore::Builder.client do
|
|
12
12
|
|
13
13
|
use s::CommonLogger , nil
|
14
14
|
use s::Cache , nil, 600 do
|
15
|
-
use s::ErrorHandler, lambda{|env|
|
15
|
+
use s::ErrorHandler, lambda{ |env|
|
16
|
+
if env[s::ASYNC]
|
17
|
+
if env[s::RESPONSE_BODY].kind_of?(::Exception)
|
18
|
+
env
|
19
|
+
else
|
20
|
+
env.merge(s::RESPONSE_BODY =>
|
21
|
+
RuntimeError.new(env[s::RESPONSE_BODY]['message']))
|
22
|
+
end
|
23
|
+
else
|
24
|
+
raise env[s::RESPONSE_BODY]['message']
|
25
|
+
end}
|
16
26
|
use s::ErrorDetectorHttp
|
17
27
|
use s::JsonDecode , true
|
18
28
|
end
|
@@ -16,13 +16,17 @@ RestCore::Linkedin = RestCore::Builder.client do
|
|
16
16
|
|
17
17
|
use s::CommonLogger , nil
|
18
18
|
use s::Cache , nil, 600 do
|
19
|
-
use s::ErrorHandler, lambda{|env|
|
20
|
-
if
|
21
|
-
|
19
|
+
use s::ErrorHandler, lambda{ |env|
|
20
|
+
if env[s::ASYNC]
|
21
|
+
if env[s::RESPONSE_BODY].kind_of?(::Exception)
|
22
|
+
env
|
23
|
+
else
|
24
|
+
env.merge(s::RESPONSE_BODY =>
|
25
|
+
RuntimeError.new(env[s::RESPONSE_BODY]['message']))
|
26
|
+
end
|
22
27
|
else
|
23
|
-
raise
|
24
|
-
end
|
25
|
-
}
|
28
|
+
raise env[s::RESPONSE_BODY]['message']
|
29
|
+
end}
|
26
30
|
use s::ErrorDetectorHttp
|
27
31
|
use s::JsonDecode , true
|
28
32
|
end
|
@@ -15,7 +15,15 @@ RestCore::Twitter = RestCore::Builder.client do
|
|
15
15
|
use s::CommonLogger , nil
|
16
16
|
use s::Cache , nil, 600 do
|
17
17
|
use s::ErrorHandler, lambda{ |env|
|
18
|
-
|
18
|
+
if env[s::ASYNC]
|
19
|
+
if env[s::RESPONSE_BODY].kind_of?(::Exception)
|
20
|
+
env
|
21
|
+
else
|
22
|
+
env.merge(s::RESPONSE_BODY => ::RestCore::Twitter::Error.call(env))
|
23
|
+
end
|
24
|
+
else
|
25
|
+
raise ::RestCore::Twitter::Error.call(env)
|
26
|
+
end}
|
19
27
|
use s::ErrorDetectorHttp
|
20
28
|
use s::JsonDecode , true
|
21
29
|
end
|
@@ -37,16 +45,17 @@ class RestCore::Twitter::Error < RestCore::Error
|
|
37
45
|
class BadGateway < Twitter::Error::ServerError; end
|
38
46
|
class ServiceUnavailable < Twitter::Error::ServerError; end
|
39
47
|
|
40
|
-
attr_reader :error, :url
|
41
|
-
def initialize error, url=''
|
42
|
-
@error, @url = error, url
|
43
|
-
super("#{error.inspect} from #{url}")
|
48
|
+
attr_reader :error, :code, :url
|
49
|
+
def initialize error, code, url=''
|
50
|
+
@error, @code, @url = error, code, url
|
51
|
+
super("[#{code}] #{error.inspect} from #{url}")
|
44
52
|
end
|
45
53
|
|
46
54
|
def self.call env
|
47
|
-
error, url = env[RESPONSE_BODY],
|
48
|
-
|
49
|
-
|
55
|
+
error, code, url = env[RESPONSE_BODY], env[RESPONSE_STATUS],
|
56
|
+
Middleware.request_uri(env)
|
57
|
+
return new(error, code, url) unless error.kind_of?(Hash)
|
58
|
+
case code
|
50
59
|
when 400; BadRequest
|
51
60
|
when 401; Unauthorized
|
52
61
|
when 403; Forbidden
|
@@ -57,7 +66,7 @@ class RestCore::Twitter::Error < RestCore::Error
|
|
57
66
|
when 502; BadGateway
|
58
67
|
when 503; ServiceUnavailable
|
59
68
|
else ; self
|
60
|
-
end.new(error, url)
|
69
|
+
end.new(error, code, url)
|
61
70
|
end
|
62
71
|
end
|
63
72
|
|
@@ -9,6 +9,8 @@ module RestCore::Config
|
|
9
9
|
DefaultModuleName = 'DefaultAttributes'
|
10
10
|
|
11
11
|
def load_for_rails klass, namespace=nil, app=Rails
|
12
|
+
default_attributes_module(klass) # make sure the default is there
|
13
|
+
# even if there's no config file
|
12
14
|
root = File.expand_path(app.root)
|
13
15
|
path = ["#{root}/config/rest-core.yaml", # YAML should use .yaml
|
14
16
|
"#{root}/config/rest-core.yml" ].find{|p| File.exist?(p)}
|
@@ -29,6 +31,18 @@ module RestCore::Config
|
|
29
31
|
raise ArgumentError.new("#{data} is not a hash") unless
|
30
32
|
data.kind_of?(Hash)
|
31
33
|
|
34
|
+
default_attributes_module(klass).module_eval(
|
35
|
+
data.inject(["extend self\n"]){ |r, (k, v)|
|
36
|
+
# quote strings, leave others free (e.g. false, numbers, etc)
|
37
|
+
r << <<-RUBY
|
38
|
+
def default_#{k}
|
39
|
+
#{v.inspect}
|
40
|
+
end
|
41
|
+
RUBY
|
42
|
+
}.join, __FILE__, __LINE__)
|
43
|
+
end
|
44
|
+
|
45
|
+
def default_attributes_module klass
|
32
46
|
mod = if klass.const_defined?(DefaultModuleName)
|
33
47
|
klass.const_get(DefaultModuleName)
|
34
48
|
else
|
@@ -42,14 +56,6 @@ module RestCore::Config
|
|
42
56
|
end
|
43
57
|
|
44
58
|
klass.send(:extend, mod) unless singleton_class < mod
|
45
|
-
|
46
|
-
mod.module_eval(data.inject(["extend self\n"]){ |r, (k, v)|
|
47
|
-
# quote strings, leave others free (e.g. false, numbers, etc)
|
48
|
-
r << <<-RUBY
|
49
|
-
def default_#{k}
|
50
|
-
#{v.kind_of?(String) ? "'#{v}'" : v}
|
51
|
-
end
|
52
|
-
RUBY
|
53
|
-
}.join, __FILE__, __LINE__)
|
59
|
+
mod
|
54
60
|
end
|
55
61
|
end
|
data/lib/rest-more.rb
CHANGED
@@ -5,6 +5,7 @@ module RestCore
|
|
5
5
|
autoload :Config , 'rest-core/util/config'
|
6
6
|
|
7
7
|
autoload :Bing , 'rest-core/client/bing'
|
8
|
+
autoload :Dropbox , 'rest-core/client/dropbox'
|
8
9
|
autoload :Facebook, 'rest-core/client/facebook'
|
9
10
|
autoload :Flurry , 'rest-core/client/flurry'
|
10
11
|
autoload :Github , 'rest-core/client/github'
|
data/lib/rest-more/version.rb
CHANGED
data/rest-more.gemspec
CHANGED
@@ -2,13 +2,13 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rest-more"
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "1.0.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = [
|
9
9
|
"Cardinal Blue",
|
10
10
|
"Lin Jen-Shin (godfat)"]
|
11
|
-
s.date = "
|
11
|
+
s.date = "2012-03-17"
|
12
12
|
s.description = "Various REST clients such as Facebook and Twitter built with [rest-core][]\n\n[rest-core]: https://github.com/cardinalblue/rest-core"
|
13
13
|
s.email = ["dev (XD) cardinalblue.com"]
|
14
14
|
s.executables = ["rib-rest-core"]
|
@@ -23,6 +23,14 @@ Gem::Specification.new do |s|
|
|
23
23
|
"Rakefile",
|
24
24
|
"TODO.md",
|
25
25
|
"bin/rib-rest-core",
|
26
|
+
"doc/ToC.md",
|
27
|
+
"doc/dependency.md",
|
28
|
+
"doc/design.md",
|
29
|
+
"doc/rest-graph.md",
|
30
|
+
"doc/tutorial/facebook.md",
|
31
|
+
"example/async.rb",
|
32
|
+
"example/facebook.rb",
|
33
|
+
"example/multi.rb",
|
26
34
|
"example/rails2/Gemfile",
|
27
35
|
"example/rails2/README",
|
28
36
|
"example/rails2/Rakefile",
|
@@ -62,9 +70,12 @@ Gem::Specification.new do |s|
|
|
62
70
|
"example/rails3/test/functional/application_controller_test.rb",
|
63
71
|
"example/rails3/test/test_helper.rb",
|
64
72
|
"example/rails3/test/unit/rails_util_test.rb",
|
73
|
+
"example/rainbows.rb",
|
74
|
+
"example/simple.rb",
|
65
75
|
"example/sinatra/config.ru",
|
66
76
|
"lib/rest-core/client/bing.rb",
|
67
77
|
"lib/rest-core/client/bing/rails_util.rb",
|
78
|
+
"lib/rest-core/client/dropbox.rb",
|
68
79
|
"lib/rest-core/client/facebook.rb",
|
69
80
|
"lib/rest-core/client/facebook/rails_util.rb",
|
70
81
|
"lib/rest-core/client/flurry.rb",
|
@@ -86,56 +97,58 @@ Gem::Specification.new do |s|
|
|
86
97
|
"rest-more.gemspec",
|
87
98
|
"task/.gitignore",
|
88
99
|
"task/gemgem.rb",
|
89
|
-
"test/
|
90
|
-
"test/
|
91
|
-
"test/
|
92
|
-
"test/
|
93
|
-
"test/
|
94
|
-
"test/
|
95
|
-
"test/
|
96
|
-
"test/
|
97
|
-
"test/
|
98
|
-
"test/
|
99
|
-
"test/
|
100
|
-
"test/
|
101
|
-
"test/
|
102
|
-
"test/
|
103
|
-
"test/
|
104
|
-
"test/
|
105
|
-
"test/
|
106
|
-
"test/
|
100
|
+
"test/bing/test_api.rb",
|
101
|
+
"test/dropbox/test_api.rb",
|
102
|
+
"test/facebook/config/rest-core.yaml",
|
103
|
+
"test/facebook/test_api.rb",
|
104
|
+
"test/facebook/test_cache.rb",
|
105
|
+
"test/facebook/test_default.rb",
|
106
|
+
"test/facebook/test_error.rb",
|
107
|
+
"test/facebook/test_handler.rb",
|
108
|
+
"test/facebook/test_load_config.rb",
|
109
|
+
"test/facebook/test_misc.rb",
|
110
|
+
"test/facebook/test_oauth.rb",
|
111
|
+
"test/facebook/test_old.rb",
|
112
|
+
"test/facebook/test_page.rb",
|
113
|
+
"test/facebook/test_parse.rb",
|
114
|
+
"test/facebook/test_serialize.rb",
|
115
|
+
"test/facebook/test_timeout.rb",
|
116
|
+
"test/flurry/test_metrics.rb",
|
117
|
+
"test/mixi/test_api.rb",
|
118
|
+
"test/twitter/test_api.rb"]
|
107
119
|
s.homepage = "https://github.com/cardinalblue/rest-more"
|
108
120
|
s.require_paths = ["lib"]
|
109
|
-
s.rubygems_version = "1.8.
|
121
|
+
s.rubygems_version = "1.8.19"
|
110
122
|
s.summary = "Various REST clients such as Facebook and Twitter built with [rest-core][]"
|
111
123
|
s.test_files = [
|
112
|
-
"test/
|
113
|
-
"test/
|
114
|
-
"test/
|
115
|
-
"test/
|
116
|
-
"test/
|
117
|
-
"test/
|
118
|
-
"test/
|
119
|
-
"test/
|
120
|
-
"test/
|
121
|
-
"test/
|
122
|
-
"test/
|
123
|
-
"test/
|
124
|
-
"test/
|
125
|
-
"test/
|
126
|
-
"test/
|
127
|
-
"test/
|
128
|
-
"test/
|
124
|
+
"test/bing/test_api.rb",
|
125
|
+
"test/dropbox/test_api.rb",
|
126
|
+
"test/facebook/test_api.rb",
|
127
|
+
"test/facebook/test_cache.rb",
|
128
|
+
"test/facebook/test_default.rb",
|
129
|
+
"test/facebook/test_error.rb",
|
130
|
+
"test/facebook/test_handler.rb",
|
131
|
+
"test/facebook/test_load_config.rb",
|
132
|
+
"test/facebook/test_misc.rb",
|
133
|
+
"test/facebook/test_oauth.rb",
|
134
|
+
"test/facebook/test_old.rb",
|
135
|
+
"test/facebook/test_page.rb",
|
136
|
+
"test/facebook/test_parse.rb",
|
137
|
+
"test/facebook/test_serialize.rb",
|
138
|
+
"test/facebook/test_timeout.rb",
|
139
|
+
"test/flurry/test_metrics.rb",
|
140
|
+
"test/mixi/test_api.rb",
|
141
|
+
"test/twitter/test_api.rb"]
|
129
142
|
|
130
143
|
if s.respond_to? :specification_version then
|
131
144
|
s.specification_version = 3
|
132
145
|
|
133
146
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
134
|
-
s.add_runtime_dependency(%q<rest-core>, [">= 0"])
|
147
|
+
s.add_runtime_dependency(%q<rest-core>, [">= 1.0.0"])
|
135
148
|
else
|
136
|
-
s.add_dependency(%q<rest-core>, [">= 0"])
|
149
|
+
s.add_dependency(%q<rest-core>, [">= 1.0.0"])
|
137
150
|
end
|
138
151
|
else
|
139
|
-
s.add_dependency(%q<rest-core>, [">= 0"])
|
152
|
+
s.add_dependency(%q<rest-core>, [">= 1.0.0"])
|
140
153
|
end
|
141
154
|
end
|