gem_stream 0.1.3 → 0.1.4

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: 4faf99f974a3ff813db5954dac1a7e67df2b2958d2e00b1a82af632fe9594333
4
- data.tar.gz: 1cd918578194205cf588ea288d08d0c1112a0b41d47d9db58f4bf61964f876e8
3
+ metadata.gz: 4a22f7ffe295ffef583bbda157021b44d65afed4f11b86570826d873dd432517
4
+ data.tar.gz: a109cd0d77755965d9c8d376895edde12c5b5e3d9722e5baecc6f5cf43a9e7d8
5
5
  SHA512:
6
- metadata.gz: 17857354775d81127ce6e9ac6b012d56ca54d9e58fac4d9af884192005801669bd4c02b147ea022fff748b66105981bc0148d5229253f713724f6007d416b3dc
7
- data.tar.gz: 28a5f20e091fd6b9f290c0b3eca76c10680806763e633377e9ccfd6787ef25eed198d937e02ff0c5d0e6f1f8faffc814f7795c3be3d1e9f8a478042f53460eb6
6
+ metadata.gz: a589775ac97d2d1b494c263f802a59a10fdcbc11119ff2742a7b371ff3122fb46f442b41a90ba5c82e1fbe22233c3a92d2aed6bee2ea6f37e29b4dc1977395aa
7
+ data.tar.gz: d51cdfa0e406b7c2c720c5c26225be1d1bf139e36daf7e0884b035c00b8fce5f3219882a0b40665af12344d838bc8cef924550a66819f6941865f72269cbf17d
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/README.md CHANGED
@@ -47,6 +47,10 @@ Once you've handled configuration, you can use GemStream like this:
47
47
  GemStream::Follower.follow_from(start_time)
48
48
  ```
49
49
 
50
+ ### Errors
51
+
52
+ If a Rubygems api error is encountered, GemStream will raise a `GemStream::ApiError`. In most cases, you can rescue this error and start a new follower from where you left of at. To get the time that you left off at, you can check the `GemStream::Follower` instance `synced_up_to_time` attribute. Note that restarting from this time may replay some `on_version` callbacks, as `synced_up_to_time` only represents the beginning of the last time frame you queried, not the published time of the most recent gem version you received back.
53
+
50
54
  ## Development
51
55
 
52
56
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -1,4 +1,5 @@
1
1
  require 'gem_stream/version'
2
+ require 'gem_stream/api_error'
2
3
  require 'gem_stream/follower'
3
4
  require 'gem_stream/configuration'
4
5
 
@@ -0,0 +1,3 @@
1
+ module GemStream
2
+ class ApiError < StandardError; end
3
+ end
@@ -4,11 +4,13 @@ require 'net/http'
4
4
 
5
5
  module GemStream
6
6
  class Follower
7
+ attr_reader :synced_up_to_time
8
+
7
9
  RUBYGEMS_ENDPOINT = 'https://rubygems.org/api/v1/timeframe_versions.json'.freeze
8
10
  MAX_RUBY_GEMS_QUERY_RANGE_IN_SECONDS = 6 * 86400 # It's actually 7 days, but use 6 to be safe
9
11
 
10
12
  def self.follow_from(start_time)
11
- self.new(start_time).follow
13
+ self.new(start_time).tap(&:follow)
12
14
  end
13
15
 
14
16
  def initialize(start_time)
@@ -45,8 +47,8 @@ module GemStream
45
47
  response = Net::HTTP.get_response(uri)
46
48
 
47
49
  if response.code != '200'
48
- puts "Got status #{response.code} from rubygems for #{RUBYGEMS_ENDPOINT} with options: #{params.inspect}"
49
- return
50
+ msg = "Got status #{response.code} from rubygems for #{RUBYGEMS_ENDPOINT} with options: #{params.inspect}"
51
+ raise GemStream::ApiError, msg
50
52
  end
51
53
 
52
54
  versions = JSON.parse(response.body)
@@ -1,3 +1,3 @@
1
1
  module GemStream
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem_stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fletcher Wilkens
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-14 00:00:00.000000000 Z
11
+ date: 2019-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -119,7 +119,6 @@ files:
119
119
  - ".rspec"
120
120
  - ".travis.yml"
121
121
  - Gemfile
122
- - Gemfile.lock
123
122
  - LICENSE
124
123
  - README.md
125
124
  - Rakefile
@@ -127,6 +126,7 @@ files:
127
126
  - bin/setup
128
127
  - gem_stream.gemspec
129
128
  - lib/gem_stream.rb
129
+ - lib/gem_stream/api_error.rb
130
130
  - lib/gem_stream/configuration.rb
131
131
  - lib/gem_stream/follower.rb
132
132
  - lib/gem_stream/version.rb
@@ -1,57 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- gem_stream (0.1.3)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- addressable (2.6.0)
10
- public_suffix (>= 2.0.2, < 4.0)
11
- coderay (1.1.2)
12
- crack (0.4.3)
13
- safe_yaml (~> 1.0.0)
14
- diff-lcs (1.3)
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)
20
- public_suffix (3.1.1)
21
- rake (10.5.0)
22
- rspec (3.8.0)
23
- rspec-core (~> 3.8.0)
24
- rspec-expectations (~> 3.8.0)
25
- rspec-mocks (~> 3.8.0)
26
- rspec-core (3.8.0)
27
- rspec-support (~> 3.8.0)
28
- rspec-expectations (3.8.3)
29
- diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.8.0)
31
- rspec-mocks (3.8.0)
32
- diff-lcs (>= 1.2.0, < 2.0)
33
- rspec-support (~> 3.8.0)
34
- rspec-support (3.8.0)
35
- safe_yaml (1.0.5)
36
- timecop (0.9.1)
37
- vcr (5.0.0)
38
- webmock (3.6.0)
39
- addressable (>= 2.3.6)
40
- crack (>= 0.3.2)
41
- hashdiff (>= 0.4.0, < 2.0.0)
42
-
43
- PLATFORMS
44
- ruby
45
-
46
- DEPENDENCIES
47
- bundler (~> 1.16)
48
- gem_stream!
49
- pry
50
- rake (~> 10.0)
51
- rspec (~> 3.0)
52
- timecop (~> 0.9)
53
- vcr (~> 5.0)
54
- webmock (~> 3.6)
55
-
56
- BUNDLED WITH
57
- 1.17.3