Class: S3Browser::Worker

Inherits:
Object
  • Object
show all
Includes:
Shoryuken::Worker
Defined in:
lib/s3browser/worker.rb

Defined Under Namespace

Classes: Store

Instance Method Summary collapse

Constructor Details

#initializeWorker

Returns a new instance of Worker.



17
18
19
# File 'lib/s3browser/worker.rb', line 17

def initialize
  Shoryuken.logger.level = ::Logger::DEBUG if ENV['RACK_ENV'] != 'production'
end

Instance Method Details

#add(record) ⇒ Object



38
39
40
41
42
43
44
45
46
# File 'lib/s3browser/worker.rb', line 38

def add(record)
  bucket = record['s3']['bucket']['name']
  key    = record['s3']['object']['key']

  info = s3.head_object({ bucket: bucket, key: key })
  info = info.to_h.merge(record['s3']['object'].inject({}){|memo,(k,v)| memo[k.downcase.to_sym] = v; memo})

  store.add bucket, info
end

#perform(sqs_msg, body) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/s3browser/worker.rb', line 21

def perform(sqs_msg, body)
  Shoryuken.logger.debug body

  if body['Records']
    body['Records'].each do |record|
      case record['eventName']
      when 'ObjectRemoved:Delete'
        remove record
      when 'ObjectCreated:Put'
        add record
      end
    end
  else
    raise unless body['Event'] == 's3:TestEvent'
  end
end

#remove(record) ⇒ Object



48
49
50
51
52
53
# File 'lib/s3browser/worker.rb', line 48

def remove(record)
  bucket = record['s3']['bucket']['name']
  key    = record['s3']['object']['key']

  store.remove bucket, key
end