package gcp

import (
	"context"

	"cloud.google.com/go/iam"
	iamv1 "google.golang.org/api/iam/v1"
)

// Keep this for backwards compatibility.
type noOpGCPAPI struct{}

func NewNoOpGCPAPI() GCPAPI {
	return &noOpGCPAPI{}
}

func (g *noOpGCPAPI) AddPolicyBinding(projectID string, member, role string) error {
	return nil
}

func (g *noOpGCPAPI) QueryServiceAccount(saName string, projectID string) (*iamv1.ServiceAccount, error) {
	return &iamv1.ServiceAccount{}, nil
}

func (g *noOpGCPAPI) CreateServiceAccountKey(projectID string, saName string) ([]byte, error) {
	return nil, nil
}

func (g *noOpGCPAPI) CreateDnsZone(project, network, zoneName, dnsName string) (string, error) {
	return "zoneId", nil
}

func (g *noOpGCPAPI) AddBucketIAMMember(bucketName string, roleName iam.RoleName, member string) error {
	return nil
}

func (g *noOpGCPAPI) SetDeleteProtection(project string, zone string, nodeName string, protection bool) error {
	return nil
}

func (g *noOpGCPAPI) ListNat(project string, networkName string, region string) ([]string, error) {
	return nil, nil
}

func (g *noOpGCPAPI) CreateVpcPeering(project, peeringName, snName, targetProject, tnName string) error {
	return nil
}

func (g *noOpGCPAPI) AttachIngressPolicy(project string, firewallName string, network string, cidr string) error {
	return nil
}

func (g *noOpGCPAPI) AddBidingToServiceAccount(ctx context.Context, projectID string, sa string, role string, member string) error {
	return nil
}

func (g *noOpGCPAPI) CreateGoogleApiPsc(ctx context.Context, project, region, network, shootName string) error {
	return nil
}

func (g *noOpGCPAPI) DeleteGoogleApiPsc(ctx context.Context, project, shootName string) error {
	return nil
}

func (g *noOpGCPAPI) CreatePublishedServicePsc(ctx context.Context, project, region, network, subnet, target, name, namespace string) error {
	return nil
}

func (g *noOpGCPAPI) DeletePublishedServicePsc(ctx context.Context, project, region, name string) error {
	return nil
}
