Class: Loco::Hub

Inherits:
Object
  • Object
show all
Defined in:
lib/loco/hub.rb

Constant Summary collapse

PREFIX =
'loco:hub:'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, members = []) ⇒ Hub

Returns a new instance of Hub.



9
10
11
12
# File 'lib/loco/hub.rb', line 9

def initialize(name, members = [])
  @name = "#{PREFIX}#{name}"
  @raw_members = members.map { |m| serialize m }
end

Instance Attribute Details

#raw_membersObject (readonly)

Returns the value of attribute raw_members.



7
8
9
# File 'lib/loco/hub.rb', line 7

def raw_members
  @raw_members
end

Class Method Details

.get(name) ⇒ Object



15
16
17
18
19
20
# File 'lib/loco/hub.rb', line 15

def get(name)
  hub = WsConnectionStorage.current.get "#{PREFIX}#{name}"
  return nil if hub.blank?

  new name, JSON.parse(hub)
end

Instance Method Details

#add_member(member) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/loco/hub.rb', line 27

def add_member(member)
  serialized = serialize member
  return raw_members if raw_members.include? serialized

  raw_members << serialized
  save
  raw_members
end

#del_member(member) ⇒ Object



36
37
38
39
40
41
42
43
# File 'lib/loco/hub.rb', line 36

def del_member(member)
  serialized = serialize member
  return nil unless raw_members.include? serialized

  raw_members.delete serialized
  save
  serialized
end

#destroyObject



45
46
47
48
# File 'lib/loco/hub.rb', line 45

def destroy
  WsConnectionStorage.current.del @name
  true
end

#include?(resource) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/loco/hub.rb', line 55

def include?(resource)
  raw_members.include? serialize(resource)
end

#membersObject



59
60
61
62
63
64
# File 'lib/loco/hub.rb', line 59

def members
  raw_members.map do |str|
    klass, id = str.split ':'
    klass.classify.constantize.find_by id: id
  end
end

#nameObject



23
24
25
# File 'lib/loco/hub.rb', line 23

def name
  @name.split(PREFIX).last
end

#saveObject



50
51
52
53
# File 'lib/loco/hub.rb', line 50

def save
  WsConnectionStorage.current.set @name, raw_members.to_json
  self
end