github.com/stampzilla/stampzilla-go@v2.0.0-rc9+incompatible/nodes/stampzilla-server/store/request.go (about) 1 package store 2 3 type Request struct { 4 Identity string `json:"identity"` 5 Subject RequestSubject `json:"subject"` 6 Connection string `json:"connection"` 7 Type string `json:"type"` 8 Version string `json:"version"` 9 10 Approved chan bool `json:"-"` 11 } 12 13 type RequestSubject struct { 14 CommonName string `json:"common_name,omitempty"` 15 SerialNumber string `json:"serial_number,omitempty"` 16 Country []string `json:"country,omitempty"` 17 Organization []string `json:"organization,omitempty"` 18 OrganizationalUnit []string `json:"organizational_unit,omitempty"` 19 Locality []string `json:"locality,omitempty"` 20 Province []string `json:"province,omitempty"` 21 StreetAddress []string `json:"street_address,omitempty"` 22 PostalCode []string `json:"postal_code,omitempty"` 23 Names []interface{} `json:"names,omitempty"` 24 //ExtraNames []interface{} `json:"extra_names,omitempty"` 25 } 26 27 func (store *Store) GetRequests() []Request { 28 store.RLock() 29 defer store.RUnlock() 30 return store.Requests 31 } 32 33 func (store *Store) AddRequest(r Request) { 34 store.Lock() 35 store.Requests = append(store.Requests, r) 36 store.Unlock() 37 38 store.runCallbacks("requests") 39 } 40 41 func (store *Store) RemoveRequest(c string, approved bool) { 42 store.Lock() 43 for i, r := range store.Requests { 44 if r.Connection == c { 45 if r.Approved != nil { 46 if approved { 47 r.Approved <- true 48 } 49 close(r.Approved) 50 r.Approved = nil 51 } 52 store.Requests = append(store.Requests[:i], store.Requests[i+1:]...) 53 } 54 } 55 store.Unlock() 56 57 store.runCallbacks("requests") 58 } 59 60 func (store *Store) AcceptRequest(c string) { 61 store.RemoveRequest(c, true) 62 }