Packages
Robust API call planning and execution for Torn City
Current section
Files
Jump to
Current section
Files
lib/torngen_client/schema/UserCrime.ex
defmodule Torngen.Client.Schema.UserCrime do
@moduledoc false
use Torngen.Client.SchemaObjectAccess, deprecated: []
@behaviour Torngen.Client.Schema
@keys [:uniques, :skill, :rewards, :progression_bonus, :nerve_spent, :miscellaneous, :attempts]
defstruct [
:uniques,
:skill,
:rewards,
:progression_bonus,
:nerve_spent,
:miscellaneous,
:attempts
]
@type t :: %__MODULE__{
uniques: [Torngen.Client.Schema.UserCrimeUniques.t()],
skill: integer(),
rewards: Torngen.Client.Schema.UserCrimeRewards.t(),
progression_bonus: integer(),
nerve_spent: integer(),
miscellaneous:
nil
| Torngen.Client.Schema.UserCrimeDetailsScamming.t()
| Torngen.Client.Schema.UserCrimeDetailsCracking.t()
| Torngen.Client.Schema.UserCrimeDetailsHustling.t()
| Torngen.Client.Schema.UserCrimeDetailsCardSkimming.t()
| Torngen.Client.Schema.UserCrimeDetailsShoplifting.t()
| Torngen.Client.Schema.UserCrimeDetailsGraffiti.t()
| Torngen.Client.Schema.UserCrimeDetailsBootlegging.t(),
attempts: Torngen.Client.Schema.UserCrimeAttempts.t()
}
@impl true
def parse(%{} = data) do
%__MODULE__{
uniques:
data |> Map.get("uniques") |> Torngen.Client.Schema.parse({:array, Torngen.Client.Schema.UserCrimeUniques}),
skill: data |> Map.get("skill") |> Torngen.Client.Schema.parse({:static, :integer}),
rewards: data |> Map.get("rewards") |> Torngen.Client.Schema.parse(Torngen.Client.Schema.UserCrimeRewards),
progression_bonus: data |> Map.get("progression_bonus") |> Torngen.Client.Schema.parse({:static, :integer}),
nerve_spent: data |> Map.get("nerve_spent") |> Torngen.Client.Schema.parse({:static, :integer}),
miscellaneous:
data
|> Map.get("miscellaneous")
|> Torngen.Client.Schema.parse(
{:one_of,
[
{:static, :null},
Torngen.Client.Schema.UserCrimeDetailsScamming,
Torngen.Client.Schema.UserCrimeDetailsCracking,
Torngen.Client.Schema.UserCrimeDetailsHustling,
Torngen.Client.Schema.UserCrimeDetailsCardSkimming,
Torngen.Client.Schema.UserCrimeDetailsShoplifting,
Torngen.Client.Schema.UserCrimeDetailsGraffiti,
Torngen.Client.Schema.UserCrimeDetailsBootlegging
]}
),
attempts: data |> Map.get("attempts") |> Torngen.Client.Schema.parse(Torngen.Client.Schema.UserCrimeAttempts)
}
end
@impl true
def parse(_data), do: nil
@impl true
def validate?(%{} = data) do
@keys
|> Enum.map(fn key -> {key, Map.get(data, Atom.to_string(key))} end)
|> Enum.map(fn {key, value} -> validate_key?(key, value) end)
|> Enum.all?()
end
defp validate_key?(:uniques, value) do
Torngen.Client.Schema.validate?(value, {:array, Torngen.Client.Schema.UserCrimeUniques})
end
defp validate_key?(:skill, value) do
Torngen.Client.Schema.validate?(value, {:static, :integer})
end
defp validate_key?(:rewards, value) do
Torngen.Client.Schema.validate?(value, Torngen.Client.Schema.UserCrimeRewards)
end
defp validate_key?(:progression_bonus, value) do
Torngen.Client.Schema.validate?(value, {:static, :integer})
end
defp validate_key?(:nerve_spent, value) do
Torngen.Client.Schema.validate?(value, {:static, :integer})
end
defp validate_key?(:miscellaneous, value) do
Torngen.Client.Schema.validate?(
value,
{:one_of,
[
{:static, :null},
Torngen.Client.Schema.UserCrimeDetailsScamming,
Torngen.Client.Schema.UserCrimeDetailsCracking,
Torngen.Client.Schema.UserCrimeDetailsHustling,
Torngen.Client.Schema.UserCrimeDetailsCardSkimming,
Torngen.Client.Schema.UserCrimeDetailsShoplifting,
Torngen.Client.Schema.UserCrimeDetailsGraffiti,
Torngen.Client.Schema.UserCrimeDetailsBootlegging
]}
)
end
defp validate_key?(:attempts, value) do
Torngen.Client.Schema.validate?(value, Torngen.Client.Schema.UserCrimeAttempts)
end
@spec keys() :: list(atom())
def keys(), do: @keys
end