Bladeren bron

Force utf-8 encoding when processing XML

Eugen Rochko 7 jaren geleden
bovenliggende
commit
7ce4670164

+ 3 - 1
app/services/fetch_remote_account_service.rb

@@ -9,7 +9,9 @@ class FetchRemoteAccountService < BaseService
   private
 
   def process_atom(url, body)
-    xml       = Nokogiri::XML(body)
+    xml = Nokogiri::XML(body)
+    xml.encoding = 'utf-8'
+
     url_parts = Addressable::URI.parse(url)
     username  = xml.at_xpath('//xmlns:author/xmlns:name').try(:content)
     domain    = url_parts.host

+ 3 - 1
app/services/fetch_remote_status_service.rb

@@ -11,7 +11,9 @@ class FetchRemoteStatusService < BaseService
   def process_atom(url, body)
     Rails.logger.debug "Processing Atom for remote status at #{url}"
 
-    xml     = Nokogiri::XML(body)
+    xml = Nokogiri::XML(body)
+    xml.encoding = 'utf-8'
+
     account = extract_author(url, xml)
 
     return nil if account.nil?

+ 1 - 0
app/services/process_feed_service.rb

@@ -4,6 +4,7 @@ class ProcessFeedService < BaseService
 
   def call(body, account)
     xml = Nokogiri::XML(body)
+    xml.encoding = 'utf-8'
 
     update_author(xml, account)
     process_entries(xml, account)

+ 3 - 1
app/services/process_interaction_service.rb

@@ -6,7 +6,9 @@ class ProcessInteractionService < BaseService
   # @param [Account] target_account Account the Salmon was addressed to
   def call(envelope, target_account)
     body = salmon.unpack(envelope)
-    xml  = Nokogiri::XML(body)
+
+    xml = Nokogiri::XML(body)
+    xml.encoding = 'utf-8'
 
     return unless contains_author?(xml)