internal/controld: add support for parsing client id from raw UID

This commit is contained in:
Cuong Manh Le
2023-08-09 23:54:44 +07:00
committed by Cuong Manh Le
parent 19bc44a7f3
commit 72d2f4e7e3
3 changed files with 67 additions and 19 deletions
+20 -3
View File
@@ -8,6 +8,7 @@ import (
"fmt"
"net"
"net/http"
"strings"
"time"
"github.com/Control-D-Inc/ctrld"
@@ -53,12 +54,18 @@ func (u UtilityErrorResponse) Error() string {
}
type utilityRequest struct {
UID string `json:"uid"`
UID string `json:"uid"`
ClientID string `json:"client_id,omitempty"`
}
// FetchResolverConfig fetch Control D config for given uid.
func FetchResolverConfig(uid, version string, cdDev bool) (*ResolverConfig, error) {
body, _ := json.Marshal(utilityRequest{UID: uid})
func FetchResolverConfig(rawUID, version string, cdDev bool) (*ResolverConfig, error) {
uid, clientID := ParseRawUID(rawUID)
uReq := utilityRequest{UID: uid}
if clientID != "" {
uReq.ClientID = clientID
}
body, _ := json.Marshal(uReq)
apiUrl := resolverDataURLCom
if cdDev {
apiUrl = resolverDataURLDev
@@ -120,3 +127,13 @@ func FetchResolverConfig(uid, version string, cdDev bool) (*ResolverConfig, erro
}
return &ur.Body.Resolver, nil
}
// ParseRawUID parse the input raw UID, returning real UID and ClientID.
// The raw UID can have 2 forms:
//
// - <uid>
// - <uid>/<client_id>
func ParseRawUID(rawUID string) (string, string) {
uid, clientID, _ := strings.Cut(rawUID, "/")
return uid, clientID
}