(ctx context.Context)
| 77 | } |
| 78 | |
| 79 | func fetch(ctx context.Context) (map[string]modelsdev.Provider, error) { |
| 80 | req, err := http.NewRequestWithContext(ctx, http.MethodGet, modelsdev.ModelsDevAPIURL, http.NoBody) |
| 81 | if err != nil { |
| 82 | return nil, err |
| 83 | } |
| 84 | resp, err := http.DefaultClient.Do(req) |
| 85 | if err != nil { |
| 86 | return nil, fmt.Errorf("fetch %s: %w", modelsdev.ModelsDevAPIURL, err) |
| 87 | } |
| 88 | defer resp.Body.Close() |
| 89 | |
| 90 | if resp.StatusCode != http.StatusOK { |
| 91 | return nil, fmt.Errorf("models.dev returned status %d", resp.StatusCode) |
| 92 | } |
| 93 | |
| 94 | body, err := io.ReadAll(resp.Body) |
| 95 | if err != nil { |
| 96 | return nil, fmt.Errorf("read body: %w", err) |
| 97 | } |
| 98 | |
| 99 | var providers map[string]modelsdev.Provider |
| 100 | if err := json.Unmarshal(body, &providers); err != nil { |
| 101 | return nil, fmt.Errorf("decode catalog: %w", err) |
| 102 | } |
| 103 | return providers, nil |
| 104 | } |
| 105 | |
| 106 | // snapshotDir locates pkg/modelsdev relative to this source file so the |
| 107 | // generator works regardless of the caller's working directory. |
no test coverage detected