Browse Source

Adding Attributes to Groups

group-attributes
Sarah Jamie Lewis 1 year ago
parent
commit
ae84893d78
2 changed files with 22 additions and 0 deletions
  1. +17
    -0
      model/group.go
  2. +5
    -0
      model/group_test.go

+ 17
- 0
model/group.go View File

@@ -26,6 +26,7 @@ type Group struct {
Owner string
IsCompromised bool
InitialMessage []byte
Attributes map[string]string
lock sync.Mutex
NewMessage chan Message `json:"-"`
}
@@ -49,6 +50,7 @@ func NewGroup(server string) (*Group, error) {
}
copy(group.GroupKey[:], groupKey[:])
group.Owner = "self"
group.Attributes = make(map[string]string)
return group, nil
}

@@ -152,3 +154,18 @@ func (g *Group) DecryptMessage(ciphertext []byte) (bool, *protocol.DecryptedGrou
}
return false, nil
}

// SetAttribute allows applications to store arbitrary configuration info at the group level.
func (g *Group) SetAttribute(name string, value string) {
g.lock.Lock()
defer g.lock.Unlock()
g.Attributes[name] = value
}

// GetAttribute returns the value of a value set with SetAttribute. If no such value has been set exists is set to false.
func (g *Group) GetAttribute(name string) (value string, exists bool) {
g.lock.Lock()
defer g.lock.Unlock()
value, exists = g.Attributes[name]
return
}

+ 5
- 0
model/group_test.go View File

@@ -23,5 +23,10 @@ func TestGroup(t *testing.T) {
t.Errorf("group encryption was invalid, or returned wrong message decrypted:%v message:%v", ok, message)
return
}
g.SetAttribute("test", "test_value")
value, exists := g.GetAttribute("test")
if !exists || value != "test_value" {
t.Errorf("Custom Attribute Should have been set, instead %v %v", exists, value)
}
t.Logf("Got message %v", message)
}

Loading…
Cancel
Save