Skip to content

Commit

Permalink
checks for websocket object
Browse files Browse the repository at this point in the history
  • Loading branch information
BillConley01 committed Apr 14, 2022
1 parent e784f04 commit 7578f22
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 13 deletions.
9 changes: 6 additions & 3 deletions lib/plugins/aws/lib/naming.js
Original file line number Diff line number Diff line change
Expand Up @@ -207,11 +207,14 @@ module.exports = {

// Websockets API
getWebsocketsApiName() {
if (_.get(this.provider.serverless.service.provider.websockets)) {
return `${this.provider.serverless.service.provider.websockets.apiName}`;
}
if (
this.provider.serverless.service.provider.websockets.apiName &&
typeof this.provider.serverless.service.provider.websockets.apiName === 'string'
this.provider.serverless.service.provider.websocketsApiName &&
typeof this.provider.serverless.service.provider.websocketsApiName === 'string'
) {
return `${this.provider.serverless.service.provider.websockets.apiName}`;
return `${this.provider.serverless.service.provider.websocketsApiName}`;
}
return `${this.provider.getStage()}-${this.provider.serverless.service.service}-websockets`;
},
Expand Down
16 changes: 11 additions & 5 deletions lib/plugins/aws/package/compile/events/websockets/lib/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,24 @@ module.exports = {

this.websocketsApiLogicalId = this.provider.naming.getWebsocketsApiLogicalId();

const RouteSelectionExpression =
this.serverless.service.provider.websockets.apiRouteSelectionExpression ||
'$request.body.action';
const RouteSelectionExpression = _.get(
this.provider,
'serverless.service.provider.websockets.routeSelectionExpression'
)
? this.serverless.service.provider.websockets.routeSelectionExpression ||
'$request.body.action'
: this.serverless.service.provider.websocketsRouteSelectionExpression ||
'$request.body.action';

_.merge(this.serverless.service.provider.compiledCloudFormationTemplate.Resources, {
[this.websocketsApiLogicalId]: {
Type: 'AWS::ApiGatewayV2::Api',
Properties: {
Name: this.provider.naming.getWebsocketsApiName(),
RouteSelectionExpression,
Description:
this.serverless.service.provider.websockets.description || 'Serverless Websockets',
Description: this.serverless.service.provider.websockets
? this.serverless.service.provider.websockets.description
: this.serverless.service.provider.websocketsDescription || 'Serverless Websockets',
ProtocolType: 'WEBSOCKET',
},
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@ module.exports = {
DependsOn: dependentResourceIds,
Properties: {
ApiId: this.provider.getApiGatewayWebsocketApiId(),
Description:
this.serverless.service.provider.websockets.description || 'Serverless Websockets',
Description: this.serverless.service.provider.websockets
? this.serverless.service.provider.websockets.description
: this.serverless.service.provider.websocketsDescription || 'Serverless Websockets',
},
},
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ module.exports = {
ApiId: this.provider.getApiGatewayWebsocketApiId(),
// DeploymentId is generated at deployment.js file
StageName: this.provider.getStage(),
Description:
this.serverless.service.provider.websockets.description || 'Serverless Websockets',
Description: this.serverless.service.provider.websockets
? this.serverless.service.provider.websockets.description
: this.serverless.service.provider.websocketsDescription || 'Serverless Websockets',
},
};

Expand Down
3 changes: 3 additions & 0 deletions lib/plugins/aws/provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -1195,6 +1195,9 @@ class AwsProvider {
vpc: { $ref: '#/definitions/awsLambdaVpcConfig' },
vpcEndpointIds: { $ref: '#/definitions/awsCfArrayInstruction' },
versionFunctions: { $ref: '#/definitions/awsLambdaVersioning' },
websocketsApiName: { type: 'string' },
websocketsApiRouteSelectionExpression: { type: 'string' },
websocketsDescription: { type: 'string' },
websockets: {
type: 'object',
properties: {
Expand Down
2 changes: 1 addition & 1 deletion test/unit/lib/plugins/aws/lib/naming.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ describe('#naming()', () => {
});

it('should return the custom api name if provided', () => {
serverless.service.provider.websockets.apiName = 'app-dev-websockets-testApi';
serverless.service.provider.websocketsApiName = 'app-dev-websockets-testApi';
serverless.service.service = 'myService';
serverless.service.provider.stage = sdk.naming.provider.getStage();
expect(sdk.naming.getWebsocketsApiName()).to.equal('app-dev-websockets-testApi');
Expand Down

0 comments on commit 7578f22

Please sign in to comment.