Class: Lambit::Aws::S3::BucketNotificationConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/lambit/aws/s3/bucket_notification_configuration.rb

Constant Summary collapse

OPTIONS =
[
    :bucket,
    :notification_configuration,
    :use_accelerate_endpoint
].each { |option| attr_reader option }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ BucketNotificationConfiguration

Returns a new instance of BucketNotificationConfiguration.



18
19
20
21
22
23
24
25
26
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 18

def initialize(config)
  @client = ::Aws::S3::Client.new

  OPTIONS.each do |option|
    if config.has_key?(option)
      instance_variable_set("@#{option}", config[option])
    end
  end
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



15
16
17
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 15

def client
  @client
end

#optionsObject (readonly)

Returns the value of attribute options.



16
17
18
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 16

def options
  @options
end

Instance Method Details

#addObject



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 46

def add
  config = self.client.get_bucket_notification_configuration(:bucket => options[:bucket])

  notification_configuration_types.each do |type|
    options_hash = options[:notification_configuration][type].to_a.map { |r| [r[:id], r] }.to_h
    config_hash  = config.send(type).to_a.map { |r| [r[:id], r.to_hash] }.to_h
    options[:notification_configuration][type] = config_hash.merge(options_hash).values
  end

  put(options)
end

#notification_configuration_typesObject



38
39
40
41
42
43
44
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 38

def notification_configuration_types
  types = [
    :topic_configurations,
    :lambda_function_configurations,
    :queue_configurations
  ]
end

#put(opts) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 70

def put(opts)
  r = self.client.put_bucket_notification_configuration(opts)
  notification_configuration_types.each do |type|
    puts self.client.get_bucket_notification_configuration(:bucket => opts[:bucket]).send type
  end if Lambit.is_debug?

  r
end

#removeObject



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/lambit/aws/s3/bucket_notification_configuration.rb', line 58

def remove
  config = self.client.get_bucket_notification_configuration(:bucket => options[:bucket])

  notification_configuration_types.each do |type|
    options_hash = options[:notification_configuration][type].to_a.map { |r| [r[:id], r] }.to_h
    config_hash  = config.send(type).to_a.map { |r| [r[:id], r.to_hash] }.to_h
    options[:notification_configuration][type] = config_hash.difference(options_hash).values
  end

  put(options)
end