(apiID, apiKey, serverURL string)
| 93 | } |
| 94 | |
| 95 | func configureCreds(apiID, apiKey, serverURL string) error { |
| 96 | logger.Info("Setting up credentials...") |
| 97 | |
| 98 | // Validate credentials not empty |
| 99 | if strings.TrimSpace(apiID) == "" || strings.TrimSpace(apiKey) == "" { |
| 100 | return fmt.Errorf("API ID and API Key must be set") |
| 101 | } |
| 102 | |
| 103 | // Validate server URL format |
| 104 | if _, err := url.Parse(serverURL); err != nil { |
| 105 | return fmt.Errorf("invalid server URL format: %w", err) |
| 106 | } |
| 107 | |
| 108 | if !strings.HasPrefix(serverURL, "http://") && !strings.HasPrefix(serverURL, "https://") { |
| 109 | return fmt.Errorf("invalid server URL format. Must start with http:// or https://") |
| 110 | } |
| 111 | |
| 112 | // Set server URL in config |
| 113 | cfg := cfgManager.GetConfig() |
| 114 | cfg.PatchmonServer = serverURL |
| 115 | |
| 116 | // Save config |
| 117 | if err := cfgManager.SaveConfig(); err != nil { |
| 118 | return fmt.Errorf("failed to save config: %w", err) |
| 119 | } |
| 120 | |
| 121 | // Save credentials |
| 122 | if err := cfgManager.SaveCredentials(apiID, apiKey); err != nil { |
| 123 | return fmt.Errorf("failed to save credentials: %w", err) |
| 124 | } |
| 125 | |
| 126 | logger.Info("Configuration saved successfully") |
| 127 | logger.WithField("path", cfgManager.GetConfigFile()).Info("Config saved") |
| 128 | logger.WithField("path", cfg.CredentialsFile).Info("Credentials saved") |
| 129 | |
| 130 | // Test credentials |
| 131 | logger.Info("Testing connection...") |
| 132 | _, err := pingServer() |
| 133 | if err != nil { |
| 134 | logger.WithError(err).Error("Connection test failed") |
| 135 | return err |
| 136 | } |
| 137 | |
| 138 | logger.Info("✅ Connectivity test successful") |
| 139 | logger.Info("✅ API credentials are valid") |
| 140 | |
| 141 | return nil |
| 142 | } |
no test coverage detected