Skip to main content

lib/pi/web/result.ex

defmodule Pi.Web.Result do
  @moduledoc "Normalized result for a bounded web fetch."

  defstruct url: "",
            final_url: nil,
            status: nil,
            content_type: nil,
            format: :text,
            title: nil,
            text: "",
            size_bytes: 0,
            total_chars: 0,
            truncated?: false,
            redirected?: false,
            metadata: %{}

  @type format :: :text | :html | :json | :markdown

  @type t :: %__MODULE__{
          url: String.t(),
          final_url: String.t() | nil,
          status: pos_integer() | nil,
          content_type: String.t() | nil,
          format: format(),
          title: String.t() | nil,
          text: String.t(),
          size_bytes: non_neg_integer(),
          total_chars: non_neg_integer(),
          truncated?: boolean(),
          redirected?: boolean(),
          metadata: map()
        }
end