forked from coracle/zooid
A little more refactoring
This commit is contained in:
+14
-22
@@ -84,8 +84,7 @@ func (api *APIHandler) listRelayMembers(w http.ResponseWriter, r *http.Request)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
w.WriteHeader(http.StatusOK)
|
writeJSON(w, http.StatusOK, map[string][]string{"members": members})
|
||||||
json.NewEncoder(w).Encode(map[string][]string{"members": members})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *APIHandler) resolveRelayMembers(id string) ([]string, error) {
|
func (api *APIHandler) resolveRelayMembers(id string) ([]string, error) {
|
||||||
@@ -112,13 +111,7 @@ func (api *APIHandler) resolveRelayMembers(id string) ([]string, error) {
|
|||||||
Events: events,
|
Events: events,
|
||||||
}
|
}
|
||||||
|
|
||||||
memberSet := make(map[string]struct{})
|
return collectMembers(management), nil
|
||||||
|
|
||||||
for _, pubkey := range management.GetMembers() {
|
|
||||||
memberSet[pubkey.Hex()] = struct{}{}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sortedMembers(memberSet), nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *APIHandler) getMembersFromLoadedInstance(id string) ([]string, bool) {
|
func (api *APIHandler) getMembersFromLoadedInstance(id string) ([]string, bool) {
|
||||||
@@ -130,15 +123,14 @@ func (api *APIHandler) getMembersFromLoadedInstance(id string) ([]string, bool)
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
|
||||||
memberSet := make(map[string]struct{})
|
return collectMembers(instance.Management), true
|
||||||
for _, pubkey := range instance.Management.GetMembers() {
|
|
||||||
memberSet[pubkey.Hex()] = struct{}{}
|
|
||||||
}
|
|
||||||
|
|
||||||
return sortedMembers(memberSet), true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func sortedMembers(memberSet map[string]struct{}) []string {
|
func collectMembers(management *ManagementStore) []string {
|
||||||
|
memberSet := make(map[string]struct{})
|
||||||
|
for _, pubkey := range management.GetMembers() {
|
||||||
|
memberSet[pubkey.Hex()] = struct{}{}
|
||||||
|
}
|
||||||
members := Keys(memberSet)
|
members := Keys(memberSet)
|
||||||
sort.Strings(members)
|
sort.Strings(members)
|
||||||
return members
|
return members
|
||||||
@@ -151,9 +143,9 @@ func writeError(w http.ResponseWriter, status int, message string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// writeJSON writes a JSON success response
|
// writeJSON writes a JSON success response
|
||||||
func writeJSON(w http.ResponseWriter, status int, data map[string]string) {
|
func writeJSON(w http.ResponseWriter, status int, v any) {
|
||||||
w.WriteHeader(status)
|
w.WriteHeader(status)
|
||||||
json.NewEncoder(w).Encode(data)
|
json.NewEncoder(w).Encode(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// scheme returns the URL scheme based on the request
|
// scheme returns the URL scheme based on the request
|
||||||
@@ -261,7 +253,7 @@ func (api *APIHandler) patchRelay(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Validate the patched config
|
// Validate the patched config
|
||||||
if err := api.validatePatchedConfig(existing); err != nil {
|
if err := api.validateConfig(existing); err != nil {
|
||||||
writeError(w, http.StatusBadRequest, err.Error())
|
writeError(w, http.StatusBadRequest, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -344,8 +336,8 @@ func deepMerge(base, patch map[string]interface{}) map[string]interface{} {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// validatePatchedConfig validates a config after patching
|
// validateConfig validates a config
|
||||||
func (api *APIHandler) validatePatchedConfig(config *Config) error {
|
func (api *APIHandler) validateConfig(config *Config) error {
|
||||||
if config.Host == "" {
|
if config.Host == "" {
|
||||||
return fmt.Errorf("host is required")
|
return fmt.Errorf("host is required")
|
||||||
}
|
}
|
||||||
@@ -432,7 +424,7 @@ func (api *APIHandler) parseAndValidateConfig(r *http.Request) (*Config, error)
|
|||||||
return nil, fmt.Errorf("invalid json config: %w", err)
|
return nil, fmt.Errorf("invalid json config: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := api.validatePatchedConfig(&config); err != nil {
|
if err := api.validateConfig(&config); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user