about summary refs log tree commit diff
path: root/app/services/process_feed_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/process_feed_service.rb')
-rw-r--r--app/services/process_feed_service.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb
new file mode 100644
index 000000000..f2523a313
--- /dev/null
+++ b/app/services/process_feed_service.rb
@@ -0,0 +1,20 @@
+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 unless 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!
+    end
+  end
+end