diff --git a/app/api/src/docker/serverless.yml b/app/api/src/docker/serverless.yml index e380ba4..b721adc 100644 --- a/app/api/src/docker/serverless.yml +++ b/app/api/src/docker/serverless.yml @@ -144,3 +144,23 @@ functions: # NewOutput: # Description: "Description for the output" # Value: "Some output value" +resources: + Resources: + GatewayResponseDefault4XX: + Type: 'AWS::ApiGateway::GatewayResponse' + Properties: + ResponseParameters: + gatewayresponse.header.Access-Control-Allow-Origin: "'*'" + gatewayresponse.header.Access-Control-Allow-Headers: "'*'" + ResponseType: DEFAULT_4XX + RestApiId: + Ref: 'ApiGatewayRestApi' + GatewayResponseDefault5XX: + Type: 'AWS::ApiGateway::GatewayResponse' + Properties: + ResponseParameters: + gatewayresponse.header.Access-Control-Allow-Origin: "'*'" + gatewayresponse.header.Access-Control-Allow-Headers: "'*'" + ResponseType: DEFAULT_5XX + RestApiId: + Ref: 'ApiGatewayRestApi' diff --git a/app/web/src/helpers/cadPackages/cadQueryController.js b/app/web/src/helpers/cadPackages/cadQueryController.js index e630097..950d5d6 100644 --- a/app/web/src/helpers/cadPackages/cadQueryController.js +++ b/app/web/src/helpers/cadPackages/cadQueryController.js @@ -3,6 +3,7 @@ import { stlToGeometry, createHealthyResponse, createUnhealthyResponse, + timeoutErrorMessage, } from './common' export const render = async ({ code }) => { @@ -29,6 +30,9 @@ export const render = async ({ code }) => { }, } } + if (response.status === 502) { + return createUnhealthyResponse(new Date(), timeoutErrorMessage) + } const data = await response.json() const geometry = await stlToGeometry(data.url) return createHealthyResponse({ diff --git a/app/web/src/helpers/cadPackages/common.js b/app/web/src/helpers/cadPackages/common.js index bdb1af5..293725b 100644 --- a/app/web/src/helpers/cadPackages/common.js +++ b/app/web/src/helpers/cadPackages/common.js @@ -38,3 +38,5 @@ export function createUnhealthyResponse(date, message = 'network issue') { }, } } + +export const timeoutErrorMessage = `timeout: We're currently limited a 30s execution time. You can try again, sometimes it works the second time` diff --git a/app/web/src/helpers/cadPackages/openScadController.js b/app/web/src/helpers/cadPackages/openScadController.js index 365b8ae..80e1587 100644 --- a/app/web/src/helpers/cadPackages/openScadController.js +++ b/app/web/src/helpers/cadPackages/openScadController.js @@ -3,6 +3,7 @@ import { stlToGeometry, createHealthyResponse, createUnhealthyResponse, + timeoutErrorMessage, } from './common' export const render = async ({ code, settings }) => { @@ -49,6 +50,9 @@ export const render = async ({ code, settings }) => { const cleanedErrorMessage = cleanError(error) return createUnhealthyResponse(new Date(), cleanedErrorMessage) } + if (response.status === 502) { + return createUnhealthyResponse(new Date(), timeoutErrorMessage) + } const data = await response.json() const type = data.type !== 'stl' ? 'png' : 'geometry' const newData = data.type !== 'stl' ? data.url : stlToGeometry(data.url) @@ -81,6 +85,9 @@ export const stl = async ({ code, settings }) => { const cleanedErrorMessage = cleanError(error) return createUnhealthyResponse(new Date(), cleanedErrorMessage) } + if (response.status === 502) { + return createUnhealthyResponse(new Date(), timeoutErrorMessage) + } const data = await response.json() const geometry = await stlToGeometry(data.url) return createHealthyResponse({