shopify_unlimited 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # ShopifyUnlimited
2
2
 
3
- TODO: Write a gem description
3
+ 1. Allows API calls like products = Product.find(:all, params:{limit: false}), which will make as many requests as needed to fetch all Products in batches of 250. The result set can be queried for the number of requests required: ```products.requests_made```
4
+ 2.
5
+ 2. Attempts to record api limits a little better by adding ```ShopifyAPI::Base.connection.shopify_credit```. This object contains the credit used since the first request (in a given process) and the time of the first request. It resets when the credit used goes down or the time elapsed has been more than 5 minutes.
4
6
 
5
7
  ## Installation
6
8
 
@@ -16,10 +18,6 @@ Or install it yourself as:
16
18
 
17
19
  $ gem install shopify_unlimited
18
20
 
19
- ## Usage
20
-
21
- TODO: Write usage instructions here
22
-
23
21
  ## Contributing
24
22
 
25
23
  1. Fork it
@@ -0,0 +1,43 @@
1
+ module ::ShopifyUnlimited
2
+ class CreditUsed
3
+ SHOPIFY_CREDIT_LIMIT_PERIOD = 5.minutes
4
+
5
+ attr_accessor :time, :used
6
+ def initialize(used)
7
+ @time = Time.now
8
+ @used = used
9
+ end
10
+
11
+ def stale?(used)
12
+ (@used > used) || ((Time.now - @time) > SHOPIFY_CREDIT_LIMIT_PERIOD)
13
+ end
14
+
15
+ def estimated_time_until_reset
16
+ est = SHOPIFY_CREDIT_LIMIT_PERIOD - (Time.now - @time)
17
+ [est, 0].max
18
+ end
19
+
20
+ end
21
+ end
22
+
23
+ module ::ActiveResource
24
+ class Connection
25
+ SHOPIFY_CREDIT_LIMIT_HEADER_PARAM = 'http_x_shopify_shop_api_call_limit'
26
+
27
+ attr_reader :shopify_credit
28
+ def handle_response_with_response_time_capture(response)
29
+ handle_response_without_response_time_capture(response)
30
+ if(shopify_credit_header = response[SHOPIFY_CREDIT_LIMIT_HEADER_PARAM])
31
+ used = shopify_credit_header.split('/').shift.to_i
32
+
33
+ if @shopify_credit.nil? || @shopify_credit.stale?(used)
34
+ @shopify_credit = ::ShopifyUnlimited::CreditUsed.new(used)
35
+ else
36
+ @shopify_credit.used = used
37
+ end
38
+ end
39
+ response
40
+ end
41
+ alias_method_chain :handle_response, :response_time_capture
42
+ end
43
+ end
@@ -1,3 +1,3 @@
1
1
  module ShopifyUnlimited
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_unlimited
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-18 00:00:00.000000000 Z
12
+ date: 2013-07-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activeresource
@@ -122,6 +122,7 @@ files:
122
122
  - Rakefile
123
123
  - lib/shopify_unlimited.rb
124
124
  - lib/shopify_unlimited/active_resource/base_extensions.rb
125
+ - lib/shopify_unlimited/active_resource/connection_extensions.rb
125
126
  - lib/shopify_unlimited/version.rb
126
127
  - shopify_unlimited.gemspec
127
128
  - spec/spec_helper.rb
@@ -140,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
140
141
  version: '0'
141
142
  segments:
142
143
  - 0
143
- hash: 202707212439120603
144
+ hash: -4386607660778254027
144
145
  required_rubygems_version: !ruby/object:Gem::Requirement
145
146
  none: false
146
147
  requirements:
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
150
  version: '0'
150
151
  segments:
151
152
  - 0
152
- hash: 202707212439120603
153
+ hash: -4386607660778254027
153
154
  requirements: []
154
155
  rubyforge_project:
155
156
  rubygems_version: 1.8.25