Skip to content

Commit d68fd58

Browse files
committed
dry the duplicated functions and add comments
1 parent cc7e5ba commit d68fd58

1 file changed

Lines changed: 13 additions & 51 deletions

File tree

pkg/client/client.go

Lines changed: 13 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ type DeviceAccessTokenRequest struct {
265265
oidc.DeviceAccessTokenRequest
266266
}
267267

268+
// CallDeviceAccessTokenEndpointWithAuthFn code moved from the CallDeviceAccessTokenEndpoint function
269+
// but allows for the authFn function to be passed in.
268270
func CallDeviceAccessTokenEndpointWithAuthFn(ctx context.Context, request *DeviceAccessTokenRequest, caller TokenEndpointCaller, authFn any) (*oidc.AccessTokenResponse, error) {
269271
ctx, span := Tracer.Start(ctx, "CallDeviceAccessTokenEndpoint")
270272
defer span.End()
@@ -281,6 +283,14 @@ func CallDeviceAccessTokenEndpointWithAuthFn(ctx context.Context, request *Devic
281283
return resp, nil
282284
}
283285

286+
// CallDeviceAccessTokenEndpoint code moved to CallDeviceAccessTokenEndpointWithAuthFn
287+
// Deprecated: Use CallDeviceAccessTokenEndpointWithAuthFn instead.
288+
func CallDeviceAccessTokenEndpoint(ctx context.Context, request *DeviceAccessTokenRequest, caller TokenEndpointCaller) (*oidc.AccessTokenResponse, error) {
289+
return CallDeviceAccessTokenEndpointWithAuthFn(ctx, request, caller, nil)
290+
}
291+
292+
// PollDeviceAccessTokenEndpointWithAuthFn code moved from the PollDeviceAccessTokenEndpoint function
293+
// but allows for the authFn function to be passed in.
284294
func PollDeviceAccessTokenEndpointWithAuthFn(ctx context.Context, interval time.Duration, request *DeviceAccessTokenRequest, caller TokenEndpointCaller, authFn any) (*oidc.AccessTokenResponse, error) {
285295
ctx, span := Tracer.Start(ctx, "PollDeviceAccessTokenEndpoint")
286296
defer span.End()
@@ -319,56 +329,8 @@ func PollDeviceAccessTokenEndpointWithAuthFn(ctx context.Context, interval time.
319329
}
320330
}
321331

322-
func CallDeviceAccessTokenEndpoint(ctx context.Context, request *DeviceAccessTokenRequest, caller TokenEndpointCaller) (*oidc.AccessTokenResponse, error) {
323-
ctx, span := Tracer.Start(ctx, "CallDeviceAccessTokenEndpoint")
324-
defer span.End()
325-
326-
req, err := httphelper.FormRequest(ctx, caller.TokenEndpoint(), request, Encoder, nil)
327-
if err != nil {
328-
return nil, err
329-
}
330-
331-
resp := new(oidc.AccessTokenResponse)
332-
if err := httphelper.HttpRequest(caller.HttpClient(), req, &resp); err != nil {
333-
return nil, err
334-
}
335-
return resp, nil
336-
}
337-
332+
// PollDeviceAccessTokenEndpoint code moved to PollDeviceAccessTokenEndpointWithAuthFn
333+
// Deprecated: Use PollDeviceAccessTokenEndpointWithAuthFn instead.
338334
func PollDeviceAccessTokenEndpoint(ctx context.Context, interval time.Duration, request *DeviceAccessTokenRequest, caller TokenEndpointCaller) (*oidc.AccessTokenResponse, error) {
339-
ctx, span := Tracer.Start(ctx, "PollDeviceAccessTokenEndpoint")
340-
defer span.End()
341-
342-
for {
343-
timer := time.After(interval)
344-
select {
345-
case <-ctx.Done():
346-
return nil, ctx.Err()
347-
case <-timer:
348-
}
349-
350-
ctx, cancel := context.WithTimeout(ctx, interval)
351-
defer cancel()
352-
353-
resp, err := CallDeviceAccessTokenEndpoint(ctx, request, caller)
354-
if err == nil {
355-
return resp, nil
356-
}
357-
if errors.Is(err, context.DeadlineExceeded) {
358-
interval += 5 * time.Second
359-
}
360-
var target *oidc.Error
361-
if !errors.As(err, &target) {
362-
return nil, err
363-
}
364-
switch target.ErrorType {
365-
case oidc.AuthorizationPending:
366-
continue
367-
case oidc.SlowDown:
368-
interval += 5 * time.Second
369-
continue
370-
default:
371-
return nil, err
372-
}
373-
}
335+
return PollDeviceAccessTokenEndpointWithAuthFn(ctx, interval, request, caller, nil)
374336
}

0 commit comments

Comments
 (0)