rest-more 0.8.0 → 1.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.
- 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
|