60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
package client
|
|
|
|
import (
|
|
"crypto/x509"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/cirruslabs/orchard/internal/dialer"
|
|
v1 "github.com/cirruslabs/orchard/pkg/resource/v1"
|
|
)
|
|
|
|
type Option func(*Client)
|
|
|
|
func WithAddress(address string) Option {
|
|
return func(client *Client) {
|
|
client.address = address
|
|
}
|
|
}
|
|
|
|
func WithTrustedCertificate(trustedCertificate *x509.Certificate) Option {
|
|
return func(client *Client) {
|
|
client.trustedCertificate = trustedCertificate
|
|
}
|
|
}
|
|
|
|
func WithCredentials(serviceAccountName string, serviceAccountToken string) Option {
|
|
return func(client *Client) {
|
|
client.serviceAccountName = serviceAccountName
|
|
client.serviceAccountToken = serviceAccountToken
|
|
}
|
|
}
|
|
|
|
func WithDialer(dialer dialer.Dialer) Option {
|
|
return func(client *Client) {
|
|
client.dialer = dialer
|
|
}
|
|
}
|
|
|
|
type ListInput struct {
|
|
Filters []v1.Filter
|
|
}
|
|
|
|
type ListOption func(params map[string]string)
|
|
|
|
func WithListFilters(filters ...v1.Filter) ListOption {
|
|
return func(params map[string]string) {
|
|
if len(filters) == 0 {
|
|
return
|
|
}
|
|
|
|
var pairs []string
|
|
|
|
for _, filter := range filters {
|
|
pairs = append(pairs, fmt.Sprintf("%s=%s", filter.Path, filter.Value))
|
|
}
|
|
|
|
params["filter"] = strings.Join(pairs, ",")
|
|
}
|
|
}
|