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
# 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



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

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



34
35
36
37
38
39
40
# File 'lib/loco/hub.rb', line 34

def del_member member
  serialized = serialize member
  return nil unless raw_members.include? serialized
  raw_members.delete serialized
  save
  serialized
end

#destroyObject



42
43
44
45
# File 'lib/loco/hub.rb', line 42

def destroy
  WsConnectionStorage.current.del @name
  true
end

#include?(resource) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#membersObject



56
57
58
59
60
61
# File 'lib/loco/hub.rb', line 56

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

#nameObject



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

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

#saveObject



47
48
49
50
# File 'lib/loco/hub.rb', line 47

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