Class: Rubycord::Overwrite
- Inherits:
-
Object
- Object
- Rubycord::Overwrite
- Defined in:
- lib/rubycord/data/overwrite.rb
Overview
A permissions overwrite, when applied to channels describes additional permissions a member needs to perform certain actions in context.
Constant Summary collapse
- TYPES =
Types of overwrites mapped to their API value.
-
{ role: 0, member: 1 }.freeze
Instance Attribute Summary collapse
-
#allow ⇒ Permissions
Allowed permissions for this overwrite type.
-
#deny ⇒ Permissions
Denied permissions for this overwrite type.
-
#id ⇒ Integer
ID of the thing associated with this overwrite type.
-
#type ⇒ Symbol
Either :role or :member.
Instance Method Summary collapse
-
#==(other) ⇒ Object
Comparison by attributes [:id, :type, :allow, :deny].
-
#initialize(object = nil, type: nil, allow: 0, deny: 0) ⇒ Overwrite
constructor
Creates a new Overwrite object.
Constructor Details
#initialize(object = nil, type: nil, allow: 0, deny: 0) ⇒ Overwrite
Creates a new Overwrite object
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/rubycord/data/overwrite.rb', line 43 def initialize(object = nil, type: nil, allow: 0, deny: 0) if type type = TYPES.value?(type) ? TYPES.key(type) : type.to_sym raise ArgumentError, "Overwrite type must be :member or :role" unless type end @id = object.respond_to?(:id) ? object.id : object @type = case object when User, Member, Recipient, Profile :member when Role :role else type end @allow = allow.is_a?(Permissions) ? allow : Permissions.new(allow) @deny = deny.is_a?(Permissions) ? deny : Permissions.new(deny) end |
Instance Attribute Details
#allow ⇒ Permissions
Returns allowed permissions for this overwrite type.
18 19 20 |
# File 'lib/rubycord/data/overwrite.rb', line 18 def allow @allow end |
#deny ⇒ Permissions
Returns denied permissions for this overwrite type.
21 22 23 |
# File 'lib/rubycord/data/overwrite.rb', line 21 def deny @deny end |
#id ⇒ Integer
Returns ID of the thing associated with this overwrite type.
12 13 14 |
# File 'lib/rubycord/data/overwrite.rb', line 12 def id @id end |
#type ⇒ Symbol
Returns either :role or :member.
15 16 17 |
# File 'lib/rubycord/data/overwrite.rb', line 15 def type @type end |