X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fxml%2Fxml.ex;h=fa6dcd424ca522d4b5a28ecc61b4f6e37ffb839c;hb=2791ce9a1ff2365ac7256f5e1dc2324dee2f82c9;hp=b85712d6519f9dfea3138cddc81c608de01db715;hpb=4afbef39f49948ddd3b1cd1bbda58ff7e3ac2785;p=akkoma diff --git a/lib/pleroma/web/xml/xml.ex b/lib/pleroma/web/xml/xml.ex index b85712d65..fa6dcd424 100644 --- a/lib/pleroma/web/xml/xml.ex +++ b/lib/pleroma/web/xml/xml.ex @@ -1,17 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2018 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Web.XML do require Logger def string_from_xpath(_, :error), do: nil def string_from_xpath(xpath, doc) do - {:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc) + try do + {:xmlObj, :string, res} = :xmerl_xpath.string('string(#{xpath})', doc) - res = - res - |> to_string - |> String.trim() + res = + res + |> to_string + |> String.trim() - if res == "", do: nil, else: res + if res == "", do: nil, else: res + catch + _e -> + Logger.debug("Couldn't find xpath #{xpath} in XML doc") + nil + end end def parse_document(text) do @@ -19,9 +29,13 @@ defmodule Pleroma.Web.XML do {doc, _rest} = text |> :binary.bin_to_list() - |> :xmerl_scan.string() + |> :xmerl_scan.string(quiet: true) doc + rescue + _e -> + Logger.debug("Couldn't parse XML: #{inspect(text)}") + :error catch :exit, _error -> Logger.debug("Couldn't parse XML: #{inspect(text)}")