(ctx context.Context, managers map[snapshot.SourceInfo]*sourceManager, c func(s *sourceManager, ctx context.Context) serverapi.SourceActionResponse, values url.Values)
| 170 | } |
| 171 | |
| 172 | func forAllSourceManagersMatchingURLFilter(ctx context.Context, managers map[snapshot.SourceInfo]*sourceManager, c func(s *sourceManager, ctx context.Context) serverapi.SourceActionResponse, values url.Values) (any, *apiError) { |
| 173 | resp := &serverapi.MultipleSourceActionResponse{ |
| 174 | Sources: map[string]serverapi.SourceActionResponse{}, |
| 175 | } |
| 176 | |
| 177 | for src, mgr := range managers { |
| 178 | if mgr.isRunningReadOnly() { |
| 179 | continue |
| 180 | } |
| 181 | |
| 182 | if !sourceMatchesURLFilter(src, values) { |
| 183 | continue |
| 184 | } |
| 185 | |
| 186 | resp.Sources[src.String()] = c(mgr, ctx) |
| 187 | } |
| 188 | |
| 189 | if len(resp.Sources) == 0 { |
| 190 | return nil, notFoundError("no source matching the provided filters") |
| 191 | } |
| 192 | |
| 193 | return resp, nil |
| 194 | } |
| 195 | |
| 196 | func handleUpload(ctx context.Context, rc requestContext) (any, *apiError) { |
| 197 | return forAllSourceManagersMatchingURLFilter(ctx, rc.srv.snapshotAllSourceManagers(), (*sourceManager).upload, rc.req.URL.Query()) |
no test coverage detected