if Code.ensure_loaded?(SweetXml) do # TODO: Extract this. defmodule ExAws.Operation.Query.Parser do defmacro __using__(_opts) do quote do import SweetXml, only: [sigil_x: 2] def parse({:error, {type, http_status_code, %{body: xml}}}, _) do parsed_body = xml |> SweetXml.xpath( ~x"//ErrorResponse", request_id: ~x"./RequestId/text()"s, type: ~x"./Error/Type/text()"s, code: ~x"./Error/Code/text()"s, message: ~x"./Error/Message/text()"s, detail: ~x"./Error/Detail/text()"s ) {:error, {type, http_status_code, parsed_body}} end end end end end