package pkg import ( "ai_scheduler/internal/entitys" "encoding/json" "errors" "fmt" "net/url" "strings" ) func JsonStringIgonErr(data interface{}) string { return string(JsonByteIgonErr(data)) } func JsonByteIgonErr(data interface{}) []byte { dataByte, _ := json.Marshal(data) return dataByte } // IsChannelClosed 检查给定的 channel 是否已经关闭 // 参数 ch: 要检查的 channel,类型为 chan entitys.ResponseData // 返回值: bool 类型,true 表示 channel 已关闭,false 表示未关闭 func IsChannelClosed(ch chan entitys.ResponseData) bool { select { case _, ok := <-ch: // 尝试从 channel 中读取数据 return !ok // 如果 ok=false,说明 channel 已关闭 default: // 如果 channel 暂时无数据可读(但不一定关闭) return false // channel 未关闭(但可能有数据未读取) } } // ValidateImageURL 验证图片 URL 是否有效 func ValidateImageURL(rawURL string) error { // 1. 基础格式验证 parsed, err := url.Parse(rawURL) if err != nil { return fmt.Errorf("invalid URL format: %v", err) } // 2. 检查协议是否为 http/https if parsed.Scheme != "http" && parsed.Scheme != "https" { return errors.New("URL must use http or https protocol") } // 3. 检查是否有空的主机名 if parsed.Host == "" { return errors.New("URL missing host") } // 4. 检查路径是否为空(可选) if strings.TrimSpace(parsed.Path) == "" { return errors.New("URL path is empty") } return nil }