Переглянути джерело

volume server api docs tweaks

Alexander Rose 6 роки тому
батько
коміт
a7cc48e0ff

+ 10 - 4
src/servers/common/swagger-ui/index.ts

@@ -16,13 +16,19 @@ export function swaggerUiAssetsHandler(options?: ServeStaticOptions) {
     return express.static(getAbsoluteFSPath(), opts)
 }
 
-function createHTML(swaggerUrl: string, apiPrefix: string) {
+export interface SwaggerUIOptions {
+    openapiJsonUrl: string
+    apiPrefix: string
+    shortcutIconLink: string
+}
+
+function createHTML(options: SwaggerUIOptions) {
     const htmlTemplate = fs.readFileSync(`${__dirname}/indexTemplate.html`).toString()
-    return interpolate(htmlTemplate, { swaggerUrl, apiPrefix })
+    return interpolate(htmlTemplate, options)
 }
 
-export function swaggerUiIndexHandler(swaggerUrl: string, apiPrefix: string): express.Handler {
-    const html = createHTML(swaggerUrl, apiPrefix)
+export function swaggerUiIndexHandler(options: SwaggerUIOptions): express.Handler {
+    const html = createHTML(options)
     return (req: express.Request, res: express.Response) => {
         res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
         res.end(html);

+ 3 - 1
src/servers/common/swagger-ui/indexTemplate.html

@@ -4,6 +4,8 @@
         <meta charset="UTF-8">
         <title>Swagger UI</title>
         <link rel="stylesheet" type="text/css" href="${apiPrefix}/swagger-ui.css" >
+        ${shortcutIconLink}
+
         <style>
             html
             {
@@ -42,7 +44,7 @@
             }
             window.onload = function () {
                 var ui = SwaggerUIBundle({
-                    url: '${swaggerUrl}',
+                    url: '${openapiJsonUrl}',
                     validatorUrl: null,
                     docExpansion: 'list',
                     dom_id: '#swagger-ui',

+ 6 - 2
src/servers/volume/server/web-api.ts

@@ -16,7 +16,7 @@ import { ConsoleLogger } from 'mol-util/console-logger'
 import { State } from './state'
 import { LimitsConfig, ServerConfig } from '../config';
 import { interpolate } from 'mol-util/string';
-import { getSchema } from './web-schema';
+import { getSchema, shortcutIconLink } from './web-schema';
 import { swaggerUiIndexHandler, swaggerUiAssetsHandler } from 'servers/common/swagger-ui';
 
 export default function init(app: express.Express) {
@@ -42,7 +42,11 @@ export default function init(app: express.Express) {
     });
 
     app.use(makePath(''), swaggerUiAssetsHandler());
-    app.get(makePath(''), swaggerUiIndexHandler(makePath('openapi.json'), ServerConfig.apiPrefix));
+    app.get(makePath(''), swaggerUiIndexHandler({
+        openapiJsonUrl: makePath('openapi.json'),
+        apiPrefix: ServerConfig.apiPrefix,
+        shortcutIconLink
+    }));
 }
 
 function getMapFileFn() {

+ 2 - 0
src/servers/volume/server/web-schema.ts

@@ -257,3 +257,5 @@ export function getSchema() {
         }
     }
 }
+
+export const shortcutIconLink = `<link rel='shortcut icon' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAnUExURQAAAMIrHrspHr0oH7soILonHrwqH7onILsoHrsoH7soH7woILwpIKgVokoAAAAMdFJOUwAQHzNxWmBHS5XO6jdtAmoAAACZSURBVDjLxZNRCsQgDAVNXmwb9f7nXZEaLRgXloXOhwQdjMYYwpOLw55fBT46KhbOKhmRR2zLcFJQj8UR+HxFgArIF5BKJbEncC6NDEdI5SatBRSDJwGAoiFDONrEJXWYhGMIcRJGCrb1TOtDahfUuQXd10jkFYq0ViIrbUpNcVT6redeC1+b9tH2WLR93Sx2VCzkv/7NjfABxjQHksGB7lAAAAAASUVORK5CYII=' />`