SearchHandler 搜索处理函数
(c *gin.Context)
| 24 | |
| 25 | // SearchHandler 搜索处理函数 |
| 26 | func SearchHandler(c *gin.Context) { |
| 27 | var req model.SearchRequest |
| 28 | var err error |
| 29 | |
| 30 | // 根据请求方法不同处理参数 |
| 31 | if c.Request.Method == http.MethodGet { |
| 32 | // GET方式:从URL参数获取 |
| 33 | // 获取keyword,必填参数 |
| 34 | keyword := c.Query("kw") |
| 35 | |
| 36 | // 处理channels参数,支持逗号分隔 |
| 37 | channelsStr := c.Query("channels") |
| 38 | var channels []string |
| 39 | // 只有当参数非空时才处理 |
| 40 | if channelsStr != "" && channelsStr != " " { |
| 41 | parts := strings.Split(channelsStr, ",") |
| 42 | for _, part := range parts { |
| 43 | trimmed := strings.TrimSpace(part) |
| 44 | if trimmed != "" { |
| 45 | channels = append(channels, trimmed) |
| 46 | } |
| 47 | } |
| 48 | } |
| 49 | |
| 50 | // 处理并发数 |
| 51 | concurrency := 0 |
| 52 | concStr := c.Query("conc") |
| 53 | if concStr != "" && concStr != " " { |
| 54 | concurrency = util.StringToInt(concStr) |
| 55 | } |
| 56 | |
| 57 | // 处理强制刷新 |
| 58 | forceRefresh := false |
| 59 | refreshStr := c.Query("refresh") |
| 60 | if refreshStr != "" && refreshStr != " " && refreshStr == "true" { |
| 61 | forceRefresh = true |
| 62 | } |
| 63 | |
| 64 | // 处理结果类型和来源类型 |
| 65 | resultType := c.Query("res") |
| 66 | if resultType == "" || resultType == " " { |
| 67 | resultType = "merge" // 直接设置为默认值merge |
| 68 | } |
| 69 | |
| 70 | sourceType := c.Query("src") |
| 71 | if sourceType == "" || sourceType == " " { |
| 72 | sourceType = "all" // 直接设置为默认值all |
| 73 | } |
| 74 | |
| 75 | // 处理plugins参数,支持逗号分隔 |
| 76 | var plugins []string |
| 77 | // 检查请求中是否存在plugins参数 |
| 78 | if c.Request.URL.Query().Has("plugins") { |
| 79 | pluginsStr := c.Query("plugins") |
| 80 | // 判断参数是否非空 |
| 81 | if pluginsStr != "" && pluginsStr != " " { |
| 82 | parts := strings.Split(pluginsStr, ",") |
| 83 | for _, part := range parts { |
nothing calls this directly
no test coverage detected