rest-core 0.4.0.pre.0 → 0.4.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -58,6 +58,10 @@ class ApplicationController < ActionController::Base
58
58
 
59
59
  def helper; end
60
60
 
61
+ def no_ns_pollution
62
+ render :text => Timeout::Error.name
63
+ end
64
+
61
65
  private
62
66
  def filter_common
63
67
  rc_facebook_setup(:auto_authorize => true, :canvas => '')
@@ -182,4 +182,10 @@ class ApplicationControllerTest < ActionController::TestCase
182
182
  "#{RestCore::Flurry .default_api_key}",
183
183
  @response.body.strip
184
184
  end
185
+
186
+ def test_no_ns_pollution
187
+ get(:no_ns_pollution)
188
+ assert_response :success
189
+ assert_equal 'Timeout::Error', @response.body.strip
190
+ end
185
191
  end
@@ -58,6 +58,10 @@ class ApplicationController < ActionController::Base
58
58
 
59
59
  def helper; end
60
60
 
61
+ def no_ns_pollution
62
+ render :text => Timeout::Error.name
63
+ end
64
+
61
65
  private
62
66
  def filter_common
63
67
  rc_facebook_setup(:auto_authorize => true, :canvas => '')
@@ -182,4 +182,10 @@ class ApplicationControllerTest < ActionController::TestCase
182
182
  "#{RestCore::Flurry .default_api_key}",
183
183
  @response.body.strip
184
184
  end
185
+
186
+ def test_no_ns_pollution
187
+ get(:no_ns_pollution)
188
+ assert_response :success
189
+ assert_equal 'Timeout::Error', @response.body.strip
190
+ end
185
191
  end
@@ -18,10 +18,8 @@ module RestCore::Facebook::DefaultAttributes
18
18
  end
19
19
 
20
20
  module RestCore::Facebook::RailsUtil
21
- include RestCore
22
-
23
21
  def self.init app=Rails
24
- Config.load_for_rails(Facebook, 'facebook', app)
22
+ RestCore::Config.load_for_rails(RestCore::Facebook, 'facebook', app)
25
23
  end
26
24
 
27
25
  module Helper
@@ -34,9 +32,9 @@ module RestCore::Facebook::RailsUtil
34
32
  # skip if included already, any better way to detect this?
35
33
  return if controller.respond_to?(:rc_facebook, true)
36
34
 
37
- controller.rescue_from(Facebook::Error::AccessToken,
35
+ controller.rescue_from(RestCore::Facebook::Error::AccessToken,
38
36
  :with => :rc_facebook_on_access_token_error)
39
- controller.helper(Facebook::RailsUtil::Helper)
37
+ controller.helper(RestCore::Facebook::RailsUtil::Helper)
40
38
  controller.instance_methods.select{ |method|
41
39
  method.to_s =~ /^rc_facebook/
42
40
  }.each{ |method| controller.send(:protected, method) }
@@ -44,9 +42,11 @@ module RestCore::Facebook::RailsUtil
44
42
 
45
43
  def rc_facebook_setup options={}
46
44
  rc_facebook_options_ctl.merge!(
47
- RailsUtilUtil.extract_options(Facebook.members, options, :reject))
45
+ RestCore::RailsUtilUtil.extract_options(
46
+ RestCore::Facebook.members, options, :reject))
48
47
  rc_facebook_options_new.merge!(
49
- RailsUtilUtil.extract_options(Facebook.members, options, :select))
48
+ RestCore::RailsUtilUtil.extract_options(
49
+ RestCore::Facebook.members, options, :select))
50
50
 
51
51
  # we'll need to reinitialize rc_facebook with the new options,
52
52
  # otherwise if you're calling rc_facebook before rc_facebook_setup,
@@ -78,7 +78,7 @@ module RestCore::Facebook::RailsUtil
78
78
 
79
79
  # override this if you need different app_id and secret
80
80
  def rc_facebook
