LoadMetadataFromFile reads and decompresses ~/.cloudcent/metadata.json.gz.
()
| 207 | |
| 208 | // LoadMetadataFromFile reads and decompresses ~/.cloudcent/metadata.json.gz. |
| 209 | func LoadMetadataFromFile() (*MetadataResponse, error) { |
| 210 | p, err := config.MetadataGzPath() |
| 211 | if err != nil { |
| 212 | return nil, err |
| 213 | } |
| 214 | f, err := os.Open(p) |
| 215 | if os.IsNotExist(err) { |
| 216 | return nil, fmt.Errorf("metadata file not found — run 'cloudcent metadata refresh' first") |
| 217 | } |
| 218 | if err != nil { |
| 219 | return nil, err |
| 220 | } |
| 221 | defer f.Close() |
| 222 | |
| 223 | gr, err := gzip.NewReader(f) |
| 224 | if err != nil { |
| 225 | return nil, fmt.Errorf("failed to open gzip metadata: %w", err) |
| 226 | } |
| 227 | defer gr.Close() |
| 228 | |
| 229 | var meta MetadataResponse |
| 230 | if err := json.NewDecoder(gr).Decode(&meta); err != nil { |
| 231 | return nil, fmt.Errorf("failed to parse metadata JSON: %w", err) |
| 232 | } |
| 233 | return &meta, nil |
| 234 | } |
| 235 | |
| 236 | // GenerateToken calls POST /api/auth/generate-token. |
| 237 | func (c *Client) GenerateToken() (*GenerateTokenResponse, error) { |
no test coverage detected