Skip to content
Snippets Groups Projects
Commit dca295af authored by Jano Hendriks's avatar Jano Hendriks
Browse files

Get websocket domain info from ENV

parent c1e73395
Branches
Tags v1.256.0
No related merge requests found
...@@ -3,7 +3,6 @@ package websocket_utils ...@@ -3,7 +3,6 @@ package websocket_utils
import ( import (
"context" "context"
"fmt" "fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws"
"github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/config"
"github.com/aws/aws-sdk-go-v2/service/apigatewaymanagementapi" "github.com/aws/aws-sdk-go-v2/service/apigatewaymanagementapi"
...@@ -18,14 +17,17 @@ var ( ...@@ -18,14 +17,17 @@ var (
type APIGateWayClientWithHelpers struct { type APIGateWayClientWithHelpers struct {
APIGatewayClient *apigatewaymanagementapi.Client APIGatewayClient *apigatewaymanagementapi.Client
Available bool
} }
func GetClient(req *events.APIGatewayWebsocketProxyRequest, region ...string) *APIGateWayClientWithHelpers { func GetClient(region ...string) *APIGateWayClientWithHelpers {
if req == nil { domainName := os.Getenv("WEBSOCKET_DOMAIN_NAME")
logs.ErrorMsg("APIGatewayWebsocketProxyRequest is nil") if domainName == "" {
return nil logs.ErrorMsg("WEBSOCKET_API_DOMAIN_NAME env variable is not set")
return &APIGateWayClientWithHelpers{}
} }
env := utils.GetEnv("ENVIRONMENT", "dev")
s3Region := os.Getenv("AWS_REGION") s3Region := os.Getenv("AWS_REGION")
// Set custom region // Set custom region
...@@ -43,33 +45,43 @@ func GetClient(req *events.APIGatewayWebsocketProxyRequest, region ...string) *A ...@@ -43,33 +45,43 @@ func GetClient(req *events.APIGatewayWebsocketProxyRequest, region ...string) *A
config.WithRegion(s3Region), config.WithRegion(s3Region),
) )
if err != nil { if err != nil {
return nil logs.ErrorMsg("failed to load AWS config for websocket client")
return &APIGateWayClientWithHelpers{}
} }
apiGatewaySession := NewClient(req, cfg) apiGatewaySession := NewClient(cfg, domainName, env)
sessions[s3Region] = apiGatewaySession sessions[s3Region] = apiGatewaySession
return apiGatewaySession return apiGatewaySession
} }
func NewClient(req *events.APIGatewayWebsocketProxyRequest, config aws.Config) *APIGateWayClientWithHelpers { func NewClient(config aws.Config, domainName string, env string) *APIGateWayClientWithHelpers {
return &APIGateWayClientWithHelpers{ return &APIGateWayClientWithHelpers{
APIGatewayClient: apigatewaymanagementapi.NewFromConfig(config, func(o *apigatewaymanagementapi.Options) { APIGatewayClient: apigatewaymanagementapi.NewFromConfig(config, func(o *apigatewaymanagementapi.Options) {
o.BaseEndpoint = utils.ValueToPointer(fmt.Sprintf("https://%s/%s", req.RequestContext.DomainName, req.RequestContext.Stage)) o.BaseEndpoint = utils.ValueToPointer(fmt.Sprintf("https://%s/%s", domainName, env))
}), }),
Available: true,
} }
} }
func (s APIGateWayClientWithHelpers) PostToConnectionID(data []byte, connectionID string) error { func (a APIGateWayClientWithHelpers) PostToConnectionID(data []byte, connectionID string) error {
_, err := s.APIGatewayClient.PostToConnection(context.TODO(), &apigatewaymanagementapi.PostToConnectionInput{ if !a.Available {
return nil
}
_, err := a.APIGatewayClient.PostToConnection(context.TODO(), &apigatewaymanagementapi.PostToConnectionInput{
ConnectionId: &connectionID, ConnectionId: &connectionID,
Data: data, Data: data,
}) })
return err return err
} }
func (s APIGateWayClientWithHelpers) PostToConnectionIDs(data []byte, connectionIDs []string) { func (a APIGateWayClientWithHelpers) PostToConnectionIDs(data []byte, connectionIDs []string) {
if !a.Available {
return
}
for _, connectionID := range connectionIDs { for _, connectionID := range connectionIDs {
_, err := s.APIGatewayClient.PostToConnection(context.TODO(), &apigatewaymanagementapi.PostToConnectionInput{ _, err := a.APIGatewayClient.PostToConnection(context.TODO(), &apigatewaymanagementapi.PostToConnectionInput{
ConnectionId: &connectionID, ConnectionId: &connectionID,
Data: data, Data: data,
}) })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment