this repo has no description
13
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 60 lines 1.5 kB view raw
1package labeling 2 3import ( 4 "github.com/bluesky-social/indigo/atproto/atcrypto" 5 "github.com/bluesky-social/indigo/atproto/labeling" 6 "github.com/bluesky-social/indigo/atproto/syntax" 7) 8 9type LabelMaker struct { 10 DID syntax.DID 11 SigningKey atcrypto.PrivateKey 12} 13 14// CID is optional, use empty string if not known. 15func (ls *LabelMaker) CreateLabel(uri string, cid string, val string) (*labeling.Label, error) { 16 return ls.CreateExpiringLabel(uri, cid, val, "") 17} 18 19// CID is optional, use empty string if not known. 20func (ls *LabelMaker) CreateExpiringLabel(uri string, cid string, val string, exp syntax.Datetime) (*labeling.Label, error) { 21 // TODO: validate 'val'? 22 l := labeling.Label{ 23 CreatedAt: syntax.DatetimeNow().String(), 24 SourceDID: ls.DID.String(), 25 URI: uri, 26 Val: val, 27 Version: labeling.ATPROTO_LABEL_VERSION, 28 } 29 if cid != "" { 30 // TODO: copy string? 31 l.CID = &cid 32 } 33 if exp != "" { 34 expStr := exp.String() 35 l.ExpiresAt = &expStr 36 } 37 38 if err := l.Sign(ls.SigningKey); err != nil { 39 return nil, err 40 } 41 return &l, nil 42} 43 44// CID is optional, use empty string if not known. 45func (ls *LabelMaker) NegateLabel(uri string, cid string, val string) (*labeling.Label, error) { 46 yes := true 47 l := labeling.Label{ 48 CreatedAt: syntax.DatetimeNow().String(), 49 SourceDID: ls.DID.String(), 50 URI: uri, 51 Val: val, 52 Negated: &yes, 53 Version: labeling.ATPROTO_LABEL_VERSION, 54 } 55 56 if err := l.Sign(ls.SigningKey); err != nil { 57 return nil, err 58 } 59 return &l, nil 60}