private static void TestGeneratedXml(string classFileName, string xmlFileName, string contentTypeName, ParserFactory factory) { ContentType contentType; string expectedOutput; using (var goldReader = File.OpenText(@"..\..\TestFiles\" + xmlFileName + ".xml")) { expectedOutput = goldReader.ReadToEnd(); } var contentTypeConfig = CodeGeneratorConfiguration.Create().Get(contentTypeName); contentTypeConfig.BaseClass = "Umbraco.Core.Models.TypedModelBase"; using (var inputReader = File.OpenText(@"..\..\TestFiles\" + classFileName + ".cs")) { var codeParser = new CodeParser(contentTypeConfig, TestDataTypeProvider.All, factory); contentType = codeParser.Parse(inputReader).Single(); } var serializer = new ContentTypeSerializer(); var xml = serializer.Serialize(contentType); Console.WriteLine(xml); Assert.AreEqual(expectedOutput, xml); }
private void TestBuildCode(string classFileName, string xmlFileName, string contentTypeName) { ContentType contentType; var expectedOutput = ""; using (var inputReader = File.OpenText(@"..\..\TestFiles\" + xmlFileName + ".xml")) { contentType = new ContentTypeSerializer().Deserialize(inputReader); } using (var goldReader = File.OpenText(@"..\..\TestFiles\" + classFileName + ".cs")) { expectedOutput = goldReader.ReadToEnd(); } var configuration = new CodeGeneratorConfiguration(); configuration.TypeMappings.Add(new TypeMapping("1413afcb-d19a-4173-8e9a-68288d2a73b8", "Int32")); var typeConfig = configuration.Get(contentTypeName); typeConfig.BaseClass = "Umbraco.Core.Models.TypedModelBase"; typeConfig.Namespace = "Umbraco.CodeGen.Models"; var sb = new StringBuilder(); var writer = new StringWriter(sb); var dataTypeProvider = new TestDataTypeProvider(); var generator = new CodeGenerator(typeConfig, dataTypeProvider, new AnnotatedCodeGeneratorFactory()); generator.Generate(contentType, writer); writer.Flush(); Console.WriteLine(sb.ToString()); Assert.AreEqual(expectedOutput, sb.ToString()); }
private void TestSerialize(ContentType contentType, string goldFileName) { string expectedXml; using (var reader = File.OpenText(string.Format(@"..\..\TestFiles\{0}.xml", goldFileName))) { expectedXml = reader.ReadToEnd(); } var serializer = new ContentTypeSerializer(); var actualXml = serializer.Serialize(contentType); Assert.AreEqual(expectedXml, actualXml); }
protected internal override void Initialize(IntermediateSerializer serializer) { _keySerializer = serializer.GetTypeSerializer(typeof(string)); _keyFormat = new ContentSerializerAttribute { ElementName = "Key", AllowNull = false }; _valueFormat = new ContentSerializerAttribute { ElementName = "Value", AllowNull = typeof(T).IsValueType }; }
private static void TestDeserialize <T>(string filename, T expectedContentType) where T : ContentType { T actual; var actualBuilder = new StringBuilder(); var expectedBuilder = new StringBuilder(); using (var reader = File.OpenText(string.Format(@"..\..\TestFiles\{0}.xml", filename))) { var serializer = new ContentTypeSerializer(); var content = serializer.Deserialize(reader); actual = (T)content; } SerializationHelper.BclSerialize(actualBuilder, actual); SerializationHelper.BclSerialize(expectedBuilder, expectedContentType); Assert.AreEqual(expectedBuilder.ToString(), actualBuilder.ToString()); }
public void Init() { Configuration = new uSyncCoreConfig(); ContentTypeSerializer = new ContentTypeSerializer(Constants.Packaging.DocumentTypeNodeName); MediaTypeSerializer = new MediaTypeSerializer("MediaType"); MemberTypeSerializer = new MemberTypeSerializer("MemberType"); TemplateSerializer = new TemplateSerializer(Constants.Packaging.TemplateNodeName); LanguageSerializer = new LanguageSerializer("Language"); DictionarySerializer = new DictionarySerializer(Constants.Packaging.DictionaryItemNodeName); MacroSerializer = new MacroSerializer(Constants.Packaging.MacroNodeName); DataTypeSerializer = new DataTypeSerializer(Constants.Packaging.DataTypeNodeName); ContentSerializer = new ContentSerializer(); MediaSerializer = new MediaSerializer(); MediaFileMover = new uSyncMediaFileMover(); }
public async Task Invoke(HttpContext context) { if (context.Request.Path != route || context.Request.Method != "POST") { await requestDelegate(context); return; } var requestContentType = context.Request.ContentType; ContentType contentType; if (requestContentType.StartsWith("application/octet-stream")) { contentType = ContentType.Bytes; } else if (requestContentType.StartsWith("application/jsonnameless")) { contentType = ContentType.JsonNameless; } else if (requestContentType.StartsWith("application/json")) { contentType = ContentType.Json; } else { context.Response.StatusCode = 400; return; } var accepts = (string)context.Request.Headers["Accept"]; ContentType?acceptContentType; if (accepts.StartsWith("application/octet-stream")) { acceptContentType = ContentType.Bytes; } else if (accepts.StartsWith("application/jsonnameless")) { acceptContentType = ContentType.JsonNameless; } else if (accepts.StartsWith("application/json")) { acceptContentType = ContentType.Json; } else { acceptContentType = null; } try { var data = await ContentTypeSerializer.DeserializeAsync <CQRSRequestData>(contentType, context.Request.Body); var response = await ApiServerHandler.HandleRequestAsync(acceptContentType, data); if (response == null) { context.Response.StatusCode = 400; return; } if (response.Void) { context.Response.StatusCode = 200; return; } switch (acceptContentType) { case ContentType.Bytes: context.Response.ContentType = "application/octet-stream"; break; case ContentType.JsonNameless: context.Response.ContentType = "application/jsonnameless; charset=utf-8"; break; case ContentType.Json: context.Response.ContentType = "application/json; charset=utf-8"; break; default: throw new NotImplementedException(); } ; if (response.Bytes != null) { context.Response.ContentLength = response.Bytes.Length; #if NETSTANDARD2_0 await context.Response.Body.WriteAsync(response.Bytes, 0, response.Bytes.Length); #else await context.Response.Body.WriteAsync(response.Bytes.AsMemory(0, response.Bytes.Length)); #endif } else if (response.Stream != null) { await response.Stream.CopyToAsync(context.Response.Body); } else { throw new NotImplementedException("Should not happen"); } await context.Response.Body.FlushAsync(); } catch (Exception ex) { ex = ex.GetBaseException(); if (ex is SecurityException) { context.Response.StatusCode = 401; context.Response.ContentType = "text/plain"; var errorBytes = Encoding.UTF8.GetBytes(!String.IsNullOrEmpty(ex.Message) ? ex.Message : "Unauthorized"); context.Response.ContentLength = errorBytes.Length; #if NETSTANDARD2_0 await context.Response.Body.WriteAsync(errorBytes, 0, errorBytes.Length); #else await context.Response.Body.WriteAsync(errorBytes.AsMemory(0, errorBytes.Length)); #endif await context.Response.Body.FlushAsync(); } else { context.Response.StatusCode = 500; context.Response.ContentType = "text/plain"; var errorBytes = Encoding.UTF8.GetBytes(!String.IsNullOrEmpty(ex.Message) ? ex.Message : ex.GetType().Name); context.Response.ContentLength = errorBytes.Length; #if NETSTANDARD2_0 await context.Response.Body.WriteAsync(errorBytes, 0, errorBytes.Length); #else await context.Response.Body.WriteAsync(errorBytes.AsMemory(0, errorBytes.Length)); #endif await context.Response.Body.FlushAsync(); } } }