81
- @rc_facebook ||= Facebook.new(rc_facebook_options_new)
81
+ @rc_facebook ||= RestCore::Facebook.new(rc_facebook_options_new)
82
82
  end
83
83
 
84
84
  def rc_facebook_on_access_token_error error=nil
@@ -151,7 +151,7 @@ module RestCore::Facebook::RailsUtil
151
151
  if rc_facebook_options_ctl.has_key?(key)
152
152
  rc_facebook_options_ctl[key]
153
153
  else
154
- Facebook.send("default_#{key}")
154
+ RestCore::Facebook.send("default_#{key}")
155
155
  end
156
156
  end
157
157
 
@@ -7,10 +7,8 @@ module RestCore::Flurry::DefaultAttributes
7
7
  end
8
8
 
9
9
  module RestCore::Flurry::RailsUtil
10
- include RestCore
11
-
12
10
  def self.init app=Rails
13
- Config.load_for_rails(Flurry, 'flurry', app)
11
+ RestCore::Config.load_for_rails(RestCore::Flurry, 'flurry', app)
14
12
  end
15
13
 
16
14
  module Helper
@@ -23,7 +21,7 @@ module RestCore::Flurry::RailsUtil
23
21
  # skip if included already, any better way to detect this?
24
22
  return if controller.respond_to?(:rc_flurry, true)
25
23
 
26
- controller.helper(Flurry::RailsUtil::Helper)
24
+ controller.helper(RestCore::Flurry::RailsUtil::Helper)
27
25
  controller.instance_methods.select{ |method|
28
26
  method.to_s =~ /^rc_flurry/
29
27
  }.each{ |method| controller.send(:protected, method) }
@@ -31,9 +29,11 @@ module RestCore::Flurry::RailsUtil
31
29
 
32
30
  def rc_flurry_setup options={}
33
31
  rc_flurry_options_ctl.merge!(
34
- RailsUtilUtil.extract_options(Flurry.members, options, :reject))
32
+ RestCore::RailsUtilUtil.extract_options(
33
+ RestCore::Flurry.members, options, :reject))
35
34
  rc_flurry_options_new.merge!(
36
- RailsUtilUtil.extract_options(Flurry.members, options, :select))
35
+ RestCore::RailsUtilUtil.extract_options(
36
+ RestCore::Flurry.members, options, :select))
37
37
 
38
38
  # we'll need to reinitialize rc_flurry with the new options,
39
39
  # otherwise if you're calling rc_flurry before rc_flurry_setup,
@@ -45,7 +45,7 @@ module RestCore::Flurry::RailsUtil
45
45
  end
46
46
 
47
47
  def rc_flurry
48
- @rc_flurry ||= Flurry.new(rc_flurry_options_new)
48
+ @rc_flurry ||= RestCore::Flurry.new(rc_flurry_options_new)
49
49
  end
50
50
 
51
51
  module_function
@@ -55,7 +55,7 @@ module RestCore::Flurry::RailsUtil
55
55
  if rc_flurry_options_ctl.has_key?(key)
56
56
  rc_flurry_options_ctl[key]
57
57
  else
58
- Flurry.send("default_#{key}")
58
+ RestCore::Flurry.send("default_#{key}")
59
59
  end
60
60
  end
61
61
 
@@ -43,9 +43,16 @@ module RestCore::Flurry::Client
43
43
 
44
44
  # see: http://wiki.flurry.com/index.php?title=AppMetrics
45
45
  # >> f.metrics('ActiveUsers', {}, :weeks => 4)
