Exemple #1
0
 private static void HandleSwagger(IApplicationBuilder app)
 {
     app.Run(async context =>
     {
         var handlers = ServiceLocator.GetService <Built.Grpcc.ServiceDescriptor>();
         var builder  = new SwaggerDefinitionBuilder(new SwaggerOptions("t", "d", "")
         {
         }, context, handlers);
         var bytes = builder.BuildSwaggerJson();
         context.Response.Headers["Content-Type"] = new[] { "application/json" };
         context.Response.StatusCode = 200;
         await context.Response.Body.WriteAsync(bytes, 0, bytes.Length);
     });
 }
Exemple #2
0
        public async Task Invoke(HttpContext httpContext)
        {
            // reference embedded resouces
            const string prefix = "ConsoleAppFramework.WebHosting.Swagger.SwaggerUI.";

            var path = httpContext.Request.Path.Value.Trim('/');

            if (path == "")
            {
                path = "index.html";
            }
            var filePath  = prefix + path.Replace("/", ".");
            var mediaType = GetMediaType(filePath);

            if (path.EndsWith(options.JsonName))
            {
                var builder = new SwaggerDefinitionBuilder(options, httpContext, handlers);
                var bytes   = builder.BuildSwaggerJson();
                httpContext.Response.Headers["Content-Type"] = new[] { "application/json" };
                httpContext.Response.StatusCode = 200;
                await httpContext.Response.Body.WriteAsync(bytes, 0, bytes.Length);

                return;
            }

            var myAssembly = typeof(ConsoleAppFrameworkSwaggerMiddleware).GetTypeInfo().Assembly;

            using (var stream = myAssembly.GetManifestResourceStream(filePath))
            {
                if (options.ResolveCustomResource == null)
                {
                    if (stream == null)
                    {
                        // not found, standard request.
                        await next(httpContext);

                        return;
                    }

                    httpContext.Response.Headers["Content-Type"] = new[] { mediaType };
                    httpContext.Response.StatusCode = 200;
                    var response = httpContext.Response.Body;
                    await stream.CopyToAsync(response);
                }
                else
                {
                    byte[] bytes;
                    if (stream == null)
                    {
                        bytes = options.ResolveCustomResource(path, null);
                    }
                    else
                    {
                        using (var ms = new MemoryStream())
                        {
                            await stream.CopyToAsync(ms);

                            bytes = options.ResolveCustomResource(path, ms.ToArray());
                        }
                    }

                    if (bytes == null)
                    {
                        // not found, standard request.
                        await next(httpContext);

                        return;
                    }

                    httpContext.Response.Headers["Content-Type"] = new[] { mediaType };
                    httpContext.Response.StatusCode = 200;
                    var response = httpContext.Response.Body;
                    await response.WriteAsync(bytes, 0, bytes.Length);
                }
            }
        }
Exemple #3
0
        public async Task Invoke(HttpContext httpContext)
        {
            if (httpContext.Request.Path.Value.Equals(options.JsonName))
            {
                var builder = new SwaggerDefinitionBuilder(options, httpContext, GrpcServiceMethodFactory.Handers);
                var bytes   = builder.BuildSwaggerJson();
                httpContext.Response.Headers["Content-Type"] = new[] { "application/json" };
                httpContext.Response.StatusCode = 200;
                httpContext.Response.Body.Write(bytes, 0, bytes.Length);
                return;
            }
            else
            {
                if (_next != null)
                {
                    await _next(httpContext);
                }
                return;
            }
            //// reference embedded resouces
            //const string prefix = "Built.Grpc.HttpGateway.swagger.ui_3._18._1.";
            ////Type type = MethodBase.GetCurrentMethod().DeclaringType;
            ////string _namespace = type.Namespace;

            //var path = httpContext.Request.Path.Value.Trim('/');
            //if (path == "") path = "index.html";
            //var filePath = prefix + path.Replace("/", ".");
            //var mediaType = GetMediaType(filePath);

            //var myAssembly = typeof(SwaggerMiddleware).GetTypeInfo().Assembly;
            //using (var stream = myAssembly.GetManifestResourceStream(filePath))
            //{
            //    if (options.ResolveCustomResource == null)
            //    {
            //        if (stream == null)
            //        {
            //            // not found, standard request.
            //            return _next(httpContext);
            //        }

            //        httpContext.Response.Headers["Content-Type"] = new[] { mediaType };
            //        httpContext.Response.StatusCode = 200;
            //        var response = httpContext.Response.Body;
            //        stream.CopyTo(response);
            //    }
            //    else
            //    {
            //        byte[] bytes;
            //        if (stream == null)
            //        {
            //            bytes = options.ResolveCustomResource(path, null);
            //        }
            //        else
            //        {
            //            using (var ms = new MemoryStream())
            //            {
            //                stream.CopyTo(ms);
            //                bytes = options.ResolveCustomResource(path, ms.ToArray());
            //            }
            //        }

            //        if (bytes == null)
            //        {
            //            // not found, standard request.
            //            return _next(httpContext);
            //        }

            //        httpContext.Response.Headers["Content-Type"] = new[] { mediaType };
            //        httpContext.Response.StatusCode = 200;
            //        var response = httpContext.Response.Body;
            //        response.Write(bytes, 0, bytes.Length);
            //    }
            //}

            //return EmptyTask;
        }