Example #1
0
        public void ParseSwaggerPaths()
        {
            var opsTerm = new VocabTerm <Operation>();

            var pathTerm = new VocabTerm <Path>();

            pathTerm.MapAnyObject <Operation>(opsTerm, (s, p) => {
                return(s.AddOperation(p, Guid.NewGuid().ToString()));
            });

            var pathsTerm = new VocabTerm <OpenApiDocument>("paths");

            pathsTerm.MapAnyObject <Path>(pathTerm, (s, p) => {
                return(s.AddPath(p));
            });

            var rootTerm = new VocabTerm <OpenApiDocument>();

            rootTerm.MapObject <OpenApiDocument>(pathsTerm, (s) =>
            {
                return(s);
            });



            var stream = this.GetType().Assembly
                         .GetManifestResourceStream(this.GetType(), "forecast.io.swagger.json");

            var swaggerDoc = new OpenApiDocument();

            JsonStreamingParser.ParseStream(stream, swaggerDoc, rootTerm);

            Assert.Equal(1, swaggerDoc.Paths.Count);
            Assert.Equal(1, swaggerDoc.Paths.First().Value.Operations.Count());
        }
Example #2
0
        public static VocabTerm<OpenApiDocument> Create()
        {
            var openApiTerm = new VocabTerm<OpenApiDocument>();

            openApiTerm.MapProperty<string>("swagger", (s, o) => s.Version = o);

            openApiTerm.MapProperty<string>("schemes", (s, o) =>
            {
                if (s.Schemes == null) s.Schemes = new List<String>();
                s.Schemes.Add(o);
            });

            var infoTerm = new VocabTerm<Info>("info");
            infoTerm.MapProperty<string>("description",(s,o) => s.Description = o);
            infoTerm.MapProperty<string>("termsOfService", (s, o) => s.TermsOfService = o);
            infoTerm.MapProperty<string>("title", (s, o) => s.Title = o);

            openApiTerm.MapObject<Info>(infoTerm, (s) =>
            {
                s.Info = new Info();
                return s.Info;
            });

            var contactTerm = new VocabTerm<Contact>("contact");
            infoTerm.MapObject<Contact>(contactTerm, (s) =>
            {
                s.Contact = new Contact();
                return s.Contact;
            });

            var opsTerm = new VocabTerm<Operation>();
            opsTerm.MapProperty<string>("operationId", (s, o) => s.Id = o);
            //opsTerm.MapProperty<string>("x-controller", (s, o) => s. = o);

            var pathTerm = new VocabTerm<Path>();
            pathTerm.MapAnyObject<Operation>(opsTerm, (s, p) => {
                return s.AddOperation(p, Guid.NewGuid().ToString());
            });

            var pathsTerm = new VocabTerm<OpenApiDocument>("paths");

            pathsTerm.MapAnyObject<Path>(pathTerm, (s, p) => {
                return s.AddPath(p);
            });

            openApiTerm.MapObject<OpenApiDocument>(pathsTerm, (s) =>
            {
                return s;
            });


            return openApiTerm;
        }
Example #3
0
        //   [Fact]
        public void ParseVeryLargeSwaggerPaths()
        {
            var opsTerm = new VocabTerm <Operation>();

            var pathTerm = new VocabTerm <Path>();

            pathTerm.MapAnyObject <Operation>(opsTerm, (s, p) =>
            {
                return(s.AddOperation(p, Guid.NewGuid().ToString()));
            });

            var pathsTerm = new VocabTerm <OpenApiDocument>("paths");

            pathsTerm.MapAnyObject <Path>(pathTerm, (s, p) =>
            {
                return(s.AddPath(p));
            });

            var rootTerm = new VocabTerm <OpenApiDocument>();

            rootTerm.MapObject <OpenApiDocument>(pathsTerm, (s) =>
            {
                return(s);
            });

            var swaggerDoc = new OpenApiDocument();
            var sw         = new Stopwatch();

            using (var stream = File.OpenRead(@"C:\Users\Darrel\Documents\Swagger\WebSites.json"))
            {
                sw.Start();

                JsonStreamingParser.ParseStream(stream, swaggerDoc, rootTerm);
                sw.Stop();
            };

            _output.WriteLine(swaggerDoc.Paths.Count.ToString());
            _output.WriteLine("That took : " + sw.ElapsedMilliseconds);
        }
     //   [Fact]
        public void ParseVeryLargeSwaggerPaths()
        {
            var opsTerm = new VocabTerm<Operation>();

            var pathTerm = new VocabTerm<Path>();
            pathTerm.MapAnyObject<Operation>(opsTerm, (s, p) =>
            {
                return s.AddOperation(p, Guid.NewGuid().ToString());
            });

            var pathsTerm = new VocabTerm<OpenApiDocument>("paths");

            pathsTerm.MapAnyObject<Path>(pathTerm, (s, p) =>
            {
                return s.AddPath(p);
            });

            var rootTerm = new VocabTerm<OpenApiDocument>();
            rootTerm.MapObject<OpenApiDocument>(pathsTerm, (s) =>
            {
                return s;
            });

            var swaggerDoc = new OpenApiDocument();
            var sw = new Stopwatch();
            using (var stream = File.OpenRead(@"C:\Users\Darrel\Documents\Swagger\WebSites.json"))
            {

                sw.Start();

                JsonStreamingParser.ParseStream(stream, swaggerDoc, rootTerm);
                sw.Stop();
            };

            _output.WriteLine(swaggerDoc.Paths.Count.ToString());
            _output.WriteLine("That took : " + sw.ElapsedMilliseconds);

        }
Example #5
0
        public void ParseSwaggerPaths()
        {

            var opsTerm = new VocabTerm<Operation>();

            var pathTerm = new VocabTerm<Path>();
            pathTerm.MapAnyObject<Operation>(opsTerm, (s, p) => {
                return s.AddOperation(p, Guid.NewGuid().ToString());
            });

            var pathsTerm = new VocabTerm<OpenApiDocument>("paths");

            pathsTerm.MapAnyObject<Path>(pathTerm,(s,p) => {
                return s.AddPath(p);
            });

            var rootTerm = new VocabTerm<OpenApiDocument>();
            rootTerm.MapObject<OpenApiDocument>(pathsTerm, (s) =>
             {
                 return s;
             });



            var stream = this.GetType().Assembly
     .GetManifestResourceStream(this.GetType(), "forecast.io.swagger.json");

            var swaggerDoc = new OpenApiDocument();

            JsonStreamingParser.ParseStream(stream, swaggerDoc, rootTerm);

            Assert.Equal(1, swaggerDoc.Paths.Count);
            Assert.Equal(1, swaggerDoc.Paths.First().Value.Operations.Count());
        }