@@ -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