bf_multi_rss 0.2.2 → 0.3.0

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