gem_stream 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f73ec467350ca9b5b01dbceace815fb701230d1d1806c4c3fffb8d03f483bbb0
4
- data.tar.gz: 97164d7f6e2d1b67b92e961ae5f5c430df44b18e8bdfa1eb556f207dab352c24
3
+ metadata.gz: 883133d94b821f25d99587d020e56185d3f9841a53b5cd1d8b486845ceb547c8
4
+ data.tar.gz: 6c2732efcbe2870a3e47146392437860d4c8bfaa862c557b84db5faf72161962
5
5
  SHA512:
6
- metadata.gz: 43e1855e103cda8c670208e1a6de59976c9f8794183aec1ad522a667fdfe155677a89bdb3288990542b025da30427312b129b46a1432bd4816b39685f57954eb
7
- data.tar.gz: e540e79b780b68145faec35cd56500697228750ba76f8c9c8f9a85a8bdff880bd921991a0aef4c5ef570ad976b386b80140e253f30affa7fdc208e7ae6971192
6
+ metadata.gz: 208c3f8239331d9103cf38587039413785b5531480c2e070b0b2ffa9687eb138d3c5288e82ddd46a804c41e8b468812840793bf38c7281e4005a72a60e4b9072
7
+ data.tar.gz: 4bebd46c64e719871154b6c3b4b6f73a8143b1ac726fcb159ce9b81c93c8061de13d12959dd915160c1a2eef2c5111f1aed8abcbd93bad1c7345ccf479693f8f
data/Gemfile.lock CHANGED
@@ -1,17 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gem_stream (0.1.0)
4
+ gem_stream (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  addressable (2.6.0)
10
10
  public_suffix (>= 2.0.2, < 4.0)
11
+ coderay (1.1.2)
11
12
  crack (0.4.3)
12
13
  safe_yaml (~> 1.0.0)
13
14
  diff-lcs (1.3)
14
15
  hashdiff (0.4.0)
16
+ method_source (0.9.2)
17
+ pry (0.12.2)
18
+ coderay (~> 1.1.0)
19
+ method_source (~> 0.9.0)
15
20
  public_suffix (3.1.1)
16
21
  rake (10.5.0)
17
22
  rspec (3.8.0)
@@ -41,6 +46,7 @@ PLATFORMS
41
46
  DEPENDENCIES
42
47
  bundler (~> 1.16)
43
48
  gem_stream!
49
+ pry
44
50
  rake (~> 10.0)
45
51
  rspec (~> 3.0)
46
52
  timecop (~> 0.9)
data/README.md CHANGED
@@ -31,8 +31,8 @@ Example:
31
31
 
32
32
  ```ruby
33
33
  GemStream.configure do |c|
34
- c.on_version = -> (version) { handle_version(version) }
35
- c.on_synced = -> () { handle_sync }
34
+ c.on_version = -> (version) { YourVersionHandler.handle(version) }
35
+ c.on_synced = -> () { YourSyncHandler.handle }
36
36
  end
37
37
  ```
38
38
 
data/gem_stream.gemspec CHANGED
@@ -22,6 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.16"
25
+ spec.add_development_dependency "pry"
25
26
  spec.add_development_dependency "rake", "~> 10.0"
26
27
  spec.add_development_dependency "rspec", "~> 3.0"
27
28
  spec.add_development_dependency "timecop", "~> 0.9"
@@ -17,19 +17,19 @@ module GemStream
17
17
  end
18
18
  end
19
19
 
20
- def on_version=(hook)
21
- if hook.is_a?(Proc)
22
- @on_version = hook
20
+ def on_version=(proc)
21
+ if proc.is_a?(Proc)
22
+ @on_version = proc
23
23
  else
24
- raise ArgumentError, "Please specify a Proc for the on_version hook"
24
+ raise ArgumentError, "Please specify a Proc for the on_version proc"
25
25
  end
26
26
  end
27
27
 
28
- def on_synced=(hook)
29
- if hook.is_a?(Proc)
30
- @on_synced = hook
28
+ def on_synced=(proc)
29
+ if proc.is_a?(Proc)
30
+ @on_synced = proc
31
31
  else
32
- raise ArgumentError, "Please specify a Proc for the on_synced hook"
32
+ raise ArgumentError, "Please specify a Proc for the on_synced proc"
33
33
  end
34
34
  end
35
35
  end
@@ -4,7 +4,6 @@ require 'net/http'
4
4
 
5
5
  module GemStream
6
6
  class Follower
7
- SYNCED_IF_WITHIN_SECONDS_OF_PRESENT = 10
8
7
  RUBYGEMS_ENDPOINT = 'https://rubygems.org/api/v1/timeframe_versions.json'.freeze
9
8
  MAX_RUBY_GEMS_QUERY_RANGE_IN_SECONDS = 6 * 86400 # It's actually 7 days, but use 6 to be safe
10
9
 
@@ -12,8 +11,12 @@ module GemStream
12
11
  self.new(start_time).follow
13
12
  end
14
13
 
15
- def initialize(synced_up_to_time)
16
- @synced_up_to_time = synced_up_to_time
14
+ def initialize(start_time)
15
+ @synced_up_to_time = start_time
16
+ @on_version = GemStream.configuration.on_version.dup
17
+ @on_synced = GemStream.configuration.on_synced.dup
18
+ @api_call_interval = GemStream.configuration.api_call_interval.dup
19
+ @keep_streaming = true
17
20
  end
18
21
 
19
22
  def follow
@@ -28,22 +31,16 @@ module GemStream
28
31
  private
29
32
 
30
33
  def keep_streaming?
31
- (Time.now - @synced_up_to_time) > SYNCED_IF_WITHIN_SECONDS_OF_PRESENT
34
+ @keep_streaming
32
35
  end
33
36
 
34
37
  def synced
35
- GemStream.configuration.on_synced.call()
38
+ @on_synced.call()
36
39
  end
37
40
 
38
41
  def query_rubygems(page: 1)
39
- params = {
40
- from: @synced_up_to_time.iso8601,
41
- to: (@synced_up_to_time + MAX_RUBY_GEMS_QUERY_RANGE_IN_SECONDS).iso8601,
42
- page: page
43
- }
44
-
45
42
  uri = URI(RUBYGEMS_ENDPOINT)
46
- uri.query = URI.encode_www_form(params)
43
+ uri.query = URI.encode_www_form(query_params(page))
47
44
  response = Net::HTTP.get_response(uri)
48
45
 
49
46
  if response.code != '200'
@@ -53,13 +50,16 @@ module GemStream
53
50
 
54
51
  versions = JSON.parse(response.body)
55
52
 
56
- return if versions.size == 0
53
+ if versions.size == 0
54
+ @keep_streaming = page == 1
55
+ return
56
+ end
57
57
 
58
58
  versions.each do |version|
59
- GemStream.configuration.on_version.call(version)
59
+ @on_version.call(version)
60
60
  end
61
61
 
62
- sleep GemStream.configuration.api_call_interval
62
+ sleep @api_call_interval
63
63
  query_rubygems(page: page + 1)
64
64
  end
65
65
 
@@ -69,5 +69,13 @@ module GemStream
69
69
  Time.now
70
70
  ].min
71
71
  end
72
+
73
+ def query_params(page)
74
+ {
75
+ from: @synced_up_to_time.iso8601,
76
+ to: (@synced_up_to_time + MAX_RUBY_GEMS_QUERY_RANGE_IN_SECONDS).iso8601,
77
+ page: page,
78
+ }
79
+ end
72
80
  end
73
81
  end
@@ -1,3 +1,3 @@
1
1
  module GemStream
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Wilkens
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pry
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement