feat: add isEmpty method to Metadata for improved validation
MyungSub0519 committed
Nov 12, 2025 at 23:34 UTC
bb7e245501e9ea303e710ebfa0695b4f70acb202
1 file changed
+21
-4
sdk/sdk.go
+21
-4
@@ -2,6 +2,7 @@ package sdk
2
3
import (
4
"context"
5
+ "encoding/json"
6
"errors"
7
"fmt"
8
"io"
@@ -176,6 +177,14 @@ type Metadata struct {
177
Country string `json:"country"`
178
}
179
180
+func (m Metadata) isEmpty() bool {
181
+ return m.Description == "" &&
182
+ len(m.Tags) == 0 &&
183
+ m.Thumbnail == "" &&
184
+ m.Owner == "" &&
185
+ m.Country == ""
186
+}
187
+
188
type MetadataOption func(*Metadata)
189
190
func WithDescription(description string) MetadataOption {
@@ -362,11 +371,19 @@ func (g *RDClient) Listen(cred *cryptoops.Credential, name string, alpns []strin
371
return nil, ErrInvalidName
372
}
373
365
- metadataValue := ""
366
-
374
+ var metadata Metadata
375
for _, option := range options {
368
- metadata := &Metadata{}
369
- option(metadata)
376
+ option(&metadata)
377
+ }
378
+
379
+ metadataValue := ""
380
+ if !metadata.isEmpty() {
381
+ metadataJSON, err := json.Marshal(metadata)
382
+ if err != nil {
383
+ log.Error().Err(err).Msg("[SDK] Failed to marshal metadata")
384
+ return nil, ErrInvalidMetadata
385
+ }
386
+ metadataValue = string(metadataJSON)
387
}
388
389
g.mu.Lock()