|  |  | @ -3,9 +3,10 @@ | 
			
		
	
		
		
			
				
					
					|  |  |  | class SendFormCompletedWebhookRequestJob < ApplicationJob |  |  |  | class SendFormCompletedWebhookRequestJob < ApplicationJob | 
			
		
	
		
		
			
				
					
					|  |  |  |   USER_AGENT = 'DocuSeal.co Webhook' |  |  |  |   USER_AGENT = 'DocuSeal.co Webhook' | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   NotSuccessStatus = Class.new(StandardError) |  |  |  |   MAX_ATTEMPTS = 10 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   def perform(submitter) |  |  |  |   def perform(submitter, params = {}) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     attempt = params[:attempt].to_i | 
			
		
	
		
		
			
				
					
					|  |  |  |     config = Accounts.load_webhook_configs(submitter.submission.account) |  |  |  |     config = Accounts.load_webhook_configs(submitter.submission.account) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     return if config.blank? || config.value.blank? |  |  |  |     return if config.blank? || config.value.blank? | 
			
		
	
	
		
		
			
				
					|  |  | @ -23,8 +24,13 @@ class SendFormCompletedWebhookRequestJob < ApplicationJob | 
			
		
	
		
		
			
				
					
					|  |  |  |                         'Content-Type' => 'application/json', |  |  |  |                         'Content-Type' => 'application/json', | 
			
		
	
		
		
			
				
					
					|  |  |  |                         'User-Agent' => USER_AGENT) |  |  |  |                         'User-Agent' => USER_AGENT) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     if resp.status.to_i >= 400 && (!Docuseal.multitenant? || submitter.account.account_configs.exists?(key: :plan)) |  |  |  |     if resp.status.to_i >= 400 && attempt <= MAX_ATTEMPTS && | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       raise NotSuccessStatus, resp.status.to_s |  |  |  |        (!Docuseal.multitenant? || submitter.account.account_configs.exists?(key: :plan)) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       SendFormCompletedWebhookRequestJob.set(wait: (2**attempt).minutes) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                         .perform_later(submitter, { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                                          attempt: attempt + 1, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                                          last_status: resp.status.to_i | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                                        }) | 
			
		
	
		
		
			
				
					
					|  |  |  |     end |  |  |  |     end | 
			
		
	
		
		
			
				
					
					|  |  |  |   end |  |  |  |   end | 
			
		
	
		
		
			
				
					
					|  |  |  | end |  |  |  | end | 
			
		
	
	
		
		
			
				
					|  |  | 
 |