defmodule Momento.Validation do import Momento.Error @spec validate_cache_name(String.t()) :: :ok | {:error, Momento.Error.t()} def validate_cache_name(nil), do: {:error, invalid_argument("The cache name cannot be nil")} def validate_cache_name(cache_name) do if String.valid?(cache_name), do: :ok, else: {:error, invalid_argument("The cache name must be a string")} end @spec validate_key(binary()) :: :ok | {:error, Momento.Error.t()} def validate_key(nil), do: {:error, invalid_argument("The key cannot be nil")} def validate_key(key) when is_binary(key), do: :ok def validate_key(_), do: {:error, invalid_argument("The key must be a binary")} @spec validate_value(binary()) :: :ok | {:error, Momento.Error.t()} def validate_value(nil), do: {:error, invalid_argument("The value cannot be nil")} def validate_value(value) when is_binary(value), do: :ok def validate_value(_), do: {:error, invalid_argument("The value must be a binary")} @spec validate_ttl(float()) :: :ok | {:error, Momento.Error.t()} def validate_ttl(nil), do: {:error, invalid_argument("The TTL cannot be nil")} def validate_ttl(ttl) when is_float(ttl) and ttl > 0.0, do: :ok def validate_ttl(_), do: {:error, invalid_argument("The TTL must be a positive float")} end