# NOTE: This file is auto generated by googly. Do not edit it manually. defmodule Googly.CloudStorage.Response do @moduledoc false # Turns a Req result into `{:ok, decoded}` or `{:error, ...}`. alias Googly.CloudStorage.Error @doc false def decode({:error, exception}, _module, _call), do: {:error, exception} def decode({:ok, %Req.Response{status: status} = resp}, _module, _call) when status >= 400 do {:error, Error.new(resp)} end def decode({:ok, %Req.Response{body: body} = resp}, module, call) do cond do # `decode: false` (e.g. media downloads) returns the raw body untouched. Keyword.get(call, :decode, true) == false -> {:ok, body} # No target struct: hand back the whole response. is_nil(module) -> {:ok, resp} true -> {:ok, module.decode(body)} end end end