Documentation
¶
Index ¶
- Constants
- Variables
- func DecodeStoredVirtualKey(data []byte) (any, error)
- func ExtractAPIKeys(r *http.Request) []string
- func GenerateKey() (string, error)
- type VirtualKey
- type VirtualKeyListOptions
- type VirtualKeyManager
- func (m *VirtualKeyManager) Create(ctx context.Context, key VirtualKey) error
- func (m *VirtualKeyManager) Delete(ctx context.Context, id string) error
- func (m *VirtualKeyManager) GetByID(ctx context.Context, id string) (VirtualKey, error)
- func (m *VirtualKeyManager) GetByKey(ctx context.Context, key string) (VirtualKey, error)
- func (m *VirtualKeyManager) List(ctx context.Context, opts VirtualKeyListOptions) ([]VirtualKey, error)
- func (m *VirtualKeyManager) Reset()
- func (m *VirtualKeyManager) Update(ctx context.Context, id string, key VirtualKey) error
Constants ¶
View Source
const GeneratedKeyPrefix = "vk-"
Variables ¶
View Source
var ( ErrVirtualKeyNotCarried = errors.New("virtual key is not carried") ErrVirtualKeyNotConfigured = errors.New("virtual key is not configured") )
Functions ¶
func DecodeStoredVirtualKey ¶
DecodeStoredVirtualKey decodes virtual key records.
func ExtractAPIKeys ¶ added in v0.2.0
ExtractAPIKeys returns every candidate virtual-key value carried by the request, in precedence order. A request may legitimately present a key in both the `x-api-key` header and the `Authorization: Bearer` header (Claude Code, for example, always sends both — the gateway virtual key in one and an unrelated upstream key in the other), so callers must try each candidate rather than trusting a single header. Empty and duplicate values are omitted.
func GenerateKey ¶
Types ¶
type VirtualKey ¶
type VirtualKey struct {
ID string `json:"id"`
Key string `json:"key"`
Tag string `json:"tag,omitempty"`
Description string `json:"description,omitempty"`
Disabled bool `json:"disabled"`
AllowedRouteIDs []string `json:"allowed_route_ids,omitempty"`
StatusMessage string `json:"status_message,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
ExpiresAt time.Time `json:"expires_at,omitempty"`
}
VirtualKey represents a gateway consumer identity, not an upstream provider credential.
func (*VirtualKey) NormalizeTimestamps ¶
func (key *VirtualKey) NormalizeTimestamps(now time.Time)
func (VirtualKey) Validate ¶
func (key VirtualKey) Validate() error
func (VirtualKey) ValidateForRoute ¶
func (key VirtualKey) ValidateForRoute(routeID string) error
type VirtualKeyListOptions ¶
type VirtualKeyListOptions struct {
Tag string
}
type VirtualKeyManager ¶
type VirtualKeyManager struct {
// contains filtered or unexported fields
}
func NewVirtualKeyManager ¶
func NewVirtualKeyManager(store configstore.ConfigStore) *VirtualKeyManager
func (*VirtualKeyManager) Create ¶
func (m *VirtualKeyManager) Create(ctx context.Context, key VirtualKey) error
func (*VirtualKeyManager) Delete ¶
func (m *VirtualKeyManager) Delete(ctx context.Context, id string) error
func (*VirtualKeyManager) GetByID ¶
func (m *VirtualKeyManager) GetByID(ctx context.Context, id string) (VirtualKey, error)
func (*VirtualKeyManager) GetByKey ¶
func (m *VirtualKeyManager) GetByKey(ctx context.Context, key string) (VirtualKey, error)
func (*VirtualKeyManager) List ¶
func (m *VirtualKeyManager) List(ctx context.Context, opts VirtualKeyListOptions) ([]VirtualKey, error)
func (*VirtualKeyManager) Reset ¶
func (m *VirtualKeyManager) Reset()
func (*VirtualKeyManager) Update ¶
func (m *VirtualKeyManager) Update(ctx context.Context, id string, key VirtualKey) error
Click to show internal directories.
Click to hide internal directories.