46
- # => [["2011-09-16", 7929], ["2011-09-15", 36453], ["2011-09-14", 34026],
47
- # ["2011-09-13", 34245], ["2011-09-12", 36879], ["2011-09-11", 44101],
48
- # ["2011-09-10", 43362], ["2011-09-09", 36442], ...
46
+ # => [["2011-09-19", 6516], ["2011-09-18", 43920], ["2011-09-17", 45412],
47
+ # ["2011-09-16", 40972], ["2011-09-15", 37587], ["2011-09-14", 34918],
48
+ # ["2011-09-13", 35223], ["2011-09-12", 37750], ["2011-09-11", 45057],
49
+ # ["2011-09-10", 44077], ["2011-09-09", 36683], ["2011-09-08", 34871],
50
+ # ["2011-09-07", 35960], ["2011-09-06", 35829], ["2011-09-05", 37777],
51
+ # ["2011-09-04", 40233], ["2011-09-03", 39306], ["2011-09-02", 33467],
52
+ # ["2011-09-01", 31558], ["2011-08-31", 32096], ["2011-08-30", 34076],
53
+ # ["2011-08-29", 34950], ["2011-08-28", 40456], ["2011-08-27", 41332],
54
+ # ["2011-08-26", 37737], ["2011-08-25", 34392], ["2011-08-24", 33560],
55
+ # ["2011-08-23", 34722]]
49
56
  def metrics path, query={}, opts={}
50
57
  if weeks = opts.delete(:weeks)
51
58
  query[:startDate] =
@@ -59,23 +66,24 @@ module RestCore::Flurry::Client
59
66
  end
60
67
 
61
68
  # >> f.weekly(f.metrics('ActiveUsers', {}, :weeks => 4))
62
- # => [258213, 247935, 260418, 236995]
69
+ # => [244548, 270227, 248513, 257149]
63
70
  def weekly array
64
- start = Time.parse(array.last.first).to_i
71
+ start = Time.parse(array.first.first).to_i
65
72
  array.group_by{ |(date, value)|
66
73
  current = Time.parse(date).to_i
67
- (current - start) / (86400*7)
74
+ - (current - start) / (86400*7)
68
75
  # calling .last to discard week numbers created by group_by
69
76
  }.sort.map(&:last).map{ |week|
70
77
  week.map{ |(date, num)| num }.inject(&:+) }
71
78
  end
72
79
 
73
80
  # >> f.sum(f.weekly(f.metrics('ActiveUsers', {}, :weeks => 4)))
74
- # => [258213, 495870, 768771, 982343]
81
+ # => [1020437, 775889, 505662, 257149]
75
82
  def sum array
76
- array.map.with_index{ |num, index|
77
- num + array[1, index].inject(0, &:+)
78
- }
83
+ reverse = array.reverse
84
+ reverse.map.with_index{ |_, index|
85
+ reverse[1, index].inject(reverse.first, &:+)
86
+ }.reverse
79
87
  end
80
88
 
81
89
  def query
@@ -45,7 +45,3 @@ module RestCore::Mixi::Client
45
45
  end
46
46
 
47
47
  RestCore::Mixi.send(:include, RestCore::Mixi::Client)
48
-
49
- $m = RestCore::Mixi.new(:consumer_key => '87b9651a2291e4853ac0',
50
- :consumer_secret => '98866989c89c42e47d7d38394637faa84341ebb4',
51
- :redirect_uri => 'http://pic-collage.com')
@@ -1,4 +1,4 @@
1
1
 
2
2
  module RestCore
3
- VERSION = '0.4.0.pre.0'
3
+ VERSION = '0.4.0.pre.1'
4
4
  end
data/rest-core.gemspec CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rest-core"
5
- s.version = "0.4.0.pre.0"
5
+ s.version = "0.4.0.pre.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = [
9
9
  "Cardinal Blue",
10
10
  "Lin Jen-Shin (godfat)"]
11
- s.date = "2011-09-18"
11
+ s.date = "2011-09-19"
12
12
  s.description = "A modular Ruby REST client collection/infrastructure\n\nIn this era of web services and mashups, we have seen a blooming of REST\nAPIs. One might wonder, how do we use these APIs easily and elegantly?\nSince REST is very simple compared to SOAP, it is not hard to build a\ndedicated client ourselves.\n\nWe have developed [rest-core][] with composable middlewares to build a\nREST client, based on the effort from [rest-graph][]. In the cases of\ncommon APIs such as Facebook, Github, and Twitter, developers can simply\nuse the built-in dedicated clients provided by rest-core, or do it yourself\nfor any other REST APIs.\n\n[rest-core]: http://github.com/cardinalblue/rest-core\n[rest-graph]: http://github.com/cardinalblue/rest-graph"
