33 lines
927 B
Go
33 lines
927 B
Go
package httpapi
|
|
|
|
import (
|
|
"context"
|
|
"knowledge-governance/internal/dingtalkdiscovery"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type dwsMetadataReader interface {
|
|
ReadDWSMetadata(context.Context) (dingtalkdiscovery.CredentialStatus, error)
|
|
}
|
|
|
|
func readDWSCredentials(w http.ResponseWriter, r *http.Request, config Config) {
|
|
if _, ok := requireSessionIdentity(w, r); !ok {
|
|
return
|
|
}
|
|
reader, ok := config.DingtalkSources.(dwsMetadataReader)
|
|
if !ok {
|
|
writeJSON(w, http.StatusNotImplemented, map[string]string{"error": "DWS credential status not configured"})
|
|
return
|
|
}
|
|
ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second)
|
|
defer cancel()
|
|
result, err := reader.ReadDWSMetadata(ctx)
|
|
if err != nil {
|
|
writeJSON(w, http.StatusServiceUnavailable, map[string]string{"error": "无法读取 DWS 凭证状态"})
|
|
return
|
|
}
|
|
w.Header().Set("Cache-Control", "no-store")
|
|
writeJSON(w, http.StatusOK, map[string]any{"data": result})
|
|
}
|