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);
        }
Esempio n. 2
0
        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());
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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();
                }
            }
        }