func()

in rolesanywhere/auth.go [276:313]


func (m *signRequestMiddleware) HandleFinalize(ctx context.Context, in middleware.FinalizeInput, next middleware.FinalizeHandler) (
	out middleware.FinalizeOutput, metadata middleware.Metadata, err error,
) {
	_, span := tracing.StartSpan(ctx, "SignRequest")
	defer span.End()

	req, ok := in.Request.(*smithyhttp.Request)
	if !ok {
		return out, metadata, fmt.Errorf("unexpected transport type %T", in.Request)
	}

	rscheme := getResolvedAuthScheme(ctx)
	if rscheme == nil {
		return out, metadata, fmt.Errorf("no resolved auth scheme")
	}

	identity := getIdentity(ctx)
	if identity == nil {
		return out, metadata, fmt.Errorf("no identity")
	}

	signer := rscheme.Scheme.Signer()
	if signer == nil {
		return out, metadata, fmt.Errorf("no signer")
	}

	_, err = timeOperationMetric(ctx, "client.call.signing_duration", func() (any, error) {
		return nil, signer.SignRequest(ctx, req, identity, rscheme.SignerProperties)
	}, func(o *metrics.RecordMetricOptions) {
		o.Properties.Set("auth.scheme_id", rscheme.Scheme.SchemeID())
	})
	if err != nil {
		return out, metadata, fmt.Errorf("sign request: %w", err)
	}

	span.End()
	return next.HandleFinalize(ctx, in)
}