Files
terraform-provider-binarylane/internal/binarylane/client.go
T
Oscar Hermoso 6c3520bbda ⭕ Retry if Servers, SSH Keys, or Load Balancer creation returns 500 response (#29)
* ⭕ retry on failed create of server, load balancer, and SSH key

* 🧹 sweepers for test resources

* 🧹 sweepers, but now they're working
2024-10-13 08:48:12 +08:00

50 lines
1.3 KiB
Go

package binarylane
import (
"context"
"errors"
"fmt"
"net/http"
"net/http/httputil"
"github.com/deepmap/oapi-codegen/pkg/securityprovider"
"github.com/hashicorp/terraform-plugin-log/tflog"
)
func NewClientWithAuth(endpoint string, token string) (*ClientWithResponses, error) {
if token == "" {
return nil, errors.New("missing or empty value for the Binary Lane API " +
"token. Set the `api_token` value in the configuration or use the " +
"BINARYLANE_API_TOKEN environment variable. If either is already set, " +
"ensure the value is not empty")
}
auth, err := securityprovider.NewSecurityProviderBearerToken(token)
if err != nil {
return nil, fmt.Errorf("failed to create API client with supplied API token: %w", err)
}
if endpoint == "" {
endpoint = "https://api.binarylane.com.au/v2"
}
client, err := NewClientWithResponses(
endpoint,
WithRequestEditorFn(func(ctx context.Context, req *http.Request) error {
dump, err := httputil.DumpRequestOut(req, true)
if err != nil {
return err
}
tflog.Debug(ctx, fmt.Sprintf("%q\n", dump))
return nil
}),
WithRequestEditorFn(auth.Intercept), // include auth AFTER the request logger
)
if err != nil {
return nil, fmt.Errorf("failed to create Binary Lane API client: %w", err)
}
return client, nil
}