···
13
+
"github.com/bluesky-social/indigo/api/atproto"
"github.com/bluesky-social/indigo/atproto/syntax"
15
+
"github.com/bluesky-social/indigo/xrpc"
"tangled.org/core/api/tangled"
"tangled.org/core/consts"
18
+
"tangled.org/core/idresolver"
···
480
+
func FetchDefaultDefs(r *idresolver.Resolver) ([]LabelDefinition, error) {
481
+
resolved, err := r.ResolveIdent(context.Background(), consts.TangledDid)
483
+
return nil, fmt.Errorf("failed to resolve tangled.sh DID %s: %v", consts.TangledDid, err)
485
+
pdsEndpoint := resolved.PDSEndpoint()
486
+
if pdsEndpoint == "" {
487
+
return nil, fmt.Errorf("no PDS endpoint found for tangled.sh DID %s", consts.TangledDid)
489
+
client := &xrpc.Client{
493
+
var labelDefs []LabelDefinition
495
+
for _, dl := range DefaultLabelDefs() {
496
+
atUri := syntax.ATURI(dl)
497
+
parsedUri, err := syntax.ParseATURI(string(atUri))
499
+
return nil, fmt.Errorf("failed to parse AT-URI %s: %v", atUri, err)
501
+
record, err := atproto.RepoGetRecord(
502
+
context.Background(),
505
+
parsedUri.Collection().String(),
506
+
parsedUri.Authority().String(),
507
+
parsedUri.RecordKey().String(),
510
+
return nil, fmt.Errorf("failed to get record for %s: %v", atUri, err)
514
+
bytes, err := record.Value.MarshalJSON()
516
+
return nil, fmt.Errorf("failed to marshal record value for %s: %v", atUri, err)
519
+
raw := json.RawMessage(bytes)
520
+
labelRecord := tangled.LabelDefinition{}
521
+
err = json.Unmarshal(raw, &labelRecord)
523
+
return nil, fmt.Errorf("invalid record for %s: %w", atUri, err)
526
+
labelDef, err := LabelDefinitionFromRecord(
527
+
parsedUri.Authority().String(),
528
+
parsedUri.RecordKey().String(),
532
+
return nil, fmt.Errorf("failed to create label definition from record %s: %v", atUri, err)
535
+
labelDefs = append(labelDefs, *labelDef)
539
+
return labelDefs, nil