Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .env
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# The following are sample settings of REACT_APP_DEFINITION_FILE and REACT_APP_DEFINITION_URL
# Note that applying changes to REACT_APP_DEFINITION_FILE or REACT_APP_DEFINITION_URL flags requires restart of applicaton
# Note that applying changes to REACT_APP_DEFINITION_FILE or REACT_APP_DEFINITION_URL flags requires restart of application
# Tip: Should not set both REACT_APP_DEFINITION_FILE and REACT_APP_DEFINITION_URL flags

# Create-React-App expects static directory within /public to contain FILE
Expand All @@ -14,6 +14,16 @@
# AsyncAPI 2.x.x remote absolute URI
# REACT_APP_DEFINITION_URL=https://raw.githubusercontent.com/asyncapi/spec/v2.6.0/examples/streetlights-kafka.yml

# Swagger 2.0 to OpenAPI 3.0.x Converter URL
# Set this to use a custom converter service instead of the default
# Set to 'null' (without quotes) to disable the converter feature
# REACT_APP_SWAGGER2_CONVERTER_URL=https://converter.swagger.io/api/convert

# Generator base URLs (optional)
# Set these to use custom generator instances for OpenAPI 3.0 and 2.0 code generation
# REACT_APP_OPENAPI3_GENERATOR_BASE_URL=https://custom-generator3.example.com/api
# REACT_APP_OPENAPI2_GENERATOR_BASE_URL=https://custom-generator2.example.com/api/gen

REACT_APP_VERSION=$npm_package_version

REACT_APP_APIDOM_WORKER_PATH=./src/plugins/editor-monaco-language-apidom/language/apidom.worker.js
Expand Down
13 changes: 8 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -576,11 +576,14 @@ These environment variables will get baked in during build time into build artif

Environment variables currently available:

| Variable name | Description |
|-----------------------------|:----------------------------------------------------------------------------------------------------------:|
| `REACT_APP_DEFINITION_FILE` | Specifies a local file path, and the specified file must also be present in the `/public/static` directory |
| `REACT_APP_DEFINITION_URL` | Specifies a remote URL. This environment variable currently takes precedence over `REACT_APP_SWAGGER_FILE` |
| `REACT_APP_VERSION` | Specifies the version of this app. The version is read from `package.json` file. |
| Variable name | Description |
|-----------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| `REACT_APP_DEFINITION_FILE` | Specifies a local file path, and the specified file must also be present in the `/public/static` directory |
| `REACT_APP_DEFINITION_URL` | Specifies a remote URL. This environment variable currently takes precedence over `REACT_APP_SWAGGER_FILE` |
| `REACT_APP_VERSION` | Specifies the version of this app. The version is read from `package.json` file. |
| `REACT_APP_SWAGGER2_CONVERTER_URL` | Specifies the URL for the OpenAPI 2.0 to OpenAPI 3.0 converter service. Defaults to `https://converter.swagger.io/api/convert`. Set to `null` to disable conversion. |
| `REACT_APP_OPENAPI3_GENERATOR_BASE_URL` | Specifies the base URL for the OpenAPI 3.0 code generator service. Defaults to `https://generator3.swagger.io/api`. Set to `null` to disable the generator. |
| `REACT_APP_OPENAPI2_GENERATOR_BASE_URL` | Specifies the base URL for the OpenAPI 2.0 code generator service. Defaults to `https://generator.swagger.io/api/gen`. Set to `null` to disable the generator. |

