lideo 1.1.0 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cli.rb +11 -0
  3. data/lib/fetcher.rb +11 -7
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b75bcd19ae0ea2074a456a66a458d1b305419628dbabb26c6cc4b2dd6324aa6c
4
- data.tar.gz: 1022104a165fca7057ef73ceb62410634b234aaa1648d84ae3820534342250a0
3
+ metadata.gz: 68b144c6a100b8adb3707cc42190c4374f4ad7ceee6be1d1d92a95bec3fa328d
4
+ data.tar.gz: 38c378b27233565d043ff2e1e1638ea816146cc76c75769528a50c0ccb23ab09
5
5
  SHA512:
6
- metadata.gz: d5df80edaba57a9e3f69acce1dc3bc7c8ea2e150397e4d6b265bedf71c9bf28fb3938610b7ac738a9dacd997f2cfb2acdae1f99acf49e211d1ea3e5fb9ab9277
7
- data.tar.gz: 5b7bf6c7db7bb690ccdbd1bb18a356938d2c5cf964183e3333e7550f9c36e8a50fa8f4f141b37370aee6d857c8b0725af192038178f71e31184c1527b8ddfc96
6
+ metadata.gz: 5017a86f94e42c78df633950e761c10c0b7ba1007ba82c34a2cec6e421013446fc2958688fbc5c406e534e385a470096eddda491b030371b5162c8f547a1faa0
7
+ data.tar.gz: 6d95181d90ad47784dfec7601187969b00a82d85dbb5e97ca566d581768628643a97a000e24b371bc261a3ef4ff549cb7c19b6b9511850cf74113e02ec9f8eac
data/lib/cli.rb CHANGED
@@ -25,6 +25,11 @@ class Cli < Thor
25
25
  return
26
26
  end
27
27
 
28
+ unless feed_works?(url)
29
+ puts 'A test fetch failed for the feed and as such it won\'t be added.'
30
+ return
31
+ end
32
+
28
33
  LideoController.new.add(url, group(options))
29
34
  end
30
35
 
@@ -65,6 +70,12 @@ class Cli < Thor
65
70
 
66
71
  private
67
72
 
73
+ def feed_works?(url)
74
+ Fetcher.new.fetch(Feed.new(url, ''))
75
+ rescue
76
+ false
77
+ end
78
+
68
79
  def list_feeds
69
80
  s = StringIO.new
70
81
  LideoController.new.feeds.map { |feed| s << "#{feed.to_s}\n" }
data/lib/fetcher.rb CHANGED
@@ -5,15 +5,19 @@ require 'rss/atom'
5
5
 
6
6
  class Fetcher
7
7
  def fetch(feed)
8
- open(feed.url) do |rss|
9
- fetched = RSS::Parser.parse(rss)
10
- fetched.items.map do |item|
11
- title = fetched.is_a?(RSS::Atom::Feed) ? item.title.content : item.title
12
- link = fetched.is_a?(RSS::Atom::Feed) ? item.link.href : item.link
13
- channel = fetched.is_a?(RSS::Atom::Feed) ? fetched.author.name.content : fetched.channel.title
8
+ begin
9
+ open(feed.url) do |rss|
10
+ fetched = RSS::Parser.parse(rss)
11
+ fetched.items.map do |item|
12
+ title = fetched.is_a?(RSS::Atom::Feed) ? item.title.content : item.title
13
+ link = fetched.is_a?(RSS::Atom::Feed) ? item.link.href : item.link
14
+ channel = fetched.is_a?(RSS::Atom::Feed) ? fetched.author.name.content : fetched.channel.title
14
15
 
15
- Headline.new(title, link, channel)
16
+ Headline.new(title, link, channel)
17
+ end
16
18
  end
19
+ rescue
20
+ puts "An error occurred while fetching #{feed.url}"
17
21
  end
18
22
  end
19
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lideo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gyowanny Queiroz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-12 00:00:00.000000000 Z
11
+ date: 2020-03-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple RSS aggregator CLI where you can read the headlines from your
14
14
  terminal