mirror of https://github.com/abpframework/abp.git
8 changed files with 56 additions and 102 deletions
@ -0,0 +1,9 @@ |
|||
using System.IO; |
|||
|
|||
namespace Volo.Abp |
|||
{ |
|||
public interface ISwaggerHtmlResolver |
|||
{ |
|||
Stream Resolver(); |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
using System.IO; |
|||
using System.Reflection; |
|||
using System.Text; |
|||
using Swashbuckle.AspNetCore.SwaggerUI; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace Volo.Abp |
|||
{ |
|||
public class SwaggerHtmlResolver : ISwaggerHtmlResolver, ITransientDependency |
|||
{ |
|||
public virtual Stream Resolver() |
|||
{ |
|||
var stream = typeof(SwaggerUIOptions).GetTypeInfo().Assembly |
|||
.GetManifestResourceStream("Swashbuckle.AspNetCore.SwaggerUI.index.html"); |
|||
|
|||
var html = new StreamReader(stream) |
|||
.ReadToEnd() |
|||
.Replace("SwaggerUIBundle(configObject)", "AbpSwaggerUIBundle(configObject)"); |
|||
|
|||
return new MemoryStream(Encoding.UTF8.GetBytes(html)); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
function AbpSwaggerUIBundle(configObject) { |
|||
configObject.requestInterceptor = function (request) { |
|||
var token = abp.auth.getToken(); |
|||
request.headers.Authorization = token ? "Bearer " + token : null; |
|||
var antiForgeryToken = abp.security.antiForgery.getToken(); |
|||
if (antiForgeryToken) { |
|||
request.headers[abp.security.antiForgery.tokenHeaderName] = antiForgeryToken; |
|||
} |
|||
return request; |
|||
}; |
|||
|
|||
return SwaggerUIBundle(configObject); |
|||
} |
|||
|
|||
@ -1,95 +0,0 @@ |
|||
<!-- HTML for static distribution bundle build --> |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="UTF-8"> |
|||
<title>%(DocumentTitle)</title> |
|||
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" |
|||
rel="stylesheet"> |
|||
<link rel="stylesheet" type="text/css" href="./swagger-ui.css"> |
|||
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32"/> |
|||
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16"/> |
|||
<style> |
|||
html { |
|||
box-sizing: border-box; |
|||
overflow: -moz-scrollbars-vertical; |
|||
overflow-y: scroll; |
|||
} |
|||
|
|||
*, |
|||
*:before, |
|||
*:after { |
|||
box-sizing: inherit; |
|||
} |
|||
|
|||
body { |
|||
margin: 0; |
|||
background: #fafafa; |
|||
} |
|||
</style> |
|||
%(HeadContent) |
|||
</head> |
|||
|
|||
<body> |
|||
|
|||
<div id="swagger-ui"></div> |
|||
|
|||
<!-- Workaround for https://github.com/swagger-api/swagger-editor/issues/1371 --> |
|||
<script> |
|||
if (window.navigator.userAgent.indexOf("Edge") > -1) { |
|||
console.log("Removing native Edge fetch in favor of swagger-ui's polyfill") |
|||
window.fetch = undefined; |
|||
} |
|||
</script> |
|||
|
|||
<script src="./swagger-ui-bundle.js"></script> |
|||
<script src="./swagger-ui-standalone-preset.js"></script> |
|||
<script src="/libs/abp/core/abp.js"></script> |
|||
|
|||
<script> |
|||
window.onload = function () { |
|||
var configObject = JSON.parse('%(ConfigObject)'); |
|||
var oauthConfigObject = JSON.parse('%(OAuthConfigObject)'); |
|||
|
|||
// Workaround for https://github.com/swagger-api/swagger-ui/issues/5945 |
|||
configObject.urls.forEach(function (item) { |
|||
if (item.url.startsWith("http") || item.url.startsWith("/")) return; |
|||
item.url = window.location.href.replace("index.html", item.url).split('#')[0]; |
|||
}); |
|||
|
|||
// If validatorUrl is not explicitly provided, disable the feature by setting to null |
|||
if (!configObject.hasOwnProperty("validatorUrl")) |
|||
configObject.validatorUrl = null |
|||
|
|||
// If oauth2RedirectUrl isn't specified, use the built-in default |
|||
if (!configObject.hasOwnProperty("oauth2RedirectUrl")) |
|||
configObject.oauth2RedirectUrl = window.location.href.replace("index.html", "oauth2-redirect.html").split('#')[0]; |
|||
|
|||
// Apply mandatory parameters |
|||
configObject.dom_id = "#swagger-ui"; |
|||
configObject.presets = [SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset]; |
|||
configObject.layout = "StandaloneLayout"; |
|||
configObject.requestInterceptor = function (request) { |
|||
var token = abp.auth.getToken(); |
|||
request.headers.Authorization = token ? "Bearer " + token : null; |
|||
var antiForgeryToken = abp.security.antiForgery.getToken(); |
|||
if (antiForgeryToken) { |
|||
request.headers[abp.security.antiForgery.tokenHeaderName] = antiForgeryToken; |
|||
} |
|||
return request; |
|||
}; |
|||
|
|||
// Begin Swagger UI call region |
|||
|
|||
const ui = SwaggerUIBundle(configObject); |
|||
|
|||
ui.initOAuth(oauthConfigObject); |
|||
|
|||
// End Swagger UI call region |
|||
|
|||
window.ui = ui |
|||
} |
|||
</script> |
|||
</body> |
|||
|
|||
</html> |
|||
Loading…
Reference in new issue