Sample environment variable values can be found in `.env` file. For more information about using
environment variables, please refer to [adding Custom Environment Variables](https://create-react-app.dev/docs/adding-custom-environment-variables/)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ const ConvertToOpenAPI30xMenuItem = ({
}) => {
const DropdownMenuItem = getComponent('DropdownMenuItem');
const isContentTypeOpenAPI20 = editorSelectors.selectIsContentTypeOpenAPI20();
const converterURL = editorSelectors.selectOpenAPI20ConverterURL();

return isContentTypeOpenAPI20 ? (
return isContentTypeOpenAPI20 && converterURL ? (
<DropdownMenuItem onClick={onClick}>{children || 'Convert to OpenAPI 3.0.x'}</DropdownMenuItem>
) : null;
};
Expand All @@ -18,6 +19,7 @@ ConvertToOpenAPI30xMenuItem.propTypes = {
getComponent: PropTypes.func.isRequired,
editorSelectors: PropTypes.shape({
selectIsContentTypeOpenAPI20: PropTypes.func.isRequired,
selectOpenAPI20ConverterURL: PropTypes.func.isRequired,
}).isRequired,
children: PropTypes.node,
onClick: PropTypes.func.isRequired,
Expand Down
62 changes: 49 additions & 13 deletions src/plugins/top-bar/selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,39 @@ import { SUCCESS_STATUS, IDLE_STATUS } from './reducers.js';
* editor state plugin selectors.
*/

export const selectOpenAPI20ConverterURL = () => 'https://converter.swagger.io/api/convert';
export const selectOpenAPI20ConverterURL = () => {
const converterUrl = process.env.REACT_APP_SWAGGER2_CONVERTER_URL;
if (converterUrl === 'null') {
return null;
}
return converterUrl || 'https://converter.swagger.io/api/convert';
};

/**
* editorTopBar state plugin selectors.
*/

export const selectEditorTopBarState = (state) => state;

export const selectOpenAPI3GeneratorServerListURL = () =>
'https://generator3.swagger.io/api/servers';
export const selectOpenAPI3GeneratorBaseURL = () => {
return process.env.REACT_APP_OPENAPI3_GENERATOR_BASE_URL || 'https://generator3.swagger.io/api';
};

export const selectOpenAPI2GeneratorBaseURL = () => {
return (
process.env.REACT_APP_OPENAPI2_GENERATOR_BASE_URL || 'https://generator.swagger.io/api/gen'
);
};

export const selectOpenAPI3GeneratorServerListURL = () => {
const baseUrl = selectOpenAPI3GeneratorBaseURL();
return baseUrl ? `${baseUrl}/servers` : 'https://generator3.swagger.io/api/servers';
};

export const selectOpenAPI3GenerateServerURL = () => 'https://generator3.swagger.io/api/generate';
export const selectOpenAPI3GenerateServerURL = () => {
const baseUrl = selectOpenAPI3GeneratorBaseURL();
return baseUrl ? `${baseUrl}/generate` : 'https://generator3.swagger.io/api/generate';
};

export const selectOpenAPI3GeneratorServerListStatus = (state) =>
state.get('openAPI3GeneratorServerListStatus') || IDLE_STATUS;
Expand All @@ -34,10 +55,15 @@ export const selectOpenAPI3GeneratorServerList = createSelector(
}
);

export const selectOpenAPI3GeneratorClientListURL = () =>
'https://generator3.swagger.io/api/clients';
export const selectOpenAPI3GeneratorClientListURL = () => {
const baseUrl = selectOpenAPI3GeneratorBaseURL();
return baseUrl ? `${baseUrl}/clients` : 'https://generator3.swagger.io/api/clients';
};

export const selectOpenAPI3GenerateClientURL = () => 'https://generator3.swagger.io/api/generate';
export const selectOpenAPI3GenerateClientURL = () => {
const baseUrl = selectOpenAPI3GeneratorBaseURL();
return baseUrl ? `${baseUrl}/generate` : 'https://generator3.swagger.io/api/generate';
};

export const selectOpenAPI3GeneratorClientListStatus = (state) =>
state.get('openAPI3GeneratorClientListStatus') || IDLE_STATUS;
Expand All @@ -54,10 +80,15 @@ export const selectOpenAPI3GeneratorClientList = createSelector(
}
);

export const selectOpenAPI2GeneratorServerListURL = () =>
'https://generator.swagger.io/api/gen/servers';
export const selectOpenAPI2GeneratorServerListURL = () => {
const baseUrl = selectOpenAPI2GeneratorBaseURL();
return baseUrl ? `${baseUrl}/servers` : 'https://generator.swagger.io/api/gen/servers';
};

export const selectOpenAPI2GenerateServerURL = () => 'https://generator.swagger.io/api/gen/servers';
export const selectOpenAPI2GenerateServerURL = () => {
const baseUrl = selectOpenAPI2GeneratorBaseURL();
return baseUrl ? `${baseUrl}/servers` : 'https://generator.swagger.io/api/gen/servers';
};

export const selectOpenAPI2GeneratorServerListStatus = (state) =>
state.get('openAPI2GeneratorServerListStatus') || IDLE_STATUS;
Expand All @@ -74,10 +105,15 @@ export const selectOpenAPI2GeneratorServerList = createSelector(
}
);

export const selectOpenAPI2GeneratorClientListURL = () =>
'https://generator.swagger.io/api/gen/clients';
export const selectOpenAPI2GeneratorClientListURL = () => {
const baseUrl = selectOpenAPI2GeneratorBaseURL();
return baseUrl ? `${baseUrl}/clients` : 'https://generator.swagger.io/api/gen/clients';
};

export const selectOpenAPI2GenerateClientURL = () => 'https://generator.swagger.io/api/gen/clients';
export const selectOpenAPI2GenerateClientURL = () => {
const baseUrl = selectOpenAPI2GeneratorBaseURL();
return baseUrl ? `${baseUrl}/clients` : 'https://generator.swagger.io/api/gen/clients';
};

export const selectOpenAPI2GeneratorClientListStatus = (state) =>
state.get('openAPI2GeneratorClientListStatus') || IDLE_STATUS;
Expand Down