diff --git a/cmd/baton-cloudflare-zero-trust/config.go b/cmd/baton-cloudflare-zero-trust/config.go index ed08af66..a7a717d3 100644 --- a/cmd/baton-cloudflare-zero-trust/config.go +++ b/cmd/baton-cloudflare-zero-trust/config.go @@ -22,11 +22,18 @@ var ( "email", field.WithDescription("Cloudflare account email"), ) + baseURLField = field.StringField( + "base-url", + field.WithDescription("Override the Cloudflare API URL (for testing)"), + field.WithHidden(true), + field.WithExportTarget(field.ExportTargetCLIOnly), + ) configurationFields = []field.SchemaField{ accountIdField, apiKeyField, apiTokenField, emailField, + baseURLField, } fieldRelationships = []field.SchemaFieldRelationship{ field.FieldsAtLeastOneUsed(apiTokenField, apiKeyField), diff --git a/cmd/baton-cloudflare-zero-trust/main.go b/cmd/baton-cloudflare-zero-trust/main.go index 129f2f4f..140e37f5 100644 --- a/cmd/baton-cloudflare-zero-trust/main.go +++ b/cmd/baton-cloudflare-zero-trust/main.go @@ -49,6 +49,7 @@ func getConnector(ctx context.Context, cfg *viper.Viper) (types.ConnectorServer, cfg.GetString(apiTokenField.FieldName), cfg.GetString(apiKeyField.FieldName), cfg.GetString(emailField.FieldName), + cfg.GetString(baseURLField.FieldName), ) if err != nil { l.Error("error creating connector", zap.Error(err)) diff --git a/pkg/connector/connector.go b/pkg/connector/connector.go index 4e1baa51..cf4c653b 100644 --- a/pkg/connector/connector.go +++ b/pkg/connector/connector.go @@ -44,17 +44,23 @@ func (d *Connector) Validate(ctx context.Context) (annotations.Annotations, erro } // New returns a new instance of the connector. -func New(ctx context.Context, accountId, apiToken, apiKey, email string) (*Connector, error) { +func New(ctx context.Context, accountId, apiToken, apiKey, email, baseURL string) (*Connector, error) { var ( client *cloudflare.API err error ) + + var opts []cloudflare.Option + if baseURL != "" { + opts = append(opts, cloudflare.BaseURL(baseURL)) + } + if apiKey != "" && email != "" { - client, err = cloudflare.New(apiKey, email) + client, err = cloudflare.New(apiKey, email, opts...) } if apiToken != "" { - client, err = cloudflare.NewWithAPIToken(apiToken) + client, err = cloudflare.NewWithAPIToken(apiToken, opts...) } if err != nil {