diff --git a/src/servers/common/swagger-ui/index.ts b/src/servers/common/swagger-ui/index.ts index ae48a4b1c345f8858fb427f3be7a5eeee82417ac..d085a53b532d5dc6410d39771e771368d7652a77 100644 --- a/src/servers/common/swagger-ui/index.ts +++ b/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); diff --git a/src/servers/common/swagger-ui/indexTemplate.html b/src/servers/common/swagger-ui/indexTemplate.html index 0f334da2c2270b1df2e2ab8b8ffda388609d444c..d612efc1ba366b3511e89a6b8e86cb3b361f8165 100644 --- a/src/servers/common/swagger-ui/indexTemplate.html +++ b/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', diff --git a/src/servers/volume/server/web-api.ts b/src/servers/volume/server/web-api.ts index 4ac65fcf96ca40ad9b12eb5f8209e692acbebb6b..53b4f365d712c1afdce6d8d888ecf8cc86896f06 100644 --- a/src/servers/volume/server/web-api.ts +++ b/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() { diff --git a/src/servers/volume/server/web-schema.ts b/src/servers/volume/server/web-schema.ts index e24eb39a4ce8252aa6995ca4f0b6da4b532a0a46..05c743af26cb9dde7e9bd9c197e0c70c284f916d 100644 --- a/src/servers/volume/server/web-schema.ts +++ b/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=' />` \ No newline at end of file