From a7cc48e0ffc8b9efb7ab42d9e48ef7fcf8a1dff1 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alex.rose@rcsb.org> Date: Fri, 1 Mar 2019 15:01:25 -0800 Subject: [PATCH] volume server api docs tweaks --- src/servers/common/swagger-ui/index.ts | 14 ++++++++++---- src/servers/common/swagger-ui/indexTemplate.html | 4 +++- src/servers/volume/server/web-api.ts | 8 ++++++-- src/servers/volume/server/web-schema.ts | 2 ++ 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/servers/common/swagger-ui/index.ts b/src/servers/common/swagger-ui/index.ts index ae48a4b1c..d085a53b5 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 0f334da2c..d612efc1b 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 4ac65fcf9..53b4f365d 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 e24eb39a4..05c743af2 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 -- GitLab