client/client.go (38 lines of code) (raw):

package client import ( "context" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/cloudquery/plugin-sdk/plugins/source" "github.com/cloudquery/plugin-sdk/schema" "github.com/cloudquery/plugin-sdk/specs" "github.com/guardian/cq-source-galaxies/store" "github.com/rs/zerolog" ) type Client struct { Logger zerolog.Logger Store store.S3 } func (c *Client) ID() string { return "guardian/galaxies" } func New(ctx context.Context, logger zerolog.Logger, s specs.Source, opts source.Options) (schema.ClientMeta, error) { var pluginSpec Spec if err := s.UnmarshalSpec(&pluginSpec); err != nil { return nil, fmt.Errorf("failed to unmarshal plugin spec: %w", err) } // Loads credentials from the default credential chain. // Locally, set the AWS_PROFILE environment variable, or run `make serve`. // See https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/configuring-sdk.html#specifying-credentials. cfg, err := config.LoadDefaultConfig( ctx, config.WithRegion("eu-west-1"), ) if err != nil { return nil, fmt.Errorf("unable to load AWS config, %w", err) } client := s3.NewFromConfig(cfg) store := store.New(client, pluginSpec.GalaxiesBucketName, "galaxies.gutools.co.uk/data") return &Client{ Logger: logger, Store: store, }, nil }