forked from ServiceStack/ServiceStack
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNativeTypesFeature.cs
More file actions
103 lines (94 loc) · 3.81 KB
/
Copy pathNativeTypesFeature.cs
File metadata and controls
103 lines (94 loc) · 3.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack.DataAnnotations;
using ServiceStack.NativeTypes;
namespace ServiceStack
{
public class NativeTypesFeature : IPlugin
{
public MetadataTypesConfig MetadataTypesConfig { get; set; }
public static bool DisableTokenVerification { get; set; }
public NativeTypesFeature()
{
MetadataTypesConfig = new MetadataTypesConfig
{
AddDefaultXmlNamespace = HostConfig.DefaultWsdlNamespace,
ExportAttributes = new HashSet<Type>
{
typeof(FlagsAttribute),
typeof(ApiAttribute),
typeof(ApiResponseAttribute),
typeof(ApiMemberAttribute),
typeof(StringLengthAttribute),
typeof(IgnoreAttribute),
typeof(IgnoreDataMemberAttribute),
typeof(MetaAttribute),
typeof(RequiredAttribute),
typeof(ReferencesAttribute),
typeof(StringLengthAttribute),
typeof(AutoQueryViewerAttribute),
typeof(AutoQueryViewerFieldAttribute),
},
ExportTypes = new HashSet<Type>
{
typeof(IGet),
typeof(IPost),
typeof(IPut),
typeof(IDelete),
typeof(IPatch),
typeof(IMeta),
typeof(IHasSessionId),
typeof(IHasBearerToken),
typeof(IHasVersion)
},
IgnoreTypes = new HashSet<Type>
{
},
IgnoreTypesInNamespaces = new List<string>
{
"ServiceStack",
"ServiceStack.Auth",
"ServiceStack.Caching",
"ServiceStack.Configuration",
"ServiceStack.Data",
"ServiceStack.IO",
"ServiceStack.Logging",
"ServiceStack.Messaging",
"ServiceStack.Model",
"ServiceStack.Redis",
"ServiceStack.Web",
"ServiceStack.Admin",
"ServiceStack.NativeTypes",
"ServiceStack.Api.Swagger",
},
DefaultNamespaces = new List<string>
{
"System",
"System.Collections",
"System.Collections.Generic",
"System.Runtime.Serialization",
"ServiceStack",
"ServiceStack.DataAnnotations",
},
};
}
public void ExportAttribute<T>(Func<Attribute, MetadataAttribute> converter) =>
ExportAttribute(typeof(T), converter);
public void ExportAttribute(Type attributeType, Func<Attribute, MetadataAttribute> converter)
{
MetadataTypesConfig.ExportAttributes.Add(attributeType);
MetadataTypesGenerator.AttributeConverters[attributeType] = converter;
}
public MetadataTypesGenerator GetGenerator() =>
(HostContext.TryResolve<INativeTypesMetadata>() ??
new NativeTypesMetadata(HostContext.AppHost.Metadata, MetadataTypesConfig))
.GetGenerator();
public void Register(IAppHost appHost)
{
appHost.Register<INativeTypesMetadata>(
new NativeTypesMetadata(appHost.Metadata, MetadataTypesConfig));
appHost.RegisterService<NativeTypesService>();
}
}
}