From 25b9fb28dc89d0ee71f62867b6ed24a961e4fa12 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 30 Nov 2017 13:50:39 -0800 Subject: [PATCH 01/17] Move `Server Variables` header to a more sensible location --- src/core/plugins/oas3/components/servers.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/plugins/oas3/components/servers.jsx b/src/core/plugins/oas3/components/servers.jsx index 75b528f5..ee01c78b 100644 --- a/src/core/plugins/oas3/components/servers.jsx +++ b/src/core/plugins/oas3/components/servers.jsx @@ -109,13 +109,14 @@ export default class Servers extends React.Component { { shouldShowVariableUI ?
-

Server variables

+
Computed URL: {getEffectiveServerValue(currentServer)}
+

Server variables

{ From 07a9410ee51b4e0aac8172e1951de492974a4d8e Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 30 Nov 2017 14:07:42 -0800 Subject: [PATCH 02/17] Create `OperationServers` component --- src/core/components/operation.jsx | 7 +++++++ src/core/plugins/oas3/components/index.js | 2 ++ src/core/plugins/oas3/components/operation-servers.jsx | 7 +++++++ 3 files changed, 16 insertions(+) create mode 100644 src/core/plugins/oas3/components/operation-servers.jsx diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx index 8d4a2683..a7eeb6a2 100644 --- a/src/core/components/operation.jsx +++ b/src/core/components/operation.jsx @@ -96,6 +96,7 @@ export default class Operation extends PureComponent { const Collapse = getComponent( "Collapse" ) const Markdown = getComponent( "Markdown" ) const Schemes = getComponent( "schemes" ) + const OperationServers = getComponent( "OperationServers" ) const OperationExt = getComponent( "OperationExt" ) const { showExtensions } = getConfigs() @@ -165,6 +166,12 @@ export default class Operation extends PureComponent { : null } + { !tryItOutEnabled ? null : + + } + Date: Thu, 30 Nov 2017 14:25:05 -0800 Subject: [PATCH 03/17] Basic OperationServers display --- src/core/components/operation.jsx | 14 ++++++---- .../oas3/components/operation-servers.jsx | 28 ++++++++++++++++++- 2 files changed, 35 insertions(+), 7 deletions(-) diff --git a/src/core/components/operation.jsx b/src/core/components/operation.jsx index a7eeb6a2..f8d8095d 100644 --- a/src/core/components/operation.jsx +++ b/src/core/components/operation.jsx @@ -166,12 +166,6 @@ export default class Operation extends PureComponent { : null } - { !tryItOutEnabled ? null : - - } - + { !tryItOutEnabled ? null : + + } + {!tryItOutEnabled || !allowTryItOut ? null : schemes && schemes.size ?
+
+
+

Servers ({displaying})

+
+
+
+

These options override the global server settings.

+ +
+
} } From 0997c5e5d4887ad13cea00d4a858056cbbdc07e4 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 30 Nov 2017 14:34:01 -0800 Subject: [PATCH 04/17] Remove hardwired "Server" header, make global one prettier --- src/core/components/layouts/base.jsx | 1 + src/core/plugins/oas3/components/servers.jsx | 1 - src/style/_layout.scss | 10 ++++++---- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/core/components/layouts/base.jsx b/src/core/components/layouts/base.jsx index 6cd909bb..dea681a7 100644 --- a/src/core/components/layouts/base.jsx +++ b/src/core/components/layouts/base.jsx @@ -95,6 +95,7 @@ export default class BaseLayout extends React.Component { { servers && servers.size ? (
+ Server
+ Server Date: Thu, 30 Nov 2017 17:11:49 -0800 Subject: [PATCH 14/17] Don't render if there are no servers defined --- src/core/plugins/oas3/components/operation-servers.jsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/plugins/oas3/components/operation-servers.jsx b/src/core/plugins/oas3/components/operation-servers.jsx index e1e8d641..293b346f 100644 --- a/src/core/plugins/oas3/components/operation-servers.jsx +++ b/src/core/plugins/oas3/components/operation-servers.jsx @@ -69,6 +69,10 @@ export default class OperationServers extends React.Component { getComponent } = this.props + if(!operationServers && !pathServers) { + return null + } + const Servers = getComponent("Servers") const serversToDisplay = operationServers || pathServers From d7d061b5af31743b3d0fe2fac59ab467b4f9ed70 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 30 Nov 2017 17:26:49 -0800 Subject: [PATCH 15/17] Provide operation server data to Swagger-Client --- src/core/plugins/spec/actions.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/core/plugins/spec/actions.js b/src/core/plugins/spec/actions.js index 75c2a6b4..f47b09ef 100644 --- a/src/core/plugins/spec/actions.js +++ b/src/core/plugins/spec/actions.js @@ -228,9 +228,18 @@ export const executeRequest = (req) => } if(specSelectors.isOAS3()) { - // OAS3 request feature support - req.server = oas3Selectors.selectedServer() - req.serverVariables = oas3Selectors.serverVariables(req.server).toJS() + const namespace = `${pathName}:${method}` + + req.server = oas3Selectors.selectedServer(namespace) || oas3Selectors.selectedServer() + + const operationVariables = oas3Selectors.serverVariables({ + server: req.server, + namespace + }) + const globalVariables = oas3Selectors.serverVariables({ server: req.server }) + + req.serverVariables = operationVariables.size ? operationVariables : globalVariables + req.requestContentType = oas3Selectors.requestContentType(pathName, method) req.responseContentType = oas3Selectors.responseContentType(pathName, method) || "*/*" const requestBody = oas3Selectors.requestBodyValue(pathName, method) From 6f5649c6ba89cd8d37d8439afe4386f7a859f719 Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 30 Nov 2017 17:28:35 -0800 Subject: [PATCH 16/17] Only set the first server as current if we... ...don't already have a currentServer. This avoids having the selected server reset each time the operation is expanded, or the Try-It-Out mode is entered. --- src/core/plugins/oas3/components/servers.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/plugins/oas3/components/servers.jsx b/src/core/plugins/oas3/components/servers.jsx index 1e941b38..d6ed4a63 100644 --- a/src/core/plugins/oas3/components/servers.jsx +++ b/src/core/plugins/oas3/components/servers.jsx @@ -15,7 +15,11 @@ export default class Servers extends React.Component { } componentDidMount() { - let { servers } = this.props + let { servers, currentServer } = this.props + + if(currentServer) { + return + } //fire 'change' event to set default 'value' of select this.setServer(servers.first().get("url")) From bb57fd2406716fbffff418015f2ae2fa75599b0f Mon Sep 17 00:00:00 2001 From: Kyle Shockey Date: Thu, 30 Nov 2017 20:11:30 -0800 Subject: [PATCH 17/17] Send server variables to Client as JS objects --- src/core/plugins/spec/actions.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/plugins/spec/actions.js b/src/core/plugins/spec/actions.js index f47b09ef..5e6f51fc 100644 --- a/src/core/plugins/spec/actions.js +++ b/src/core/plugins/spec/actions.js @@ -232,13 +232,13 @@ export const executeRequest = (req) => req.server = oas3Selectors.selectedServer(namespace) || oas3Selectors.selectedServer() - const operationVariables = oas3Selectors.serverVariables({ + const namespaceVariables = oas3Selectors.serverVariables({ server: req.server, namespace - }) - const globalVariables = oas3Selectors.serverVariables({ server: req.server }) - - req.serverVariables = operationVariables.size ? operationVariables : globalVariables + }).toJS() + const globalVariables = oas3Selectors.serverVariables({ server: req.server }).toJS() + + req.serverVariables = Object.keys(namespaceVariables).length ? namespaceVariables : globalVariables req.requestContentType = oas3Selectors.requestContentType(pathName, method) req.responseContentType = oas3Selectors.responseContentType(pathName, method) || "*/*"