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  }