58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
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
 | 
						||
}
 |