import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';
import 'dart:collection';
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 HelloWithEnumList implements IConvertible
{
List<EnumType>? enumProp = [];
List<EnumWithValues>? enumWithValues = [];
List<EnumType>? nullableEnumProp = [];
List<EnumFlags>? enumFlags = [];
List<EnumStyle>? enumStyle = [];
HelloWithEnumList({this.enumProp,this.enumWithValues,this.nullableEnumProp,this.enumFlags,this.enumStyle});
HelloWithEnumList.fromJson(Map<String, dynamic> json) { fromMap(json); }
fromMap(Map<String, dynamic> json) {
enumProp = JsonConverters.fromJson(json['enumProp'],'List<EnumType>',context!);
enumWithValues = JsonConverters.fromJson(json['enumWithValues'],'List<EnumWithValues>',context!);
nullableEnumProp = JsonConverters.fromJson(json['nullableEnumProp'],'List<EnumType>',context!);
enumFlags = JsonConverters.fromJson(json['enumFlags'],'List<EnumFlags>',context!);
enumStyle = JsonConverters.fromJson(json['enumStyle'],'List<EnumStyle>',context!);
return this;
}
Map<String, dynamic> toJson() => {
'enumProp': JsonConverters.toJson(enumProp,'List<EnumType>',context!),
'enumWithValues': JsonConverters.toJson(enumWithValues,'List<EnumWithValues>',context!),
'nullableEnumProp': JsonConverters.toJson(nullableEnumProp,'List<EnumType>',context!),
'enumFlags': JsonConverters.toJson(enumFlags,'List<EnumFlags>',context!),
'enumStyle': JsonConverters.toJson(enumStyle,'List<EnumStyle>',context!)
};
getTypeName() => "HelloWithEnumList";
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),
'HelloWithEnumList': TypeInfo(TypeOf.Class, create:() => HelloWithEnumList()),
'List<EnumType>': TypeInfo(TypeOf.Class, create:() => <EnumType>[]),
'List<EnumWithValues>': TypeInfo(TypeOf.Class, create:() => <EnumWithValues>[]),
'List<EnumFlags>': TypeInfo(TypeOf.Class, create:() => <EnumFlags>[]),
'List<EnumStyle>': TypeInfo(TypeOf.Class, create:() => <EnumStyle>[]),
});
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /csv/oneway/HelloWithEnumList HTTP/1.1
Host: test.servicestack.net
Accept: text/csv
Content-Type: text/csv
Content-Length: length
{"enumProp":["Value1"],"enumWithValues":["None"],"nullableEnumProp":["Value1"],"enumFlags":[0],"enumStyle":["lower"]}