13
13
  s.email = ["dev (XD) cardinalblue.com"]
14
14
  s.executables = ["rib-rest-core"]
@@ -129,6 +129,7 @@ Gem::Specification.new do |s|
129
129
  "test/client/facebook/test_parse.rb",
130
130
  "test/client/facebook/test_serialize.rb",
131
131
  "test/client/facebook/test_timeout.rb",
132
+ "test/client/flurry/test_metrics.rb",
132
133
  "test/client/twitter/test_api.rb",
133
134
  "test/test_builder.rb",
134
135
  "test/test_client.rb",
@@ -152,6 +153,7 @@ Gem::Specification.new do |s|
152
153
  "test/client/facebook/test_parse.rb",
153
154
  "test/client/facebook/test_serialize.rb",
154
155
  "test/client/facebook/test_timeout.rb",
156
+ "test/client/flurry/test_metrics.rb",
155
157
  "test/client/twitter/test_api.rb",
156
158
  "test/test_builder.rb",
157
159
  "test/test_client.rb",
@@ -2,7 +2,6 @@
2
2
  require 'rest-core/test'
3
3
 
4
4
  require 'rest-core/util/config'
5
- ::Rails = Object.new
6
5
 
7
6
  describe RestCore::Config do
8
7
 
@@ -22,9 +21,10 @@ describe RestCore::Config do
22
21
  end
23
22
 
24
23
  should 'honor rails config' do
25
- mock(Rails).env { 'test' }
26
- mock(Rails).root{ File.dirname(__FILE__) }
27
- RestCore::Config.load_for_rails(@klass, 'facebook')
24
+ app = Object.new
25
+ mock(app).env { 'test' }
26
+ mock(app).root{ File.dirname(__FILE__) }
27
+ RestCore::Config.load_for_rails(@klass, 'facebook', app)
28
28
  check
29
29
  end
30
30
 
