From 86ce0e0c66ac7e6b57a8ee43aa151d759b1c01cb Mon Sep 17 00:00:00 2001 From: Stefan Majer Date: Wed, 8 Jun 2022 18:09:11 +0200 Subject: [PATCH] Use strings.Cut to simplify logic --- api_key.go | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/api_key.go b/api_key.go index 41c8385..c1bbce2 100644 --- a/api_key.go +++ b/api_key.go @@ -13,7 +13,6 @@ import ( const ( apiPrefixLength = 7 apiKeyLength = 32 - apiKeyParts = 2 errAPIKeyFailedToParse = Error("Failed to parse ApiKey") ) @@ -115,9 +114,9 @@ func (h *Headscale) ExpireAPIKey(key *APIKey) error { } func (h *Headscale) ValidateAPIKey(keyStr string) (bool, error) { - prefix, hash, err := splitAPIKey(keyStr) - if err != nil { - return false, fmt.Errorf("failed to validate api key: %w", err) + prefix, hash, found := strings.Cut(keyStr, ".") + if !found { + return false, errAPIKeyFailedToParse } key, err := h.GetAPIKey(prefix) @@ -136,15 +135,6 @@ func (h *Headscale) ValidateAPIKey(keyStr string) (bool, error) { return true, nil } -func splitAPIKey(key string) (string, string, error) { - parts := strings.Split(key, ".") - if len(parts) != apiKeyParts { - return "", "", errAPIKeyFailedToParse - } - - return parts[0], parts[1], nil -} - func (key *APIKey) toProto() *v1.ApiKey { protoKey := v1.ApiKey{ Id: key.ID,