Class: DynamicLinks::ShortenUrlJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/dynamic_links/shorten_url_job.rb

Overview

This job is used to create a shortened url

Author:

Instance Method Summary collapse

Instance Method Details

#perform(client, url, short_url, lock_key) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/jobs/dynamic_links/shorten_url_job.rb', line 7

def perform(client, url, short_url, lock_key)
  locker = DynamicLinks::Async::Locker.new
  strategy = StrategyFactory.get_strategy(DynamicLinks.configuration.shortening_strategy)

  begin
    if strategy.always_growing?
      storage.create!(client: client, url: url, short_url: short_url)
    else
      storage.find_or_create!(client, short_url, url)
    end
    locker.unlock(lock_key)
    DynamicLinks::Logger.log_info("Lock key #{lock_key} deleted after ShortenUrlJob")
  rescue => e
    DynamicLinks::Logger.log_error("Error in ShortenUrlJob: #{e.message}")
    raise e
  end
end