mirror of
https://github.com/larksuite/cli.git
synced 2026-07-08 02:00:19 +08:00
* feat: add transport extension with interceptor pre/post hooks Add extension/transport package following the same Provider pattern as credential and fileio extensions. The Interceptor interface uses a PreRoundTrip/post-closure design that guarantees built-in transport decorators (SecurityHeader, SecurityPolicy, Retry) cannot be skipped, overridden, or tampered with by extensions. The original request context is restored after PreRoundTrip to prevent context tampering. Change-Id: I2e51ff67a0e2d8d32944a0565c2a6781110f281f Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
29 lines
569 B
Go
29 lines
569 B
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package transport
|
|
|
|
import "sync"
|
|
|
|
var (
|
|
mu sync.Mutex
|
|
provider Provider
|
|
)
|
|
|
|
// Register registers a transport Provider.
|
|
// Later registrations override earlier ones.
|
|
// Typically called from init() via blank import.
|
|
func Register(p Provider) {
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
provider = p
|
|
}
|
|
|
|
// GetProvider returns the currently registered Provider.
|
|
// Returns nil if no provider has been registered.
|
|
func GetProvider() Provider {
|
|
mu.Lock()
|
|
defer mu.Unlock()
|
|
return provider
|
|
}
|