package main

import (
	"fmt"
	"net/http"
	"net/url"
	"strings"
)

func isImage(contentType string) bool {
	imageTypes := []string{
		"image/jpeg",
		"image/png",
	}

	for _, imageType := range imageTypes {
		if strings.Contains(contentType, imageType) {
			return true
		}
	}
	return false
}

func isURL(s string) bool {
	// 检查字符串是否为空
	if len(s) == 0 {
		return false
	}

	// 使用url.Parse解析URL
	u, err := url.Parse(s)
	if err != nil {
		return false
	}

	// 检查URL的Scheme是否为空（即是否有协议，如http, https等）
	if u.Scheme == "" {
		return false
	}

	// 检查URL的Host是否为空（即是否有主机名）
	if u.Host == "" {
		return false
	}

	// 如果需要，可以进一步验证Scheme是否为允许的协议（如http, https）
	// 例如：
	// allowedSchemes := map[string]bool{"http": true, "https": true}
	// if !allowedSchemes[u.Scheme] {
	//     return false
	// }

	return true
}

// checkURL checks if the URL is accessible and if the content is an image.
func checkURL(url string) (bool, error) {
	resp, err := http.Get(url)
	if err != nil {
		return false, err
	}
	defer resp.Body.Close()

	if resp.StatusCode != http.StatusOK {
		return false, fmt.Errorf("failed to fetch URL, status code: %d", resp.StatusCode)
	}

	contentType := resp.Header.Get("Content-Type")
	if contentType == "" {
		return false, nil
	}

	return isImage(contentType), nil
}

func isLocalPath(s string) bool {
	return strings.HasPrefix(s, "/") || (len(s) >= 2 && s[1] == ':')
}
