gem_stream 0.1.1 → 0.1.2

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
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