Class: RightAws::Sqs::Grantee

Inherits:
Object
  • Object
show all
Defined in:
lib/sqs/right_sqs.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, email = nil, id = nil, name = nil, perms = []) ⇒ Grantee

Creates new Grantee instance. To create new grantee for queue use:

grantee = Grantee.new(queue, [email protected])
grantee.grant('FULLCONTROL')


323
324
325
326
327
328
329
330
# File 'lib/sqs/right_sqs.rb', line 323

def initialize(queue, email=nil, id=nil, name=nil, perms=[])
  @queue = queue
  @id    = id
  @name  = name
  @perms = perms
  @email = email
  retrieve unless id
end

Instance Attribute Details

#emailObject

Returns the value of attribute email.



315
316
317
# File 'lib/sqs/right_sqs.rb', line 315

def email
  @email
end

#idObject

Returns the value of attribute id.



315
316
317
# File 'lib/sqs/right_sqs.rb', line 315

def id
  @id
end

#nameObject

Returns the value of attribute name.



315
316
317
# File 'lib/sqs/right_sqs.rb', line 315

def name
  @name
end

#permsObject

Returns the value of attribute perms.



315
316
317
# File 'lib/sqs/right_sqs.rb', line 315

def perms
  @perms
end

#queueObject

Returns the value of attribute queue.



315
316
317
# File 'lib/sqs/right_sqs.rb', line 315

def queue
  @queue
end

Instance Method Details

#dropObject

Revokes all permissions for this grantee. Returns true



376
377
378
379
380
381
382
# File 'lib/sqs/right_sqs.rb', line 376

def drop
  @perms.each do |permission|
    @queue.sqs.interface.remove_grant(@queue.url, @email || @id, permission)
  end
  retrieve
  true
end

#grant(permission = nil) ⇒ Object

Adds permissions for grantee. Permission: ‘FULLCONTROL’ | ‘RECEIVEMESSAGE’ | ‘SENDMESSAGE’. The caller must have set the email instance variable.



353
354
355
356
357
# File 'lib/sqs/right_sqs.rb', line 353

def grant(permission=nil)
  raise "You can't grant permission without defining a grantee email address!" unless @email
  @queue.sqs.interface.add_grant(@queue.url, @email, permission)
  retrieve
end

#retrieveObject

Retrieves security information for grantee identified by email. Returns nil if the named user has no privileges on this queue, or true if perms updated successfully.



335
336
337
338
339
340
341
342
343
344
345
346
347
348
# File 'lib/sqs/right_sqs.rb', line 335

def retrieve # :nodoc:
  @id    = nil
  @name  = nil
  @perms = []
  
  hash = @queue.sqs.interface.list_grants(@queue.url, @email)
  return nil if hash.empty?
  
  grantee = hash.shift
  @id     = grantee[0]
  @name   = grantee[1][:name]
  @perms  = grantee[1][:perms]
  true
end

#revoke(permission = 'FULLCONTROL') ⇒ Object

Revokes permissions for grantee. Permission: ‘FULLCONTROL’ | ‘RECEIVEMESSAGE’ | ‘SENDMESSAGE’. Default value is ‘FULLCONTROL’. User must have @email or @id set. Returns true.



364
365
366
367
368
369
370
371
372
# File 'lib/sqs/right_sqs.rb', line 364

def revoke(permission='FULLCONTROL')
  @queue.sqs.interface.remove_grant(@queue.url, @email || @id, permission)
  unless @email   # if email is unknown - just remove permission from local perms list...
    @perms.delete(permission)
  else            # ... else retrieve updated information from Amazon
    retrieve
  end
  true
end