defmodule Api2pdf.Model.ApiSuccessResponse do
@moduledoc """
https://app.swaggerhub.com/apis-docs/api2pdf/api2pdf/2.0.0#/ApiResponseSuccess
"""
defstruct [
:FileUrl,
:MbOut,
:Cost,
:Success,
:ResponseId,
:Seconds,
:Error
]
@type t :: %__MODULE__{
FileUrl: String.t(),
MbOut: number,
Cost: number,
Success: boolean,
ResponseId: String.t(),
Seconds: number,
Error: String.t()
}
@doc """
Convert body from map to `Api2pdf.Model.ApiSuccessResponse` struct.
"""
@spec from_body(map) :: __MODULE__.t()
def from_body(body) do
# remove atom :__struct__ from keys
keys = Map.keys(%__MODULE__{}) |> Enum.reject(fn i -> i == :__struct__ end)
# read values from map and assign it to the struct
Enum.reduce(keys, %__MODULE__{}, fn field, acc ->
case Map.fetch(body, Atom.to_string(field)) do
{:ok, value} -> Map.put(acc, field, value)
_ -> acc
end
end)
end
end