19 lines
		
	
	
	
		
			591 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			19 lines
		
	
	
	
		
			591 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| 
								 | 
							
								# frozen_string_literal: true
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								class UnsubscribeService < BaseService
							 | 
						||
| 
								 | 
							
								  def call(account)
							 | 
						||
| 
								 | 
							
								    subscription = account.subscription(api_subscription_url(account.id))
							 | 
						||
| 
								 | 
							
								    response = subscription.unsubscribe
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    unless response.successful?
							 | 
						||
| 
								 | 
							
								      Rails.logger.debug "PuSH unsubscribe for #{account.acct} failed: #{response.message}"
							 | 
						||
| 
								 | 
							
								    end
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    account.secret = ''
							 | 
						||
| 
								 | 
							
								    account.subscription_expires_at = nil
							 | 
						||
| 
								 | 
							
								    account.save!
							 | 
						||
| 
								 | 
							
								  rescue HTTP::Error, OpenSSL::SSL::SSLError
							 | 
						||
| 
								 | 
							
								    Rails.logger.debug "PuSH subscription request for #{account.acct} could not be made due to HTTP or SSL error"
							 | 
						||
| 
								 | 
							
								  end
							 | 
						||
| 
								 | 
							
								end
							 |