fb-support 1.0.0.alpha4 → 1.0.0.alpha5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 546eed6c10b325a222ca07629cb121a99c3c9e77
4
- data.tar.gz: 5936c04386c5a4744e5d31151ce196351f3a5191
2
+ SHA256:
3
+ metadata.gz: 90a4cb148ef3c1b148eac8953b611cd63f3034999cb5a1e33795e85085c0c91b
4
+ data.tar.gz: 71d38e58297da8b68cae44554f381025eba344d187c0db5f5908c8ee07a2d2b4
5
5
  SHA512:
6
- metadata.gz: 761cd0a37f0ff28556fe70e9966d68c15c57067e99276df01828488e5af6bb3ef72f22b37aecec6f1952c5b016ad84d4b70263115d6adc76ae985ad935be0ffb
7
- data.tar.gz: e9f94929536f404eda4e88742bcbaa4dba2ff9cd403a0aefe5dfdf53c1d1d08350263f9482df3799e9e84dcb9e707d054c004231d8b3990893303a6d481aedde
6
+ metadata.gz: d8e9af893c25d8476c2a0cc40a14c0740692055f4275a6c3f7f72bb97f857af3fe5abe800808084498260c0c050d4c0f5f950e63113c56b0e14e0043db251578
7
+ data.tar.gz: 0e5e1c572d0d07548406c52f225b404f39d450948d4987635b2d587e4770911a1def7d43abe072c27e04413b379f9b546762135217dbd6244ad9a5f35ae060b9
data/CHANGELOG.md CHANGED
@@ -6,6 +6,11 @@ For more information about changelogs, check
6
6
  [Keep a Changelog](http://keepachangelog.com) and
7
7
  [Vandamme](http://tech-angels.github.io/vandamme).
8
8
 
9
+
10
+ ## 1.0.0.alpha5 - 2018-08-23
11
+
12
+ * [FEATURE] Wait when usage status is approaching limit.
13
+
9
14
  ## 1.0.0 - 2017-03-17
10
15
 
11
16
  * [FEATURE] Added Fb::Configuration and Fb.configure
data/README.md CHANGED
@@ -20,6 +20,16 @@ Fb::Support provides:
20
20
  * [Fb::HTTPRequest](http://www.rubydoc.info/gems/fb-support/Fb/HTTPRequest)
21
21
  * [Fb::HTTPError](http://www.rubydoc.info/gems/fb-support/Fb/HTTPError)
22
22
 
23
+ ## Waiting Time
24
+
25
+ Facebook has [hourly rate limiting](https://developers.facebook.com/docs/graph-api/advanced/rate-limiting/#application-level-rate-limiting). `Fb::HTTPRequest` has `waiting_time` class variable
26
+ to sleep the amount of time (in seconds) when it is approaching (with 85% of usage)
27
+ in case the variable is set as follows.
28
+
29
+ ```rb
30
+ Fb::HTTPRequest.waiting_time = 360
31
+ ```
32
+
23
33
  How to test
24
34
  ===========
25
35
 
@@ -34,11 +34,21 @@ module Fb
34
34
  @params = options.fetch :params, {}
35
35
  end
36
36
 
37
+ class << self
38
+ # @return [Integer] time in seconds for waiting when hourly rate limit
39
+ # for the Facebook app reached over 85%
40
+ attr_accessor :waiting_time
41
+ end
42
+
37
43
  # Sends the request and returns the response with the body parsed from JSON.
38
44
  # @return [Net::HTTPResponse] if the request succeeds.
39
45
  # @raise [Fb::HTTPError] if the request fails.
40
46
  def run
41
47
  if response.is_a? @expected_response
48
+ if (waiting_time = self.class.waiting_time) &&
49
+ rate_limiting_header.values.any? {|value| value > 85 }
50
+ sleep waiting_time
51
+ end
42
52
  response.tap do
43
53
  parse_response!
44
54
  end
@@ -52,6 +62,11 @@ module Fb
52
62
  uri.to_s
53
63
  end
54
64
 
65
+ # @return [Hash] rate limit status in the response header.
66
+ def rate_limiting_header
67
+ JSON response.to_hash['x-app-usage'][0]
68
+ end
69
+
55
70
  private
56
71
 
57
72
  # @return [URI::HTTPS] the (memoized) URI of the request.
@@ -3,6 +3,6 @@ module Fb
3
3
  module Support
4
4
  # @return [String] the SemVer-compatible gem version.
5
5
  # @see http://semver.org
6
- VERSION = '1.0.0.alpha4'
6
+ VERSION = '1.0.0.alpha5'
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fb-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha4
4
+ version: 1.0.0.alpha5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claudio Baccigalupo
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-03-28 00:00:00.000000000 Z
12
+ date: 2018-08-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  version: 1.3.1
143
143
  requirements: []
144
144
  rubyforge_project:
145
- rubygems_version: 2.6.13
145
+ rubygems_version: 2.7.6
146
146
  signing_key:
147
147
  specification_version: 4
148
148
  summary: Support utilities for Fb gems