Packages

OSRS Old school runescape Highscore API wrapper

Current section

Files

Jump to
ex_osrs_api lib errors error.ex
Raw

lib/errors/error.ex

defmodule ExOsrsApi.Errors.Error do
@enforce_keys [:type, :message]
defstruct [:type, :message, :metadata]
alias ExOsrsApi.Errors.HttpErrorMetadata
alias ExOsrsApi.Errors.ParsingErrorMetadata
alias ExOsrsApi.Errors.RatelimitErrorMetadata
@type t() :: %__MODULE__{
type:
:http_error
| :ratelimit_error
| :parsing_error
| :data_access_error
| :task_error,
message: String.t(),
metadata:
HttpErrorMetadata.t() | ParsingErrorMetadata.t() | RatelimitErrorMetadata.t() | nil
}
@spec new(:http_error, String.t(), HttpErrorMetadata.t()) :: t()
def new(:http_error, message, %HttpErrorMetadata{} = metadata) do
%__MODULE__{
type: :http_error,
message: message,
metadata: metadata
}
end
@spec new(:ratelimit_error, String.t(), RatelimitErrorMetadata.t()) :: t()
def new(:ratelimit_error, message, %RatelimitErrorMetadata{} = metadata) do
%__MODULE__{
type: :ratelimit_error,
message: message,
metadata: metadata
}
end
@spec new(:parsing_error, String.t(), ParsingErrorMetadata.t()) :: t()
def new(:parsing_error, message, %ParsingErrorMetadata{} = metadata) do
%__MODULE__{
type: :parsing_error,
message: message,
metadata: metadata
}
end
@spec new(:data_access_error, String.t()) :: t()
def new(:data_access_error, message) do
%__MODULE__{
type: :data_access_error,
message: message,
metadata: nil
}
end
@spec new(:task_error, String.t()) :: t()
def new(:task_error, message) do
%__MODULE__{
type: :task_error,
message: message,
metadata: nil
}
end
end