public SwaggerUiIndexMiddleware(RequestDelegate nextDelegate, string indexPath, SwaggerUiSettingsBase <T> settings, string resourcePath) { _nextDelegate = nextDelegate; _indexPath = indexPath; _settings = settings; _resourcePath = resourcePath; }
public SwaggerUiIndexMiddleware(OwinMiddleware next, string indexPath, SwaggerUiSettingsBase settings, string resourcePath) : base(next) { _indexPath = indexPath; _settings = settings; _resourcePath = resourcePath; }
private static void UseSwaggerUiWithDocumentNamePlaceholderExpanding(IApplicationBuilder app, SwaggerUiSettingsBase <WebApiToSwaggerGeneratorSettings> settings, Action <string, string> register, Action <IReadOnlyDictionary <string, ISwaggerGenerator> > registerMultiple) { if (settings.ActualSwaggerRoute.Contains("{documentName}")) { var registry = app.ApplicationServices.GetRequiredService <SwaggerDocumentRegistry>(); if (settings.ActualSwaggerUiRoute.Contains("{documentName}")) { // Register multiple uis foreach (var document in registry.Documents) { register( settings.ActualSwaggerRoute.Replace("{documentName}", document.Key), settings.ActualSwaggerUiRoute.Replace("{documentName}", document.Key)); } } else { // Register single ui with multiple documents registerMultiple(registry.Documents); register(settings.ActualSwaggerRoute, settings.ActualSwaggerUiRoute); } } else { if (settings.ActualSwaggerUiRoute.Contains("{documentName}")) { throw new ArgumentException("The SwaggerUiRoute cannot contain '{documentName}' placeholder when SwaggerRoute is missing the placeholder."); } register(settings.ActualSwaggerRoute, settings.ActualSwaggerUiRoute); } }
private static void UseSwaggerUiWithDocumentNamePlaceholderExpanding(IApplicationBuilder app, SwaggerUiSettingsBase <WebApiToSwaggerGeneratorSettings> settings, Action <string, string> register, Func <IEnumerable <SwaggerDocumentRegistration>, bool> registerMultiple) { if (settings.ActualSwaggerDocumentPath.Contains("{documentName}")) { var documents = app.ApplicationServices.GetRequiredService <IEnumerable <SwaggerDocumentRegistration> >(); if (settings.ActualSwaggerUiPath.Contains("{documentName}")) { // Register multiple uis for each document foreach (var document in documents) { register( settings.ActualSwaggerDocumentPath.Replace("{documentName}", document.DocumentName), settings.ActualSwaggerUiPath.Replace("{documentName}", document.DocumentName)); } } else { // Register single ui with multiple documents if (registerMultiple(documents)) { register(settings.ActualSwaggerDocumentPath, settings.ActualSwaggerUiPath); } else { // If multiple documents is not supported and only one document is registered if (documents.Count() == 1) { register( settings.ActualSwaggerDocumentPath.Replace("{documentName}", documents.First().DocumentName), settings.ActualSwaggerUiPath.Replace("{documentName}", documents.First().DocumentName)); } else { throw new NotSupportedException("This UI does not support multiple documents per UI: " + "Do not use '{documentName}' placeholder only in DocumentPath but also in Path to register multiple UIs."); } } } } else { if (settings.ActualSwaggerUiPath.Contains("{documentName}")) { throw new ArgumentException("The SwaggerUiRoute cannot contain '{documentName}' placeholder when SwaggerRoute is missing the placeholder."); } // Register single ui with one document register(settings.ActualSwaggerDocumentPath, settings.ActualSwaggerUiPath); } }
private static void UseSwaggerUiWithDocumentNamePlaceholderExpanding(IApplicationBuilder app, SwaggerUiSettingsBase <WebApiToSwaggerGeneratorSettings> settings, Action <string, string> register, Action <IEnumerable <SwaggerDocumentRegistration> > registerMultiple) { if (settings.ActualSwaggerDocumentPath.Contains("{documentName}")) { var documents = app.ApplicationServices.GetRequiredService <IEnumerable <SwaggerDocumentRegistration> >(); if (settings.ActualSwaggerUiPath.Contains("{documentName}")) { // Register multiple uis for each document foreach (var document in documents) { register( settings.ActualSwaggerDocumentPath.Replace("{documentName}", document.DocumentName), settings.ActualSwaggerUiPath.Replace("{documentName}", document.DocumentName)); } } else { // Register single ui with multiple documents registerMultiple(documents); register(settings.ActualSwaggerDocumentPath, settings.ActualSwaggerUiPath); } } else { if (settings.ActualSwaggerUiPath.Contains("{documentName}")) { throw new ArgumentException("The SwaggerUiRoute cannot contain '{documentName}' placeholder when SwaggerRoute is missing the placeholder."); } // Register single ui with one document register(settings.ActualSwaggerDocumentPath, settings.ActualSwaggerUiPath); } }