mirror of
https://github.com/coder/coder.git
synced 2026-06-03 13:08:25 +00:00
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package coderd
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/go-chi/chi/v5"
|
|
|
|
"github.com/coder/coder/v2/coderd/httpapi"
|
|
"github.com/coder/coder/v2/codersdk"
|
|
)
|
|
|
|
// RegisterInMemoryAIBridgeProxydHTTPHandler mounts [aibridgeproxyd.Server]'s HTTP handler
|
|
// onto [API]'s router, so that requests to aibridgedproxy will be relayed from Coder's API server
|
|
// to the in-memory aibridgedproxy.
|
|
func (api *API) RegisterInMemoryAIBridgeProxydHTTPHandler(srv http.Handler) {
|
|
if srv == nil {
|
|
panic("aibridgeproxyd cannot be nil")
|
|
}
|
|
|
|
api.aibridgeproxydHandler = srv
|
|
}
|
|
|
|
// aibridgeproxyHandler handles AI Bridge Proxy endpoints.
|
|
func aibridgeproxyHandler(api *API, middlewares ...func(http.Handler) http.Handler) func(r chi.Router) {
|
|
return func(r chi.Router) {
|
|
r.Use(api.RequireFeatureMW(codersdk.FeatureAIBridge))
|
|
r.Use(middlewares...)
|
|
|
|
r.HandleFunc("/*", func(rw http.ResponseWriter, r *http.Request) {
|
|
// Check if the proxy is enabled.
|
|
if !api.DeploymentValues.AI.BridgeProxyConfig.Enabled.Value() {
|
|
httpapi.Write(r.Context(), rw, http.StatusNotFound, codersdk.Response{
|
|
Message: "AI Bridge Proxy is not enabled.",
|
|
})
|
|
return
|
|
}
|
|
|
|
// Check if the handler is registered.
|
|
if api.aibridgeproxydHandler == nil {
|
|
httpapi.Write(r.Context(), rw, http.StatusNotFound, codersdk.Response{
|
|
Message: "AI Bridge Proxy handler not mounted.",
|
|
})
|
|
return
|
|
}
|
|
|
|
// Strip the prefix and relay to the aibridgeproxyd handler.
|
|
http.StripPrefix("/api/v2/aibridge/proxy", api.aibridgeproxydHandler).ServeHTTP(rw, r)
|
|
})
|
|
}
|
|
}
|