From afbc0e65d748eb2475c86e69e454f0ba1a39da4a Mon Sep 17 00:00:00 2001 From: Maycon Santos Date: Wed, 7 Aug 2024 16:46:21 +0200 Subject: [PATCH] refactor duplicated code --- management/server/http/peers_handler.go | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/management/server/http/peers_handler.go b/management/server/http/peers_handler.go index 9db76a73a..f30b65730 100644 --- a/management/server/http/peers_handler.go +++ b/management/server/http/peers_handler.go @@ -64,12 +64,20 @@ func (h *PeersHandler) getPeer(ctx context.Context, account *server.Account, pee groupsInfo := toGroupsInfo(account.Groups, peer.ID) - validPeers, err := h.accountManager.GetValidatedPeers(account) + accessiblePeers, valid, err := h.getAccessibleAndValidStatus(ctx, account, peerID, err, w, dnsDomain, peer) if err != nil { - log.WithContext(ctx).Errorf("failed to list appreoved peers: %v", err) + log.WithContext(ctx).Errorf("failed to list approved peers: %v", err) util.WriteError(ctx, fmt.Errorf("internal error"), w) return } + util.WriteJSONObject(ctx, w, toSinglePeerResponse(peerToReturn, groupsInfo, dnsDomain, accessiblePeers, valid)) +} + +func (h *PeersHandler) getAccessibleAndValidStatus(ctx context.Context, account *server.Account, peerID string, err error, w http.ResponseWriter, dnsDomain string, peer *nbpeer.Peer) ([]api.AccessiblePeer, bool, error) { + validPeers, err := h.accountManager.GetValidatedPeers(account) + if err != nil { + return nil, false, err + } customZone := account.GetPeersCustomZone(ctx, h.accountManager.GetDNSDomain()) policyExpandedPeers := account.GetPolicyExpandedPeers() @@ -77,7 +85,7 @@ func (h *PeersHandler) getPeer(ctx context.Context, account *server.Account, pee accessiblePeers := toAccessiblePeers(netMap, dnsDomain) _, valid := validPeers[peer.ID] - util.WriteJSONObject(ctx, w, toSinglePeerResponse(peerToReturn, groupsInfo, dnsDomain, accessiblePeers, valid)) + return accessiblePeers, valid, nil } func (h *PeersHandler) updatePeer(ctx context.Context, account *server.Account, user *server.User, peerID string, w http.ResponseWriter, r *http.Request) { @@ -111,20 +119,13 @@ func (h *PeersHandler) updatePeer(ctx context.Context, account *server.Account, groupMinimumInfo := toGroupsInfo(account.Groups, peer.ID) - validPeers, err := h.accountManager.GetValidatedPeers(account) + accessiblePeers, valid, err := h.getAccessibleAndValidStatus(ctx, account, peerID, err, w, dnsDomain, peer) if err != nil { - log.WithContext(ctx).Errorf("failed to list appreoved peers: %v", err) + log.WithContext(ctx).Errorf("failed to list approved peers: %v", err) util.WriteError(ctx, fmt.Errorf("internal error"), w) return } - customZone := account.GetPeersCustomZone(ctx, h.accountManager.GetDNSDomain()) - policyExpandedPeers := account.GetPolicyExpandedPeers() - netMap := account.GetPeerNetworkMap(ctx, peerID, customZone, validPeers, nil, policyExpandedPeers) - accessiblePeers := toAccessiblePeers(netMap, dnsDomain) - - _, valid := validPeers[peer.ID] - util.WriteJSONObject(r.Context(), w, toSinglePeerResponse(peer, groupMinimumInfo, dnsDomain, accessiblePeers, valid)) }