Module: SilverSpoon::Entitlements

Included in:
SilverSpoon
Defined in:
lib/silver_spoon/entitlements.rb

Instance Method Summary collapse

Instance Method Details

#add_entitlement(id, entitlement_key, entitlement_value, scope = SilverSpoon.default_scope) ⇒ Object

Add an entitlement for a given id.

Parameters:

  • id (String)

    Identifier.

  • entitlement_key (String)

    Entitlement key.

  • entitlement_value (String)

    Entitlement value.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.



9
10
11
# File 'lib/silver_spoon/entitlements.rb', line 9

def add_entitlement(id, entitlement_key, entitlement_value, scope = SilverSpoon.default_scope)
  add_entitlements(id, [entitlement_key], [entitlement_value], scope)
end

#add_entitlements(id, entitlement_keys, entitlement_values, scope = SilverSpoon.default_scope) ⇒ Object

Add multiple entitlements for a given id.

Parameters:

  • id (String)

    Identifier.

  • entitlement_keys (Array of String)

    Entitlement keys.

  • entitlement_values (Array of String)

    Entilement values.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.



19
20
21
# File 'lib/silver_spoon/entitlements.rb', line 19

def add_entitlements(id, entitlement_keys, entitlement_values, scope = SilverSpoon.default_scope)
  SilverSpoon.redis.hmset(silver_spoon_key(id, SilverSpoon.namespace, scope), *entitlement_keys.zip(entitlement_values).flatten!)
end

#has_entitlement?(id, entitlement_key, scope = SilverSpoon.default_scope) ⇒ Boolean

Check to see if a given id has a given entitlement.

Parameters:

  • id (String)

    Identifier.

  • entitlement_key (String)

    Entitlement key.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.

Returns:

  • (Boolean)

    true if the id has the requested entitlement, false otherwise.



74
75
76
# File 'lib/silver_spoon/entitlements.rb', line 74

def has_entitlement?(id, entitlement_key, scope = SilverSpoon.default_scope)
  SilverSpoon.redis.hexists(silver_spoon_key(id, SilverSpoon.namespace, scope), entitlement_key)
end

#has_entitlements?(id, entitlement_keys, scope = SilverSpoon.default_scope) ⇒ Boolean

Check to see if a given id has a given set of entitlements.

Parameters:

  • id (String)

    Identifier.

  • entitlement_keys (Array of String)

    Entitlement keys.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.

Returns:

  • (Boolean)

    Array where true if the id has the requested entitlement, false otherwise for each entitlement.



85
86
87
88
89
90
91
# File 'lib/silver_spoon/entitlements.rb', line 85

def has_entitlements?(id, entitlement_keys, scope = SilverSpoon.default_scope)
  SilverSpoon.redis.multi do |transaction|
    entitlement_keys.each do |entitlement_key|
      transaction.hexists(silver_spoon_key(id, SilverSpoon.namespace, scope), entitlement_key)
    end
  end
end

#remove_entitlement(id, entitlement_key, scope = SilverSpoon.default_scope) ⇒ Object

Remove an entitlement for a given id.

Parameters:

  • id (String)

    Identifier.

  • entitlement_key (String)

    Entitlement key.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.



28
29
30
# File 'lib/silver_spoon/entitlements.rb', line 28

def remove_entitlement(id, entitlement_key, scope = SilverSpoon.default_scope)
  remove_entitlements(id, [entitlement_key], scope)
end

#remove_entitlements(id, entitlement_keys, scope = SilverSpoon.default_scope) ⇒ Object

Remove multiple entitlements for a given id.

Parameters:

  • id (String)

    Identifier.

  • entitlement_keys (Array of String)

    Entitlement keys.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.



37
38
39
40
41
42
43
# File 'lib/silver_spoon/entitlements.rb', line 37

def remove_entitlements(id, entitlement_keys, scope = SilverSpoon.default_scope)
  SilverSpoon.redis.multi do |transaction|
    entitlement_keys.each do |entitlement_key|
      transaction.hdel(silver_spoon_key(id, SilverSpoon.namespace, scope), entitlement_key)
    end
  end
end

#retrieve_entitlement(id, entitlement_key, scope = SilverSpoon.default_scope) ⇒ Object

Retrieve an entitlement for a given id.

Parameters:

  • id (String)

    Identifier.

  • entitlement_key (String)

    Entitlement key.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.

Returns:

  • Hash of entitlement key to entitlement value.



52
53
54
# File 'lib/silver_spoon/entitlements.rb', line 52

def retrieve_entitlement(id, entitlement_key, scope = SilverSpoon.default_scope)
  retrieve_entitlements(id, [entitlement_key], scope)
end

#retrieve_entitlements(id, entitlement_keys, scope = SilverSpoon.default_scope) ⇒ Object

Retrieve a set of entitlements for a given id.

Parameters:

  • id (String)

    Identifier.

  • entitlement_keys (Array of String)

    Entitlement keys.

  • scope (String, SilverSpoon.default_scope) (defaults to: SilverSpoon.default_scope)

    Scope.

Returns:

  • Hash of entitlement keys to entitlement values.



63
64
65
# File 'lib/silver_spoon/entitlements.rb', line 63

def retrieve_entitlements(id, entitlement_keys, scope = SilverSpoon.default_scope)
  Hash[*entitlement_keys.zip(SilverSpoon.redis.hmget(silver_spoon_key(id, SilverSpoon.namespace, scope), *entitlement_keys)).flatten!]
end