Class: Arssene::ChannelRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/arssene/lib/repositories/channel_repository.rb

Instance Method Summary collapse

Instance Method Details

#fetch_as_channel(url) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/arssene/lib/repositories/channel_repository.rb', line 5

def fetch_as_channel(url)
  begin
    channel = Arssene::Channel.new
    rss_link = url.dup
    URI.open(url) do |rss|
      feed = RSS::Parser.parse(rss)
      url = URI.parse(feed.channel.link)
      channel.title = feed.channel.title
      channel.link  = feed.channel.link
      channel.host  = url.host
      channel.feed_type = feed.feed_type
      channel.feed_version = feed.feed_version
      channel.description = feed.channel.description
      channel.publication_date = feed.channel.pubDate
      channel.language = feed.channel.language&.downcase
      channel.copyright = feed.channel.copyright
      channel.entries = extract_items feed
      channel.meta = feed
      channel.relevant = true
      channel.rss_link = rss_link
    end
  rescue StandardError => e
    return ({ error: e.to_s })
  end
  channel
end