303 lines
6.3 KiB
Dart
303 lines
6.3 KiB
Dart
import 'package:freezed_annotation/freezed_annotation.dart';
|
|
|
|
//////////////////////////////////////
|
|
/// VeilidAPIException
|
|
|
|
@immutable
|
|
abstract class VeilidAPIException implements Exception {
|
|
factory VeilidAPIException.fromJson(dynamic json) {
|
|
switch (json["kind"]) {
|
|
case "NotInitialized":
|
|
{
|
|
return VeilidAPIExceptionNotInitialized();
|
|
}
|
|
case "AlreadyInitialized":
|
|
{
|
|
return VeilidAPIExceptionAlreadyInitialized();
|
|
}
|
|
case "Timeout":
|
|
{
|
|
return VeilidAPIExceptionTimeout();
|
|
}
|
|
case "TryAgain":
|
|
{
|
|
return VeilidAPIExceptionTryAgain();
|
|
}
|
|
case "Shutdown":
|
|
{
|
|
return VeilidAPIExceptionShutdown();
|
|
}
|
|
case "InvalidTarget":
|
|
{
|
|
return VeilidAPIExceptionInvalidTarget();
|
|
}
|
|
case "NoConnection":
|
|
{
|
|
return VeilidAPIExceptionNoConnection(json["message"]);
|
|
}
|
|
case "KeyNotFound":
|
|
{
|
|
return VeilidAPIExceptionKeyNotFound(json["key"]);
|
|
}
|
|
case "Internal":
|
|
{
|
|
return VeilidAPIExceptionInternal(json["message"]);
|
|
}
|
|
case "Unimplemented":
|
|
{
|
|
return VeilidAPIExceptionUnimplemented(json["unimplemented"]);
|
|
}
|
|
case "ParseError":
|
|
{
|
|
return VeilidAPIExceptionParseError(json["message"], json["value"]);
|
|
}
|
|
case "InvalidArgument":
|
|
{
|
|
return VeilidAPIExceptionInvalidArgument(
|
|
json["context"], json["argument"], json["value"]);
|
|
}
|
|
case "MissingArgument":
|
|
{
|
|
return VeilidAPIExceptionMissingArgument(
|
|
json["context"], json["argument"]);
|
|
}
|
|
case "Generic":
|
|
{
|
|
return VeilidAPIExceptionGeneric(json["message"]);
|
|
}
|
|
default:
|
|
{
|
|
throw VeilidAPIExceptionInternal(
|
|
"Invalid VeilidAPIException type: ${json['kind']}");
|
|
}
|
|
}
|
|
}
|
|
|
|
String toDisplayError();
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionNotInitialized implements VeilidAPIException {
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: NotInitialized";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Not initialized";
|
|
}
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionAlreadyInitialized implements VeilidAPIException {
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: AlreadyInitialized";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Already initialized";
|
|
}
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionTimeout implements VeilidAPIException {
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: Timeout";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Timeout";
|
|
}
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionTryAgain implements VeilidAPIException {
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: TryAgain";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Try again";
|
|
}
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionShutdown implements VeilidAPIException {
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: Shutdown";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Currently shut down";
|
|
}
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionInvalidTarget implements VeilidAPIException {
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: InvalidTarget";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Invalid target";
|
|
}
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionNoConnection implements VeilidAPIException {
|
|
final String message;
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: NoConnection (message: $message)";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "No connection: $message";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionNoConnection(this.message);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionKeyNotFound implements VeilidAPIException {
|
|
final String key;
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: KeyNotFound (key: $key)";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Key not found: $key";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionKeyNotFound(this.key);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionInternal implements VeilidAPIException {
|
|
final String message;
|
|
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: Internal ($message)";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Internal error: $message";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionInternal(this.message);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionUnimplemented implements VeilidAPIException {
|
|
final String message;
|
|
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: Unimplemented ($message)";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Unimplemented: $message";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionUnimplemented(this.message);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionParseError implements VeilidAPIException {
|
|
final String message;
|
|
final String value;
|
|
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: ParseError ($message)\n value: $value";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Parse error: $message";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionParseError(this.message, this.value);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionInvalidArgument implements VeilidAPIException {
|
|
final String context;
|
|
final String argument;
|
|
final String value;
|
|
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: InvalidArgument ($context:$argument)\n value: $value";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Invalid argument for $context: $argument";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionInvalidArgument(
|
|
this.context, this.argument, this.value);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionMissingArgument implements VeilidAPIException {
|
|
final String context;
|
|
final String argument;
|
|
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: MissingArgument ($context:$argument)";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return "Missing argument for $context: $argument";
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionMissingArgument(this.context, this.argument);
|
|
}
|
|
|
|
@immutable
|
|
class VeilidAPIExceptionGeneric implements VeilidAPIException {
|
|
final String message;
|
|
|
|
@override
|
|
String toString() {
|
|
return "VeilidAPIException: Generic (message: $message)";
|
|
}
|
|
|
|
@override
|
|
String toDisplayError() {
|
|
return message;
|
|
}
|
|
|
|
//
|
|
const VeilidAPIExceptionGeneric(this.message);
|
|
}
|