Test

<back to all web services

HelloWithEnumMap

import 'package:servicestack/servicestack.dart';

enum EnumType
{
    Value1,
    Value2,
    Value3,
}

enum EnumWithValues
{
    None,
    Value1,
    Value2,
}

// @flags()
class EnumFlags
{
    static const EnumFlags Value0 = const EnumFlags._(0);
    static const EnumFlags Value1 = const EnumFlags._(1);
    static const EnumFlags Value2 = const EnumFlags._(2);
    static const EnumFlags Value3 = const EnumFlags._(4);
    static const EnumFlags Value123 = const EnumFlags._(7);

    final int _value;
    const EnumFlags._(this._value);
    int get value => _value;
    static List<EnumFlags> get values => const [Value0,Value1,Value2,Value3,Value123];
}

enum EnumStyle
{
    lower,
    UPPER,
    PascalCase,
    camelCase,
    camelUPPER,
    PascalUPPER,
}

class HelloWithEnumMap implements IConvertible
{
    Map<EnumType,EnumType?>? enumProp;
    Map<EnumWithValues,EnumWithValues?>? enumWithValues;
    Map<EnumType,EnumType?>? nullableEnumProp;
    Map<EnumFlags,EnumFlags?>? enumFlags;
    Map<EnumStyle,EnumStyle?>? enumStyle;

    HelloWithEnumMap({this.enumProp,this.enumWithValues,this.nullableEnumProp,this.enumFlags,this.enumStyle});
    HelloWithEnumMap.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        enumProp = JsonConverters.fromJson(json['enumProp'],'Map<EnumType,EnumType?>',context!);
        enumWithValues = JsonConverters.fromJson(json['enumWithValues'],'Map<EnumWithValues,EnumWithValues?>',context!);
        nullableEnumProp = JsonConverters.fromJson(json['nullableEnumProp'],'Map<EnumType,EnumType?>',context!);
        enumFlags = JsonConverters.fromJson(json['enumFlags'],'Map<EnumFlags,EnumFlags?>',context!);
        enumStyle = JsonConverters.fromJson(json['enumStyle'],'Map<EnumStyle,EnumStyle?>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'enumProp': JsonConverters.toJson(enumProp,'Map<EnumType,EnumType?>',context!),
        'enumWithValues': JsonConverters.toJson(enumWithValues,'Map<EnumWithValues,EnumWithValues?>',context!),
        'nullableEnumProp': JsonConverters.toJson(nullableEnumProp,'Map<EnumType,EnumType?>',context!),
        'enumFlags': JsonConverters.toJson(enumFlags,'Map<EnumFlags,EnumFlags?>',context!),
        'enumStyle': JsonConverters.toJson(enumStyle,'Map<EnumStyle,EnumStyle?>',context!)
    };

    getTypeName() => "HelloWithEnumMap";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'test.servicestack.net', types: <String, TypeInfo> {
    'EnumType': TypeInfo(TypeOf.Enum, enumValues:EnumType.values),
    'EnumWithValues': TypeInfo(TypeOf.Enum, enumValues:EnumWithValues.values),
    'EnumFlags': TypeInfo(TypeOf.Enum, enumValues:EnumFlags.values),
    'EnumStyle': TypeInfo(TypeOf.Enum, enumValues:EnumStyle.values),
    'HelloWithEnumMap': TypeInfo(TypeOf.Class, create:() => HelloWithEnumMap()),
    'Map<EnumType,EnumType?>': TypeInfo(TypeOf.Class, create:() => Map<EnumType,EnumType?>()),
    'Map<EnumWithValues,EnumWithValues?>': TypeInfo(TypeOf.Class, create:() => Map<EnumWithValues,EnumWithValues?>()),
    'Map<EnumFlags,EnumFlags?>': TypeInfo(TypeOf.Class, create:() => Map<EnumFlags,EnumFlags?>()),
    'Map<EnumStyle,EnumStyle?>': TypeInfo(TypeOf.Class, create:() => Map<EnumStyle,EnumStyle?>()),
});

Dart HelloWithEnumMap DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/oneway/HelloWithEnumMap HTTP/1.1 
Host: test.servicestack.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	enumProp: 
	{
		Value1: Value1
	},
	enumWithValues: 
	{
		None: None
	},
	nullableEnumProp: 
	{
		Value1: Value1
	},
	enumFlags: 
	{
		0: 0
	},
	enumStyle: 
	{
		lower: lower
	}
}