Sha256: 2260021d53fbac6cbf3ef1bcd6adc5d09fca5e2fef15dbdfdce1bd860eea7713

Contents?: true

Size: 873 Bytes

Versions: 5

Compression:

Stored size: 873 Bytes

Contents

require "ezid-client"

module Ddr
  module Jobs
    module PermanentId

      class Job
        def self.inherited(subclass)
          subclass.instance_variable_set("@queue", :permanent_id)
        end
      end

      class MakeUnavailable < Job
        def self.call(*args)
          event = ActiveSupport::Notifications::Event.new(*args)
          id = event.payload[:permanent_id]
          reason = case event.name.split(".").first
                   when "destroy"
                     "deleted"
                   when "deaccession"
                     "deaccessioned"
                   end
          Resque.enqueue(self, id, reason) if id.present?
        end

        def self.perform(id, reason = nil)
          identifier = Ezid::Identifier.find(id)
          identifier.unavailable!(reason)
          identifier.save
        end
      end

    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ddr-models-2.5.3 lib/ddr/jobs/permanent_id.rb
ddr-models-2.5.2 lib/ddr/jobs/permanent_id.rb
ddr-models-2.5.1 lib/ddr/jobs/permanent_id.rb
ddr-models-2.5.0 lib/ddr/jobs/permanent_id.rb
ddr-models-2.5.0.rc1 lib/ddr/jobs/permanent_id.rb