@@ -0,0 +1,83 @@
1
+
2
+ require 'rest-core/test'
3
+
4
+ require 'time'
5
+
6
+ describe RestCore::Flurry do
7
+ after do
8
+ WebMock.reset!
9
+ RR.verify
10
+ end
11
+
12
+ before do
13
+ startDate = '2011-08-23'
14
+ endDate = '2011-09-19'
15
+ @flurry = RestCore::Flurry.new
16
+ stub(@flurry).Time.stub!.now{ Time.parse(endDate) }
17
+ stub_request(:get,
18
+ "http://api.flurry.com/appMetrics/ActiveUsers?" \
19
+ "startDate=#{startDate}&endDate=#{endDate}").
20
+ to_return(:body =>
21
+ '{"@startDate":"2011-08-23",
22
+ "@metric":"ActiveUsersByDay",
23
+ "@endDate":"2011-09-19",
24
+ "@version":"1.0",
25
+ "@generatedDate":"9/19/11 5:54 AM",
26
+ "day":
27
+ [{"@value":"34722","@date":"2011-08-23"},
28
+ {"@value":"33560","@date":"2011-08-24"},
29
+ {"@value":"34392","@date":"2011-08-25"},
30
+ {"@value":"37737","@date":"2011-08-26"},
31
+ {"@value":"41332","@date":"2011-08-27"},
32
+ {"@value":"40456","@date":"2011-08-28"},
33
+ {"@value":"34950","@date":"2011-08-29"},
34
+ {"@value":"34076","@date":"2011-08-30"},
35
+ {"@value":"32096","@date":"2011-08-31"},
36
+ {"@value":"31558","@date":"2011-09-01"},
37
+ {"@value":"33467","@date":"2011-09-02"},
38
+ {"@value":"39306","@date":"2011-09-03"},
39
+ {"@value":"40233","@date":"2011-09-04"},
40
+ {"@value":"37777","@date":"2011-09-05"},
41
+ {"@value":"35829","@date":"2011-09-06"},
42
+ {"@value":"35960","@date":"2011-09-07"},
43
+ {"@value":"34871","@date":"2011-09-08"},
44
+ {"@value":"36683","@date":"2011-09-09"},
45
+ {"@value":"44077","@date":"2011-09-10"},
46
+ {"@value":"45057","@date":"2011-09-11"},
47
+ {"@value":"37750","@date":"2011-09-12"},
48
+ {"@value":"35223","@date":"2011-09-13"},
49
+ {"@value":"34918","@date":"2011-09-14"},
50
+ {"@value":"37587","@date":"2011-09-15"},
51
+ {"@value":"40972","@date":"2011-09-16"},
52
+ {"@value":"45412","@date":"2011-09-17"},
53
+ {"@value":"43920","@date":"2011-09-18"},
54
+ {"@value":"6516","@date":"2011-09-19"}]}')
55
+
56
+ @active_users =
57
+ [["2011-09-19", 6516], ["2011-09-18", 43920], ["2011-09-17", 45412],
58
+ ["2011-09-16", 40972], ["2011-09-15", 37587], ["2011-09-14", 34918],
59
+ ["2011-09-13", 35223], ["2011-09-12", 37750], ["2011-09-11", 45057],
60
+ ["2011-09-10", 44077], ["2011-09-09", 36683], ["2011-09-08", 34871],
61
+ ["2011-09-07", 35960], ["2011-09-06", 35829], ["2011-09-05", 37777],
62
+ ["2011-09-04", 40233], ["2011-09-03", 39306], ["2011-09-02", 33467],
63
+ ["2011-09-01", 31558], ["2011-08-31", 32096], ["2011-08-30", 34076],
64
+ ["2011-08-29", 34950], ["2011-08-28", 40456], ["2011-08-27", 41332],
65
+ ["2011-08-26", 37737], ["2011-08-25", 34392], ["2011-08-24", 33560],
66
+ ["2011-08-23", 34722]]
67
+
68
+ @weekly = [244548, 270227, 248513, 257149]
69
+ end
70
+
71
+ should 'metrics("ActiveUsers")' do
72
+ @flurry.metrics('ActiveUsers', {}, :weeks => 4).should.eq @active_users
73
+
74
+ end
75
+
76
+ should 'weekly(metrics("ActiveUsers"))' do
77
+ @flurry.weekly(@active_users).should.eq @weekly
78
+ end
79
+
80
+ should 'sum(weekly(metrics("ActiveUsers")))' do
81
+ @flurry.sum(@weekly).should.eq [1020437, 775889, 505662, 257149]
82
+ end
83
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.pre.0
4
+ version: 0.4.0.pre.1
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-09-18 00:00:00.000000000Z
13
+ date: 2011-09-19 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
17
- requirement: &2152729180 !ruby/object:Gem::Requirement
17
+ requirement: &2168955760 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,7 +22,7 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *2152729180
25
+ version_requirements: *2168955760
26
26
  description: ! 'A modular Ruby REST client collection/infrastructure
27
27
 
28
28
 
@@ -172,6 +172,7 @@ files:
172
172
  - test/client/facebook/test_parse.rb
173
173
  - test/client/facebook/test_serialize.rb
174
174
  - test/client/facebook/test_timeout.rb
175
+ - test/client/flurry/test_metrics.rb
175
176
  - test/client/twitter/test_api.rb
176
177
  - test/test_builder.rb
177
178
  - test/test_client.rb
@@ -215,6 +216,7 @@ test_files:
215
216
  - test/client/facebook/test_parse.rb
216
217
  - test/client/facebook/test_serialize.rb
217
218
  - test/client/facebook/test_timeout.rb
219
+ - test/client/flurry/test_metrics.rb
218
220
  - test/client/twitter/test_api.rb
219
221
  - test/test_builder.rb
220
222
  - test/test_client.rb