about summary refs log tree commit diff
path: root/app/services/process_feed_service.rb
blob: 1367d163489649383b04b0e6e0a2b4ecfb2003ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class ProcessFeedService
  def call(body, account)
    xml = Nokogiri::XML(body)

    xml.xpath('/xmlns:feed/xmlns:entry').each do |entry|
      uri    = entry.at_xpath('./xmlns:id').content
      status = Status.find_by(uri: uri)

      next if !status.nil?

      status = Status.new
      status.account    = account
      status.uri        = uri
      status.text       = entry.at_xpath('./xmlns:content').content
      status.created_at = entry.at_xpath('./xmlns:published').content
      status.updated_at = entry.at_xpath('./xmlns:updated').content
      status.save!

      # todo: not everything is a status. there are follows, favourites
      # todo: RTs
      # account.statuses.create!(reblog: status, uri: activity_uri(xml), url: activity_url(xml), text: content(xml))
    end
  end
end