diff options
Diffstat (limited to 'app/lib')
-rw-r--r-- | app/lib/atom_serializer.rb | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/app/lib/atom_serializer.rb b/app/lib/atom_serializer.rb index 180b9bb82..5aeb7b4f9 100644 --- a/app/lib/atom_serializer.rb +++ b/app/lib/atom_serializer.rb @@ -7,7 +7,7 @@ class AtomSerializer def render(element) document = Ox::Document.new(version: '1.0') document << element - ('<?xml version="1.0"?>' + Ox.dump(element)).force_encoding('UTF-8') + ('<?xml version="1.0"?>' + Ox.dump(element, effort: :tolerant)).force_encoding('UTF-8') end end @@ -311,11 +311,15 @@ class AtomSerializer def append_element(parent, name, content = nil, attributes = {}) element = Ox::Element.new(name) - attributes.each { |k, v| element[k] = v.to_s } - element << content.to_s unless content.nil? + attributes.each { |k, v| element[k] = sanitize_str(v) } + element << sanitize_str(content) unless content.nil? parent << element end + def sanitize_str(raw_str) + raw_str.to_s + end + def add_namespaces(parent) parent['xmlns'] = TagManager::XMLNS parent['xmlns:thr'] = TagManager::THR_XMLNS @@ -327,8 +331,8 @@ class AtomSerializer end def serialize_status_attributes(entry, status) - append_element(entry, 'summary', status.spoiler_text) if status.spoiler_text? - append_element(entry, 'content', Formatter.instance.format(status.proper).to_str, type: 'html') + append_element(entry, 'summary', status.spoiler_text, 'xml:lang': status.language) if status.spoiler_text? + append_element(entry, 'content', Formatter.instance.format(status.proper).to_str, type: 'html', 'xml:lang': status.language) status.mentions.each do |mentioned| append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': TagManager::TYPES[:person], href: TagManager.instance.uri_for(mentioned.account)) |