bf_multi_rss 0.2.2 → 0.3.0

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
  SHA1:
3
- metadata.gz: a12ae479d3f05d6952f7131b0c83309a0551b542
4
- data.tar.gz: ef42582d41700d608a9e0e92ebd9f3a87faf3f8f
3
+ metadata.gz: f7f8b68ede65205602826b8ba45861ebddf403ef
4
+ data.tar.gz: 5a0f1943d2e79858fbdb1f22d31df63749887aae
5
5
  SHA512:
6
- metadata.gz: 9ac0c2f8858987ddbff1c3b6b52a29ecbeb38c46728881892e5aeeb53af56c83ee9a528401dc1f1beaba9464080747814f25b48ee8b05cc0b90969cedfeba2ef
7
- data.tar.gz: 3c29f8b4e443f2750c522a58e50981516d97449aa4e3d08529a089e7403d8561e1ad18a0059e32a982b4a436d589d660d7d71efeaccbd7784d71251f9c28400d
6
+ metadata.gz: 76746b80b089233a173388179f93897a88e4c60e0f659d22a159a00f61615b9f5d1019808c012503aca26b16efd4c987fb06e5773f94f75ed0dcf9163013e965
7
+ data.tar.gz: 33eae3cb22187df2d02e76558ab8b53e3d37fbeb2e2d79832198212a0eb5a03ea8a30505f75dc99123ced57581b3f984d689dd883d425f18dfb5a481cba43107
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'bf_multi_rss/version'
@@ -2,6 +2,7 @@ require 'rss'
2
2
  require 'http'
3
3
  require 'parallel'
4
4
  require 'bf_multi_rss/rss_result'
5
+ require 'bf_multi_rss/rss_error'
5
6
 
6
7
  module BfMultiRss
7
8
  class NotInvertibleError < StandardError
@@ -14,10 +15,15 @@ module BfMultiRss
14
15
  @errors = []
15
16
  end
16
17
 
17
- def self.fetch_rss(uri)
18
+ def fetch_uri(uri)
18
19
  response = HTTP.get(uri)
19
20
  raise_errors(response, uri)
20
- rss = RSS::Parser.parse(response.to_s, false)
21
+ response.to_s
22
+ end
23
+
24
+ def fetch_rss(uri)
25
+ response = fetch_uri(uri)
26
+ rss = RSS::Parser.parse(response, false)
21
27
  if rss.nil?
22
28
  err = 'ParseErr ' + uri
23
29
  raise NotInvertibleError, err
@@ -25,28 +31,30 @@ module BfMultiRss
25
31
  rss.items
26
32
  end
27
33
 
28
- def self.raise_errors(response, uri)
34
+ def raise_errors(response, uri)
29
35
  case response.status
30
36
  when 500
31
37
  err = 'Http500 ' + uri
32
38
  raise NotInvertibleError, err
33
39
  when 404
34
40
  err = 'Http404 ' + uri
35
- raise err
41
+ raise NotInvertibleError, err
36
42
  when 301
37
43
  err = 'Http301 ' + uri
38
44
  raise NotInvertibleError, err
39
45
  end
40
46
  end
41
47
 
42
- def self.fetch_all(uris)
43
- Parallel.map(
48
+ def fetch_all(uris)
49
+ @errors = []
50
+ results = Parallel.map(
44
51
  uris,
45
52
  in_processes: @concurrency
46
53
  ) do |uri|
47
54
  begin
48
55
  posts = fetch_rss(uri)
49
56
  BfMultiRss::RssResult.new(uri, posts)
57
+
50
58
  rescue REXML::ParseException,
51
59
  OpenURI::HTTPError,
52
60
  Errno::EHOSTUNREACH,
@@ -56,11 +64,17 @@ module BfMultiRss
56
64
  Net::ReadTimeout,
57
65
  Errno::ECONNREFUSED,
58
66
  Errno::ECONNRESET,
59
- NotInvertibleError
60
- puts uri
61
- next
67
+ NotInvertibleError => e
68
+ BfMultiRss::RssError.new(uri, e)
62
69
  end
63
70
  end
71
+ errors = results.select do |result|
72
+ result.is_a? BfMultiRss::RssError
73
+ end
74
+ @errors = errors
75
+ results.select do |result|
76
+ !result.is_a? BfMultiRss::RssError
77
+ end
64
78
  end
65
79
  end
66
80
  end
@@ -0,0 +1,9 @@
1
+ module BfMultiRss
2
+ class RssError
3
+ attr_reader :uri, :e
4
+ def initialize(uri, e)
5
+ @uri = uri
6
+ @e = e
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module BfMultiRss
2
- VERSION = '0.2.2'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bf_multi_rss
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Schürmann
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-08 00:00:00.000000000 Z
11
+ date: 2017-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -101,6 +101,7 @@ files:
101
101
  - bin/console
102
102
  - bin/setup
103
103
  - lib/bf_multi_rss/fetcher.rb
104
+ - lib/bf_multi_rss/rss_error.rb
104
105
  - lib/bf_multi_rss/rss_result.rb
105
106
  - lib/bf_multi_rss/version.rb
106
107
  homepage: https://github.com/bundesfeeds