# NOTE: This file is auto generated by googly. Do not edit it manually. defmodule Googly.CloudVision.Error do @moduledoc """ A failed API response. `status` is the HTTP status; `code`, `message`, `reason` and `errors` come from the Google error envelope when present. """ @derive {Inspect, only: [:status, :code, :reason, :message]} defstruct [:status, :code, :message, :reason, :errors, :response] @type t :: %__MODULE__{ status: pos_integer(), code: integer() | nil, message: String.t() | nil, reason: String.t() | nil, errors: list() | nil, response: Req.Response.t() } @doc false def new(%Req.Response{status: status, body: body} = response) do error = extract(body) %__MODULE__{ status: status, code: error["code"], message: error["message"], reason: error["status"], errors: error["errors"], response: response } end defp extract(%{"error" => error}) when is_map(error), do: error defp extract(_), do: %{} end