Skip to content

Commit 39bbdde

Browse files
authored
Use KeyCredential and SAS Credential types from azcore (Azure#21567)
* Use KeyCredential and SAS Credential types from azcore This replaces the `key string` parameter in client constructors. * update with azcore v1.8.0
1 parent 35ad235 commit 39bbdde

File tree

11 files changed

+46
-66
lines changed

11 files changed

+46
-66
lines changed

sdk/messaging/azeventgrid/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
### Breaking Changes
88

9+
- Client constructors that take a `key string` parameter for a credential now require an `*azcore.KeyCredential` or `*azcore.SASCredential`.
10+
911
### Bugs Fixed
1012

1113
### Other Changes

sdk/messaging/azeventgrid/client_custom.go

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,16 @@ type ClientOptions struct {
2323
}
2424

2525
// NewClientWithSharedKeyCredential creates a [Client] using a shared key.
26-
func NewClientWithSharedKeyCredential(endpoint string, key string, options *ClientOptions) (*Client, error) {
26+
func NewClientWithSharedKeyCredential(endpoint string, keyCred *azcore.KeyCredential, options *ClientOptions) (*Client, error) {
2727
if options == nil {
2828
options = &ClientOptions{}
2929
}
3030

31-
// TODO: I believe we're supposed to allow for dynamically updating the key at any time as well.
3231
azc, err := azcore.NewClient(internal.ModuleName+".Client", internal.ModuleVersion, runtime.PipelineOptions{
3332
PerRetry: []policy.Policy{
34-
&skpolicy{Key: key},
33+
runtime.NewKeyCredentialPolicy(keyCred, "Authorization", &runtime.KeyCredentialPolicyOptions{
34+
Prefix: "SharedAccessKey ",
35+
}),
3536
},
3637
}, &options.ClientOptions)
3738

@@ -64,13 +65,3 @@ func (client *Client) PublishCloudEvents(ctx context.Context, topicName string,
6465

6566
return client.internalPublishCloudEvents(ctx, topicName, events, options)
6667
}
67-
68-
// TODO: remove in favor of a common policy instead?
69-
type skpolicy struct {
70-
Key string
71-
}
72-
73-
func (p *skpolicy) Do(req *policy.Request) (*http.Response, error) {
74-
req.Raw().Header.Add("Authorization", "SharedAccessKey "+p.Key)
75-
return req.Next()
76-
}

sdk/messaging/azeventgrid/example_publish_and_receive_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"fmt"
1111
"os"
1212

13+
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1314
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
1415
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
1516
"github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventgrid"
@@ -25,7 +26,7 @@ func Example_publishAndReceiveCloudEvents() {
2526
return
2627
}
2728

28-
client, err := azeventgrid.NewClientWithSharedKeyCredential(endpoint, key, nil)
29+
client, err := azeventgrid.NewClientWithSharedKeyCredential(endpoint, azcore.NewKeyCredential(key), nil)
2930

3031
if err != nil {
3132
panic(err)

sdk/messaging/azeventgrid/example_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"log"
1010
"os"
1111

12+
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1213
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
1314
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
1415
"github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventgrid"
@@ -22,7 +23,7 @@ func ExampleNewClientWithSharedKeyCredential() {
2223
return
2324
}
2425

25-
client, err := azeventgrid.NewClientWithSharedKeyCredential(endpoint, sharedKey, nil)
26+
client, err := azeventgrid.NewClientWithSharedKeyCredential(endpoint, azcore.NewKeyCredential(sharedKey), nil)
2627

2728
if err != nil {
2829
// TODO: Update the following line with your application specific error handling logic
@@ -131,7 +132,7 @@ func getEventGridClient() *azeventgrid.Client {
131132
return nil
132133
}
133134

134-
client, err := azeventgrid.NewClientWithSharedKeyCredential(endpoint, sharedKey, nil)
135+
client, err := azeventgrid.NewClientWithSharedKeyCredential(endpoint, azcore.NewKeyCredential(sharedKey), nil)
135136

136137
if err != nil {
137138
// TODO: Update the following line with your application specific error handling logic

sdk/messaging/azeventgrid/go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventgrid
33
go 1.18
44

55
require (
6-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0-beta.2
6+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0
77
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1
88
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0
99
github.com/joho/godotenv v1.5.1
@@ -19,10 +19,10 @@ require (
1919
github.com/kylelemons/godebug v1.1.0 // indirect
2020
github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect
2121
github.com/pmezard/go-difflib v1.0.0 // indirect
22-
golang.org/x/crypto v0.12.0 // indirect
23-
golang.org/x/net v0.14.0 // indirect
24-
golang.org/x/sys v0.11.0 // indirect
25-
golang.org/x/text v0.12.0 // indirect
22+
golang.org/x/crypto v0.13.0 // indirect
23+
golang.org/x/net v0.15.0 // indirect
24+
golang.org/x/sys v0.12.0 // indirect
25+
golang.org/x/text v0.13.0 // indirect
2626
gopkg.in/yaml.v2 v2.4.0 // indirect
2727
gopkg.in/yaml.v3 v3.0.1 // indirect
2828
)

sdk/messaging/azeventgrid/go.sum

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0-beta.2 h1:klbj076a7qZCoxAMac7nv/6RTLGDgojM6trEFcYQUyI=
2-
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0-beta.2/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q=
1+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0 h1:9kDVnTz3vbfweTqAUmk/a/pH5pWFCHtvRpHYC0G/dcA=
2+
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.8.0/go.mod h1:3Ug6Qzto9anB6mGlEdgYMDF5zHQ+wwhEaYR4s17PHMw=
33
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 h1:LNHhpdK7hzUcx/k1LIcuh5k7k1LGIWLQfCjaneSj7Fc=
44
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1/go.mod h1:uE9zaUfEQT/nbQjVi2IblCG9iaLtZsuYZ8ne+PuQ02M=
55
github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY=
@@ -27,15 +27,15 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
2727
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
2828
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
2929
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
30-
golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk=
31-
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
32-
golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14=
33-
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
30+
golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck=
31+
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
32+
golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8=
33+
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
3434
golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
35-
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
36-
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
37-
golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
38-
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
35+
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
36+
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
37+
golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k=
38+
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
3939
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
4040
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
4141
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=

sdk/messaging/azeventgrid/publisher/client_custom.go

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package publisher
77

88
import (
99
"context"
10-
"net/http"
1110

1211
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1312
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
@@ -45,20 +44,17 @@ func NewClient(endpoint string, tokenCredential azcore.TokenCredential, options
4544
}, nil
4645
}
4746

48-
// NewClientWithSharedKeyCredential creates a [Client] using a shared key.
49-
func NewClientWithSharedKeyCredential(endpoint string, key string, options *ClientOptions) (*Client, error) {
47+
// NewClientWithSharedKeyCredential creates a [Client] using a shared key credential.
48+
func NewClientWithSharedKeyCredential(endpoint string, keyCred *azcore.KeyCredential, options *ClientOptions) (*Client, error) {
5049
const sasKeyHeader = "aeg-sas-key"
5150

5251
if options == nil {
5352
options = &ClientOptions{}
5453
}
5554

56-
// TODO: I believe we're supposed to allow for dynamically updating the key at any time as well.
5755
azc, err := azcore.NewClient(internal.ModuleName+".Client", internal.ModuleVersion, runtime.PipelineOptions{
5856
PerRetry: []policy.Policy{
59-
// TODO: Java has a specific policy for this kind of authentication.
60-
// AzureKeyCredentialPolicy
61-
&skpolicy{HeaderName: sasKeyHeader, Key: key},
57+
runtime.NewKeyCredentialPolicy(keyCred, sasKeyHeader, nil),
6258
},
6359
}, &options.ClientOptions)
6460

@@ -72,20 +68,17 @@ func NewClientWithSharedKeyCredential(endpoint string, key string, options *Clie
7268
}, nil
7369
}
7470

75-
// NewClientWithSharedKeyCredential creates a [Client] using a shared key.
76-
func NewClientWithSAS(endpoint string, sas string, options *ClientOptions) (*Client, error) {
71+
// NewClientWithSAS creates a [Client] using a shared access signature credential.
72+
func NewClientWithSAS(endpoint string, sasCred *azcore.SASCredential, options *ClientOptions) (*Client, error) {
7773
const sasTokenHeader = "aeg-sas-token"
7874

7975
if options == nil {
8076
options = &ClientOptions{}
8177
}
8278

83-
// TODO: I believe we're supposed to allow for dynamically updating the key at any time as well.
8479
azc, err := azcore.NewClient(internal.ModuleName+".PublisherClient", internal.ModuleVersion, runtime.PipelineOptions{
8580
PerRetry: []policy.Policy{
86-
// TODO: Java has a specific policy for this kind of authentication.
87-
// AzureKeyCredentialPolicy
88-
&skpolicy{HeaderName: sasTokenHeader, Key: sas},
81+
runtime.NewSASCredentialPolicy(sasCred, sasTokenHeader, nil),
8982
},
9083
}, &options.ClientOptions)
9184

@@ -99,17 +92,6 @@ func NewClientWithSAS(endpoint string, sas string, options *ClientOptions) (*Cli
9992
}, nil
10093
}
10194

102-
// TODO: remove in favor of a common policy instead?
103-
type skpolicy struct {
104-
Key string
105-
HeaderName string
106-
}
107-
108-
func (p *skpolicy) Do(req *policy.Request) (*http.Response, error) {
109-
req.Raw().Header.Add(p.HeaderName, p.Key)
110-
return req.Next()
111-
}
112-
11395
// PublishCloudEvents - Publishes a batch of events to an Azure Event Grid topic.
11496
// If the operation fails it returns an *azcore.ResponseError type.
11597
//

sdk/messaging/azeventgrid/publisher/client_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"testing"
1717
"time"
1818

19+
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1920
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
2021
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
2122
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
@@ -45,13 +46,13 @@ func TestPublishEvent(t *testing.T) {
4546

4647
t.Run("sas", func(t *testing.T) {
4748
sas := generateSAS(vars.EG.Endpoint, vars.EG.Key)
48-
client, err := publisher.NewClientWithSAS(vars.EG.Endpoint, sas, newClientOptionsForTest(t, vars.EG))
49+
client, err := publisher.NewClientWithSAS(vars.EG.Endpoint, azcore.NewSASCredential(sas), newClientOptionsForTest(t, vars.EG))
4950
require.NoError(t, err)
5051
testPublish(t, client)
5152
})
5253

5354
t.Run("sharedkey", func(t *testing.T) {
54-
client, err := publisher.NewClientWithSharedKeyCredential(vars.EG.Endpoint, vars.EG.Key, newClientOptionsForTest(t, vars.EG))
55+
client, err := publisher.NewClientWithSharedKeyCredential(vars.EG.Endpoint, azcore.NewKeyCredential(vars.EG.Key), newClientOptionsForTest(t, vars.EG))
5556
require.NoError(t, err)
5657
testPublish(t, client)
5758
})
@@ -83,13 +84,13 @@ func TestPublishCloudEvent(t *testing.T) {
8384

8485
t.Run("sas", func(t *testing.T) {
8586
sas := generateSAS(vars.CE.Endpoint, vars.CE.Key)
86-
client, err := publisher.NewClientWithSAS(vars.CE.Endpoint, sas, newClientOptionsForTest(t, vars.CE))
87+
client, err := publisher.NewClientWithSAS(vars.CE.Endpoint, azcore.NewSASCredential(sas), newClientOptionsForTest(t, vars.CE))
8788
require.NoError(t, err)
8889
testPublish(t, client)
8990
})
9091

9192
t.Run("sharedkey", func(t *testing.T) {
92-
client, err := publisher.NewClientWithSharedKeyCredential(vars.CE.Endpoint, vars.CE.Key, newClientOptionsForTest(t, vars.CE))
93+
client, err := publisher.NewClientWithSharedKeyCredential(vars.CE.Endpoint, azcore.NewKeyCredential(vars.EG.Key), newClientOptionsForTest(t, vars.CE))
9394
require.NoError(t, err)
9495
testPublish(t, client)
9596
})

sdk/messaging/azeventgrid/publisher/example_newclient_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"log"
1212
"os"
1313

14+
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1415
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
1516
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
1617
"github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventgrid/publisher"
@@ -57,7 +58,7 @@ func ExampleNewClientWithSAS() {
5758
return
5859
}
5960

60-
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, key, &publisher.ClientOptions{
61+
client, err := publisher.NewClientWithSAS(endpoint, azcore.NewSASCredential(key), &publisher.ClientOptions{
6162
ClientOptions: policy.ClientOptions{
6263
PerCallPolicies: []policy.Policy{
6364
dumpFullPolicy{"EventGridEvent"},
@@ -85,7 +86,7 @@ func ExampleNewClientWithSharedKeyCredential() {
8586
return
8687
}
8788

88-
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, key, nil)
89+
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, azcore.NewKeyCredential(key), nil)
8990

9091
if err != nil {
9192
// TODO: Update the following line with your application specific error handling logic

sdk/messaging/azeventgrid/publisher/example_publish_topic_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"os"
1414
"time"
1515

16+
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
1617
"github.com/Azure/azure-sdk-for-go/sdk/azcore/messaging"
1718
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
1819
"github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventgrid/publisher"
@@ -33,7 +34,7 @@ func ExampleClient_PublishEvents() {
3334
// Other authentication methods:
3435
// - publisher.NewClient(): authenticate using a TokenCredential from azidentity.
3536
// - publisher.NewClientWithSAS(): authenticate using a SAS token.
36-
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, key, nil)
37+
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, azcore.NewKeyCredential(key), nil)
3738

3839
if err != nil {
3940
// TODO: Update the following line with your application specific error handling logic
@@ -76,7 +77,7 @@ func ExampleClient_PublishCloudEvents() {
7677
// Other authentication methods:
7778
// - publisher.NewClient(): authenticate using a TokenCredential from azidentity.
7879
// - publisher.NewClientWithSAS(): authenticate using a SAS token.
79-
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, key, nil)
80+
client, err := publisher.NewClientWithSharedKeyCredential(endpoint, azcore.NewKeyCredential(key), nil)
8081

8182
if err != nil {
8283
// TODO: Update the following line with your application specific error handling logic

0 commit comments

Comments
 (0)