Skip to content

Commit feafd9c

Browse files
feat: feat(leaked_credentials_check): Add GET endpoint for leaked_credentials_check/detections
* feat(leaked_credentials_check): Add GET endpoint for leaked_credentials_check/detections
1 parent d365b98 commit feafd9c

File tree

11 files changed

+282
-5
lines changed

11 files changed

+282
-5
lines changed

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 1922
1+
configured_endpoints: 1923
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-5fc91fe703941755eabe8e53f6d53056d31c38bff2f098dfa2389512e52b586f.yml
33
openapi_spec_hash: 7d4707f46e5b07408d6a083bfe164f51
4-
config_hash: d300d915a7b88f436c0498af4048e337
4+
config_hash: 93c66810e920a180099213f0e36aacbd
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
data "cloudflare_leaked_credential_check_rule" "example_leaked_credential_check_rule" {
2+
zone_id = "023e105f4ecef8ad9ca31a8372d0c353"
3+
detection_id = "18a14bafaa8eb1df04ce683ec18c765e"
4+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
$ terraform import cloudflare_leaked_credential_check_rule.example '<zone_id>/<detection_id>'

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/aws/aws-sdk-go-v2/credentials v1.17.34
1111
github.com/aws/aws-sdk-go-v2/service/s3 v1.63.0
1212
github.com/cloudflare/cloudflare-go v0.115.0
13-
github.com/cloudflare/cloudflare-go/v6 v6.4.1-0.20251211200320-23fdbc69d399
13+
github.com/cloudflare/cloudflare-go/v6 v6.4.1-0.20251212171349-2c4f6f5f09e5
1414
github.com/davecgh/go-spew v1.1.1
1515
github.com/hashicorp/go-uuid v1.0.3
1616
github.com/hashicorp/terraform-plugin-docs v0.21.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ
6767
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
6868
github.com/cloudflare/cloudflare-go v0.115.0 h1:84/dxeeXweCc0PN5Cto44iTA8AkG1fyT11yPO5ZB7sM=
6969
github.com/cloudflare/cloudflare-go v0.115.0/go.mod h1:Ds6urDwn/TF2uIU24mu7H91xkKP8gSAHxQ44DSZgVmU=
70-
github.com/cloudflare/cloudflare-go/v6 v6.4.1-0.20251211200320-23fdbc69d399 h1:aTfo/eJsQ07vlURIPDmhOMJIlqWuVGA//fqcAKtP5wk=
71-
github.com/cloudflare/cloudflare-go/v6 v6.4.1-0.20251211200320-23fdbc69d399/go.mod h1:Lj3MUqjvKctXRpdRhLQxZYRrNZHuRs0XYuH8JtQGyoI=
70+
github.com/cloudflare/cloudflare-go/v6 v6.4.1-0.20251212171349-2c4f6f5f09e5 h1:D2uVWjB6EpsZtvepMsA4L57NF+MMP+/29MGhygTYhMk=
71+
github.com/cloudflare/cloudflare-go/v6 v6.4.1-0.20251212171349-2c4f6f5f09e5/go.mod h1:Lj3MUqjvKctXRpdRhLQxZYRrNZHuRs0XYuH8JtQGyoI=
7272
github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s=
7373
github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
7474
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=

internal/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -952,6 +952,7 @@ func (p *CloudflareProvider) DataSources(ctx context.Context) []func() datasourc
952952
workflow.NewWorkflowDataSource,
953953
workflow.NewWorkflowsDataSource,
954954
leaked_credential_check.NewLeakedCredentialCheckDataSource,
955+
leaked_credential_check_rule.NewLeakedCredentialCheckRuleDataSource,
955956
leaked_credential_check_rule.NewLeakedCredentialCheckRulesDataSource,
956957
content_scanning.NewContentScanningDataSource,
957958
content_scanning_expression.NewContentScanningExpressionsDataSource,
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package leaked_credential_check_rule
4+
5+
import (
6+
"context"
7+
"fmt"
8+
"io"
9+
"net/http"
10+
11+
"github.com/cloudflare/cloudflare-go/v6"
12+
"github.com/cloudflare/cloudflare-go/v6/option"
13+
"github.com/cloudflare/terraform-provider-cloudflare/internal/apijson"
14+
"github.com/cloudflare/terraform-provider-cloudflare/internal/logging"
15+
"github.com/hashicorp/terraform-plugin-framework/datasource"
16+
)
17+
18+
type LeakedCredentialCheckRuleDataSource struct {
19+
client *cloudflare.Client
20+
}
21+
22+
var _ datasource.DataSourceWithConfigure = (*LeakedCredentialCheckRuleDataSource)(nil)
23+
24+
func NewLeakedCredentialCheckRuleDataSource() datasource.DataSource {
25+
return &LeakedCredentialCheckRuleDataSource{}
26+
}
27+
28+
func (d *LeakedCredentialCheckRuleDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
29+
resp.TypeName = req.ProviderTypeName + "_leaked_credential_check_rule"
30+
}
31+
32+
func (d *LeakedCredentialCheckRuleDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
33+
if req.ProviderData == nil {
34+
return
35+
}
36+
37+
client, ok := req.ProviderData.(*cloudflare.Client)
38+
39+
if !ok {
40+
resp.Diagnostics.AddError(
41+
"unexpected resource configure type",
42+
fmt.Sprintf("Expected *cloudflare.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData),
43+
)
44+
45+
return
46+
}
47+
48+
d.client = client
49+
}
50+
51+
func (d *LeakedCredentialCheckRuleDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
52+
var data *LeakedCredentialCheckRuleDataSourceModel
53+
54+
resp.Diagnostics.Append(req.Config.Get(ctx, &data)...)
55+
56+
if resp.Diagnostics.HasError() {
57+
return
58+
}
59+
60+
params, diags := data.toReadParams(ctx)
61+
resp.Diagnostics.Append(diags...)
62+
if resp.Diagnostics.HasError() {
63+
return
64+
}
65+
66+
res := new(http.Response)
67+
env := LeakedCredentialCheckRuleResultDataSourceEnvelope{*data}
68+
_, err := d.client.LeakedCredentialChecks.Detections.Get(
69+
ctx,
70+
data.DetectionID.ValueString(),
71+
params,
72+
option.WithResponseBodyInto(&res),
73+
option.WithMiddleware(logging.Middleware(ctx)),
74+
)
75+
if err != nil {
76+
resp.Diagnostics.AddError("failed to make http request", err.Error())
77+
return
78+
}
79+
bytes, _ := io.ReadAll(res.Body)
80+
err = apijson.UnmarshalComputed(bytes, &env)
81+
if err != nil {
82+
resp.Diagnostics.AddError("failed to deserialize http request", err.Error())
83+
return
84+
}
85+
data = &env.Result
86+
data.ID = data.DetectionID
87+
88+
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
89+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package leaked_credential_check_rule
4+
5+
import (
6+
"context"
7+
8+
"github.com/cloudflare/cloudflare-go/v6"
9+
"github.com/cloudflare/cloudflare-go/v6/leaked_credential_checks"
10+
"github.com/hashicorp/terraform-plugin-framework/diag"
11+
"github.com/hashicorp/terraform-plugin-framework/types"
12+
)
13+
14+
type LeakedCredentialCheckRuleResultDataSourceEnvelope struct {
15+
Result LeakedCredentialCheckRuleDataSourceModel `json:"result,computed"`
16+
}
17+
18+
type LeakedCredentialCheckRuleDataSourceModel struct {
19+
ID types.String `tfsdk:"id" path:"detection_id,computed"`
20+
DetectionID types.String `tfsdk:"detection_id" path:"detection_id,required"`
21+
ZoneID types.String `tfsdk:"zone_id" path:"zone_id,required"`
22+
Password types.String `tfsdk:"password" json:"password,computed"`
23+
Username types.String `tfsdk:"username" json:"username,computed"`
24+
}
25+
26+
func (m *LeakedCredentialCheckRuleDataSourceModel) toReadParams(_ context.Context) (params leaked_credential_checks.DetectionGetParams, diags diag.Diagnostics) {
27+
params = leaked_credential_checks.DetectionGetParams{
28+
ZoneID: cloudflare.F(m.ZoneID.ValueString()),
29+
}
30+
31+
return
32+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package leaked_credential_check_rule
4+
5+
import (
6+
"context"
7+
8+
"github.com/hashicorp/terraform-plugin-framework/datasource"
9+
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
10+
)
11+
12+
var _ datasource.DataSourceWithConfigValidators = (*LeakedCredentialCheckRuleDataSource)(nil)
13+
14+
func DataSourceSchema(ctx context.Context) schema.Schema {
15+
return schema.Schema{
16+
Attributes: map[string]schema.Attribute{
17+
"id": schema.StringAttribute{
18+
Description: "Defines the unique ID for this custom detection.",
19+
Computed: true,
20+
},
21+
"detection_id": schema.StringAttribute{
22+
Description: "Defines the unique ID for this custom detection.",
23+
Required: true,
24+
},
25+
"zone_id": schema.StringAttribute{
26+
Description: "Defines an identifier.",
27+
Required: true,
28+
},
29+
"password": schema.StringAttribute{
30+
Description: "Defines ehe ruleset expression to use in matching the password in a request.",
31+
Computed: true,
32+
},
33+
"username": schema.StringAttribute{
34+
Description: "Defines the ruleset expression to use in matching the username in a request.",
35+
Computed: true,
36+
},
37+
},
38+
}
39+
}
40+
41+
func (d *LeakedCredentialCheckRuleDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
42+
resp.Schema = DataSourceSchema(ctx)
43+
}
44+
45+
func (d *LeakedCredentialCheckRuleDataSource) ConfigValidators(_ context.Context) []datasource.ConfigValidator {
46+
return []datasource.ConfigValidator{}
47+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package leaked_credential_check_rule_test
4+
5+
import (
6+
"context"
7+
"testing"
8+
9+
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/leaked_credential_check_rule"
10+
"github.com/cloudflare/terraform-provider-cloudflare/internal/test_helpers"
11+
)
12+
13+
func TestLeakedCredentialCheckRuleDataSourceModelSchemaParity(t *testing.T) {
14+
t.Parallel()
15+
model := (*leaked_credential_check_rule.LeakedCredentialCheckRuleDataSourceModel)(nil)
16+
schema := leaked_credential_check_rule.DataSourceSchema(context.TODO())
17+
errs := test_helpers.ValidateDataSourceModelSchemaIntegrity(model, schema)
18+
errs.Report(t)
19+
}

0 commit comments

Comments
 (0)