From 7ba0682c62e994a7c919c7b822d50319242d7e92 Mon Sep 17 00:00:00 2001 From: Alex Luong Date: Sun, 5 May 2024 12:26:42 +0700 Subject: [PATCH] feat: Add support for Bondsmith and Fiserv source verification --- internal/provider/sourceverification/model.go | 2 ++ .../provider/sourceverification/schema.go | 2 ++ internal/provider/sourceverification/sdk.go | 4 +++ .../verification_bondsmith.go | 32 +++++++++++++++++++ .../sourceverification/verification_fiserv.go | 32 +++++++++++++++++++ 5 files changed, 72 insertions(+) create mode 100644 internal/provider/sourceverification/verification_bondsmith.go create mode 100644 internal/provider/sourceverification/verification_fiserv.go diff --git a/internal/provider/sourceverification/model.go b/internal/provider/sourceverification/model.go index f712291..ac01b37 100644 --- a/internal/provider/sourceverification/model.go +++ b/internal/provider/sourceverification/model.go @@ -17,12 +17,14 @@ type sourceVerification struct { Adyen *adyenSourceVerification `tfsdk:"adyen"` Akeneo *akeneoSourceVerification `tfsdk:"akeneo"` AWSSNS *awsSNSSourceVerification `tfsdk:"aws_sns"` + Bondsmith *bondsmithSourceVerification `tfsdk:"bondsmith"` Cloudsignal *cloudsignalSourceVerification `tfsdk:"cloudsignal"` Commercelayer *commercelayerSourceVerification `tfsdk:"commercelayer"` Courier *courierSourceVerification `tfsdk:"courier"` Ebay *ebaySourceVerification `tfsdk:"ebay"` Enode *enodeSourceVerification `tfsdk:"enode"` Favro *favroSourceVerification `tfsdk:"favro"` + Fiserv *fiservSourceVerification `tfsdk:"fiserv"` FrontApp *frontAppSourceVerification `tfsdk:"frontapp"` GitHub *githubSourceVerification `tfsdk:"github"` GitLab *gitlabSourceVerification `tfsdk:"gitlab"` diff --git a/internal/provider/sourceverification/schema.go b/internal/provider/sourceverification/schema.go index 5992ca5..62baa2a 100644 --- a/internal/provider/sourceverification/schema.go +++ b/internal/provider/sourceverification/schema.go @@ -34,12 +34,14 @@ func (r *sourceVerificationResource) Schema(_ context.Context, _ resource.Schema "adyen": adyenConfigSchema(), "akeneo": akeneoConfigSchema(), "aws_sns": awsSNSConfigSchema(), + "bondsmith": bondsmithConfigSchema(), "cloudsignal": cloudsignalConfigSchema(), "commercelayer": commercelayerConfigSchema(), "courier": courierConfigSchema(), "ebay": ebayConfigSchema(), "enode": enodeConfigSchema(), "favro": favroConfigSchema(), + "fiserv": fiservConfigSchema(), "frontapp": frontAppConfigSchema(), "github": githubConfigSchema(), "gitlab": gitlabConfigSchema(), diff --git a/internal/provider/sourceverification/sdk.go b/internal/provider/sourceverification/sdk.go index 96f8035..ad48151 100644 --- a/internal/provider/sourceverification/sdk.go +++ b/internal/provider/sourceverification/sdk.go @@ -31,6 +31,8 @@ func (m *sourceVerificationResourceModel) ToUpdatePayload() *hookdeck.SourceUpda verification = m.Verification.Akeneo.toPayload() } else if m.Verification.AWSSNS != nil { verification = m.Verification.AWSSNS.toPayload() + } else if m.Verification.Bondsmith != nil { + verification = m.Verification.Bondsmith.toPayload() } else if m.Verification.Cloudsignal != nil { verification = m.Verification.Cloudsignal.toPayload() } else if m.Verification.Commercelayer != nil { @@ -43,6 +45,8 @@ func (m *sourceVerificationResourceModel) ToUpdatePayload() *hookdeck.SourceUpda verification = m.Verification.Enode.toPayload() } else if m.Verification.Favro != nil { verification = m.Verification.Favro.toPayload() + } else if m.Verification.Fiserv != nil { + verification = m.Verification.Fiserv.toPayload() } else if m.Verification.FrontApp != nil { verification = m.Verification.FrontApp.toPayload() } else if m.Verification.GitHub != nil { diff --git a/internal/provider/sourceverification/verification_bondsmith.go b/internal/provider/sourceverification/verification_bondsmith.go new file mode 100644 index 0000000..52a688d --- /dev/null +++ b/internal/provider/sourceverification/verification_bondsmith.go @@ -0,0 +1,32 @@ +package sourceverification + +import ( + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + hookdeck "github.com/hookdeck/hookdeck-go-sdk" +) + +func bondsmithConfigSchema() schema.SingleNestedAttribute { + return schema.SingleNestedAttribute{ + Optional: true, + Attributes: map[string]schema.Attribute{ + "webhook_secret_key": schema.StringAttribute{ + Required: true, + Sensitive: true, + }, + }, + } +} + +type bondsmithSourceVerification struct { + WebhookSecretKey types.String `tfsdk:"webhook_secret_key"` +} + +func (m *bondsmithSourceVerification) toPayload() *hookdeck.VerificationConfig { + return hookdeck.NewVerificationConfigFromVerificationBondsmith(&hookdeck.VerificationBondsmith{ + Type: hookdeck.VerificationBondsmithTypeBondsmith, + Configs: &hookdeck.VerificationBondsmithConfigs{ + WebhookSecretKey: m.WebhookSecretKey.ValueString(), + }, + }) +} diff --git a/internal/provider/sourceverification/verification_fiserv.go b/internal/provider/sourceverification/verification_fiserv.go new file mode 100644 index 0000000..e0d6628 --- /dev/null +++ b/internal/provider/sourceverification/verification_fiserv.go @@ -0,0 +1,32 @@ +package sourceverification + +import ( + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/types" + hookdeck "github.com/hookdeck/hookdeck-go-sdk" +) + +func fiservConfigSchema() schema.SingleNestedAttribute { + return schema.SingleNestedAttribute{ + Optional: true, + Attributes: map[string]schema.Attribute{ + "webhook_secret_key": schema.StringAttribute{ + Required: true, + Sensitive: true, + }, + }, + } +} + +type fiservSourceVerification struct { + WebhookSecretKey types.String `tfsdk:"webhook_secret_key"` +} + +func (m *fiservSourceVerification) toPayload() *hookdeck.VerificationConfig { + return hookdeck.NewVerificationConfigFromVerificationFiserv(&hookdeck.VerificationFiserv{ + Type: hookdeck.VerificationFiservTypeFiserv, + Configs: &hookdeck.VerificationFiservConfigs{ + WebhookSecretKey: m.WebhookSecretKey.ValueString(), + }, + }) +}