shared

package
v0.1.26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 7, 2026 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DesktopSessionTokenHeader 是桌面 shell 注入到 HTTP API 请求里的本地会话凭据。
	DesktopSessionTokenHeader = "X-Nexus-Desktop-Token"

	// DesktopSessionTokenCookie 是 WKWebView WebSocket 握手使用的本地会话凭据。
	DesktopSessionTokenCookie = "nexus_desktop_token"

	// DesktopWebSocketSubprotocol 是桌面 WebSocket 握手协商出的非敏感子协议。
	DesktopWebSocketSubprotocol = "nexus.desktop.v1"

	// DesktopSessionTokenProtocolPrefix 是 WebSocket 握手使用的子协议 token 前缀。
	DesktopSessionTokenProtocolPrefix = "nexus.desktop.token."
)
View Source
const WebSocketWriteTimeout = 10 * time.Second

WebSocketWriteTimeout 是写出 WebSocket 事件的超时窗口。

Variables

This section is empty.

Functions

func AccessLogMiddleware

func AccessLogMiddleware() func(http.Handler) http.Handler

AccessLogMiddleware 记录请求访问日志。

func AuthMiddleware

func AuthMiddleware(api *API, auth *authsvc.Service) func(http.Handler) http.Handler

AuthMiddleware 把认证状态写入请求上下文。

func BoolValue

func BoolValue(value any) (bool, bool)

BoolValue 读取 map[string]any 中的布尔值。

func ClientIP

func ClientIP(request *http.Request) string

ClientIP 返回请求来源 IP。

func DecodeJSONBody

func DecodeJSONBody(body io.Reader, target any, allowEmpty bool) error

DecodeJSONBody 解析并校验单个 JSON 顶层值。

func DesktopSessionTokenMiddleware added in v0.1.3

func DesktopSessionTokenMiddleware(api *API, token string, apiPrefix string) func(http.Handler) http.Handler

DesktopSessionTokenMiddleware 校验桌面 App 本地 API 面的一次性会话 token。

func GatewayClientErrorDetail

func GatewayClientErrorDetail(status int, detail string) string

GatewayClientErrorDetail 规范化客户端可见错误文案。

func Int64Value

func Int64Value(value any) int64

Int64Value 读取 map[string]any 中的整数值。

func IsClientMessageError

func IsClientMessageError(err error) bool

IsClientMessageError 判断错误是否适合直接返回给客户端。

func IsClientMessageText

func IsClientMessageText(message string) bool

IsClientMessageText 判断文本是否属于客户端可理解错误。

func IsStructuredSessionKeyError

func IsStructuredSessionKeyError(err error) bool

IsStructuredSessionKeyError 判断错误是否为结构化 session key 错误。

func PublicAuthRoute

func PublicAuthRoute(request *http.Request) bool

PublicAuthRoute 判断是否为无需认证的公开路由。

func RecoverMiddleware

func RecoverMiddleware(api *API) func(http.Handler) http.Handler

RecoverMiddleware 捕获 panic 并返回标准错误。

func RequestContextMiddleware

func RequestContextMiddleware(baseLogger *slog.Logger) func(http.Handler) http.Handler

RequestContextMiddleware 注入 request_id 和 request logger。

func StringValue

func StringValue(value any) string

StringValue 读取 map[string]any 中的字符串值。

Types

type API

type API struct {
	// contains filtered or unexported fields
}

API 提供处理器共享的 HTTP 响应与上下文辅助能力。

func NewAPI

func NewAPI(logger *slog.Logger) *API

NewAPI 创建共享 API 辅助器。

func (*API) BaseLogger

func (a *API) BaseLogger() *slog.Logger

BaseLogger 返回处理器基础 logger。

func (*API) BindJSON

func (a *API) BindJSON(writer http.ResponseWriter, request *http.Request, target any) bool

BindJSON 解析 JSON 请求体。

func (*API) BindJSONAllowEmpty

func (a *API) BindJSONAllowEmpty(writer http.ResponseWriter, request *http.Request, target any) bool

BindJSONAllowEmpty 解析可为空的 JSON 请求体。

func (*API) HandleNotImplemented

func (a *API) HandleNotImplemented(group string) http.HandlerFunc

HandleNotImplemented 返回占位路由 handler。

func (*API) WriteFailure

func (a *API) WriteFailure(writer http.ResponseWriter, status int, detail string)

WriteFailure 写入失败响应。

func (*API) WriteJSON

func (a *API) WriteJSON(writer http.ResponseWriter, status int, payload map[string]any)

WriteJSON 写入原始 JSON 响应。

func (*API) WriteSuccess

func (a *API) WriteSuccess(writer http.ResponseWriter, data any)

WriteSuccess 写入成功响应。

type WebSocketSender

type WebSocketSender struct {
	// contains filtered or unexported fields
}

WebSocketSender 封装单个 WebSocket 连接的并发安全发送能力。

func NewWebSocketSender

func NewWebSocketSender(conn *websocket.Conn) *WebSocketSender

NewWebSocketSender 创建发送器。

func (*WebSocketSender) IsClosed

func (s *WebSocketSender) IsClosed() bool

IsClosed 返回连接是否已关闭。

func (*WebSocketSender) Key

func (s *WebSocketSender) Key() string

Key 返回发送器唯一键。

func (*WebSocketSender) MarkClosed

func (s *WebSocketSender) MarkClosed()

MarkClosed 标记发送器已关闭。

func (*WebSocketSender) SendEvent

func (s *WebSocketSender) SendEvent(ctx context.Context, event protocol.EventMessage) error

SendEvent 发送协议事件。

func (*WebSocketSender) SendJSON added in v0.1.15

func (s *WebSocketSender) SendJSON(ctx context.Context, payload any) error

SendJSON 发送原始 JSON payload,供 Codex app-server 兼容协议复用同一连接。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL