Skip to content

Commit 58f801f

Browse files
matzewduglin
authored andcommitted
Adding a simple dataref extension, similar to the java sdk
Signed-off-by: Matthias Wessendorf <[email protected]>
1 parent 2db66e0 commit 58f801f

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

v2/extensions/dataref_extension.go

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
/*
2+
Copyright 2024 The CloudEvents Authors
3+
SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package extensions
7+
8+
import (
9+
"github.com/cloudevents/sdk-go/v2/event"
10+
"net/url"
11+
)
12+
13+
const DataRefExtensionKey = "dataref"
14+
15+
type DataRefExtension struct {
16+
DataRef string `json:"dataref"`
17+
}
18+
19+
func AddDataRefExtension(e *event.Event, dataRef string) error {
20+
if _, err := url.Parse(dataRef); err != nil {
21+
return err
22+
}
23+
e.SetExtension(DataRefExtensionKey, dataRef)
24+
return nil
25+
}
26+
27+
func GetDataRefExtension(e event.Event) (DataRefExtension, bool) {
28+
if dataRefValue, ok := e.Extensions()[DataRefExtensionKey]; ok {
29+
dataRefStr, ok := dataRefValue.(string)
30+
if !ok {
31+
return DataRefExtension{}, false
32+
}
33+
return DataRefExtension{DataRef: dataRefStr}, true
34+
}
35+
return DataRefExtension{}, false
36+
}
+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
Copyright 2024 The CloudEvents Authors
3+
SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package extensions
7+
8+
import (
9+
"testing"
10+
11+
"github.com/cloudevents/sdk-go/v2/event"
12+
)
13+
14+
func TestAddDataRefExtensionValidURL(t *testing.T) {
15+
e := event.New()
16+
expectedDataRef := "https://example.com/data"
17+
18+
err := AddDataRefExtension(&e, expectedDataRef)
19+
if err != nil {
20+
t.Fatalf("Failed to add DataRefExtension with valid URL: %s", err)
21+
}
22+
}
23+
24+
func TestAddDataRefExtensionInvalidURL(t *testing.T) {
25+
e := event.New()
26+
invalidDataRef := "://invalid-url"
27+
28+
err := AddDataRefExtension(&e, invalidDataRef)
29+
if err == nil {
30+
t.Fatal("Expected error when adding DataRefExtension with invalid URL, but got none")
31+
}
32+
}
33+
34+
func TestGetDataRefExtensionNotFound(t *testing.T) {
35+
e := event.New()
36+
37+
_, ok := GetDataRefExtension(e)
38+
if ok {
39+
t.Fatal("Expected not to find DataRefExtension, but did")
40+
}
41+
}

0 commit comments

Comments
 (0)