@@ -19,8 +19,6 @@ defmodule Sequin.Consumers.SqsSink do
1919 field :is_fifo , :boolean , default: false
2020 end
2121
22- @ sqs_url_regex ~r/ ^https:\/ \/ sqs\. (?<region>[a-z0-9-]+)\. amazonaws\. com\/ \d {12}\/ [a-zA-Z0-9_-]+(?:\. fifo)?$/
23-
2422 def changeset ( struct , params ) do
2523 struct
2624 |> cast ( params , [ :queue_url , :region , :access_key_id , :secret_access_key , :is_fifo ] )
@@ -32,7 +30,7 @@ defmodule Sequin.Consumers.SqsSink do
3230
3331 defp validate_queue_url ( changeset ) do
3432 changeset
35- |> validate_format ( :queue_url , @ sqs_url_regex ,
33+ |> validate_format ( :queue_url , sqs_url_regex ( ) ,
3634 message: "must be a valid AWS SQS URL (https://sqs.<region>.amazonaws.com/<account-id>/<queue-name>)"
3735 )
3836 |> validate_length ( :queue_url , max: 2000 )
@@ -87,9 +85,13 @@ defmodule Sequin.Consumers.SqsSink do
8785
8886 """
8987 def region_from_url ( queue_url ) do
90- case Regex . named_captures ( @ sqs_url_regex , queue_url ) do
88+ case Regex . named_captures ( sqs_url_regex ( ) , queue_url ) do
9189 % { "region" => region } -> region
9290 _ -> { :error , Sequin.Error . validation ( summary: "Invalid SQS queue URL format" ) }
9391 end
9492 end
93+
94+ def sqs_url_regex do
95+ ~r/ ^https:\/ \/ sqs\. (?<region>[a-z0-9-]+)\. amazonaws\. com\/ \d {12}\/ [a-zA-Z0-9_-]+(?:\. fifo)?$/
96+ end
9597end
0 commit comments