parseTelegraphPath 解析 Telegraph URL 获取页面路径
(pageURL string)
| 48 | |
| 49 | // parseTelegraphPath 解析 Telegraph URL 获取页面路径 |
| 50 | func parseTelegraphPath(pageURL string) (string, error) { |
| 51 | u, err := url.Parse(pageURL) |
| 52 | if err != nil { |
| 53 | return "", fmt.Errorf("invalid telegraph URL: %w", err) |
| 54 | } |
| 55 | |
| 56 | if !strings.HasSuffix(u.Host, "telegra.ph") && !strings.HasSuffix(u.Host, "telegraph.co") { |
| 57 | return "", fmt.Errorf("invalid telegraph URL host: %s", u.Host) |
| 58 | } |
| 59 | |
| 60 | paths := strings.Split(strings.TrimPrefix(u.Path, "/"), "/") |
| 61 | if len(paths) == 0 || paths[0] == "" { |
| 62 | return "", fmt.Errorf("invalid telegraph URL path: %s", u.Path) |
| 63 | } |
| 64 | |
| 65 | pagepath := paths[len(paths)-1] |
| 66 | pagepath, err = url.PathUnescape(pagepath) |
| 67 | if err != nil { |
| 68 | return "", fmt.Errorf("failed to unescape telegraph path: %w", err) |
| 69 | } |
| 70 | |
| 71 | return strings.TrimSpace(pagepath), nil |
| 72 | } |
| 73 | |
| 74 | // isValidTelegraphURL 检查是否是有效的 Telegraph URL |
| 75 | func isValidTelegraphURL(url string) bool { |
no test coverage detected