@@ -146,7 +146,7 @@ func (c *Client) Enroll(ctx context.Context, logger logrus.FieldLogger, code str
146146 return nil , nil , nil , nil , err
147147 }
148148
149- enrollURL , err := url . JoinPath (c .dnServer , message .EnrollEndpoint )
149+ enrollURL , err := urlPath (c .dnServer , message .EnrollEndpoint )
150150 if err != nil {
151151 return nil , nil , nil , nil , err
152152 }
@@ -480,7 +480,7 @@ func (c *Client) streamingPostDNClient(ctx context.Context, reqType string, valu
480480 }
481481 pbb := bytes .NewBuffer (postBody )
482482
483- endpointV1URL , err := url . JoinPath (c .dnServer , message .EndpointV1 )
483+ endpointV1URL , err := urlPath (c .dnServer , message .EndpointV1 )
484484 if err != nil {
485485 return nil , err
486486 }
@@ -535,7 +535,7 @@ func (c *Client) postDNClient(ctx context.Context, reqType string, value []byte,
535535 return nil , err
536536 }
537537
538- endpointV1URL , err := url . JoinPath (c .dnServer , message .EndpointV1 )
538+ endpointV1URL , err := urlPath (c .dnServer , message .EndpointV1 )
539539 if err != nil {
540540 return nil , err
541541 }
@@ -571,7 +571,7 @@ func (c *Client) postDNClient(ctx context.Context, reqType string, value []byte,
571571}
572572
573573func callAPI [T any ](ctx context.Context , c * Client , method string , endpoint string , payload map [string ]any ) (* T , error ) {
574- dest , err := url . JoinPath (c .dnServer , endpoint )
574+ dest , err := urlPath (c .dnServer , endpoint )
575575 if err != nil {
576576 return nil , err
577577 }
@@ -701,3 +701,18 @@ func (c *Client) EndpointAuthPoll(ctx context.Context, pollCode string) (*messag
701701 pollURL := fmt .Sprintf ("%s?pollToken=%s" , message .EndpointAuthPoll , url .QueryEscape (pollCode ))
702702 return callAPI [message.EndpointAuthPollData ](ctx , c , "GET" , pollURL , nil )
703703}
704+
705+ func urlPath (base , path string ) (string , error ) {
706+ baseURL , err := url .Parse (base )
707+ if err != nil {
708+ return "" , fmt .Errorf ("invalid base: %s" , err )
709+ }
710+
711+ pathURL , err := url .Parse (path )
712+ if err != nil {
713+ return "" , fmt .Errorf ("invalid path: %s" , err )
714+ }
715+
716+ finalURL := baseURL .ResolveReference (pathURL )
717+ return finalURL .String (), nil
718+ }
0 commit comments