-
Notifications
You must be signed in to change notification settings - Fork 0
/
policy.go
45 lines (39 loc) · 1.21 KB
/
policy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*Package postfix is a data handler package for the Postfix mail server */
package postfix
/*Policy is the main data type for storing attributes of the postfix policy protocol */
type Policy struct {
attributes map[string]string
}
/*NewPolicy constructor for initializing the Policy structure with a map inside */
func NewPolicy() *Policy {
var p Policy
p.attributes = make(map[string]string)
return &p
}
/*SetAttribute is a setter function for the Policy structure */
func (pp Policy) SetAttribute(key, value string) {
pp.attributes[key] = value
}
/*Attribute is a getter function for the Policy structure */
func (pp Policy) Attribute(key string) string {
return pp.attributes[key]
}
/*Keys lists the names of the attributes currently stored in a Policy structure */
func (pp Policy) Keys() []string {
keys := make([]string, 0, len(pp.attributes))
for k := range pp.attributes {
keys = append(keys, k)
}
return keys
}
/*String is a simple stringer, it only displays attributes that have an actual value */
func (pp Policy) String() string {
res := "Postfix policy attributes:\n"
for _, k := range pp.Keys() {
a := pp.Attribute(k)
if a != "" {
res += k + ": " + pp.Attribute(k) + "\n"
}
}
return res
}