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
31
32
# File 'lib/arssene/lib/repositories/channel_repository.rb', line 5

def fetch_as_channel(url)
  begin
    channel = Arssene::Channel.new
    rss_link = url.dup

    response = Faraday.get(url)
    raise "Unable to reach feed: #{url} | error corde: #{response.status}" unless response.status == 200

    feed = RSS::Parser.parse(response.body)
    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 ? feed.channel.language.downcase : nil
    channel.copyright = feed.channel.copyright
    channel.entries = extract_items feed
    channel.meta = feed
    channel.relevant = true
    channel.rss_link = rss_link
  rescue StandardError => e
    return ({ error: e.to_s })
  end
  channel
end