forked from tangled.org/core
this repo has no description

api: introduce sh.tangled.knot lexicon

knots will announce themselves using this lexicon

Signed-off-by: oppiliappan <me@oppi.li>

Changed files
+218
api
cmd
lexicons
+164
api/tangled/cbor_gen.go
··· 3874 3874 3875 3875 return nil 3876 3876 } 3877 + func (t *Knot) MarshalCBOR(w io.Writer) error { 3878 + if t == nil { 3879 + _, err := w.Write(cbg.CborNull) 3880 + return err 3881 + } 3882 + 3883 + cw := cbg.NewCborWriter(w) 3884 + 3885 + if _, err := cw.Write([]byte{163}); err != nil { 3886 + return err 3887 + } 3888 + 3889 + // t.Host (string) (string) 3890 + if len("host") > 1000000 { 3891 + return xerrors.Errorf("Value in field \"host\" was too long") 3892 + } 3893 + 3894 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("host"))); err != nil { 3895 + return err 3896 + } 3897 + if _, err := cw.WriteString(string("host")); err != nil { 3898 + return err 3899 + } 3900 + 3901 + if len(t.Host) > 1000000 { 3902 + return xerrors.Errorf("Value in field t.Host was too long") 3903 + } 3904 + 3905 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Host))); err != nil { 3906 + return err 3907 + } 3908 + if _, err := cw.WriteString(string(t.Host)); err != nil { 3909 + return err 3910 + } 3911 + 3912 + // t.LexiconTypeID (string) (string) 3913 + if len("$type") > 1000000 { 3914 + return xerrors.Errorf("Value in field \"$type\" was too long") 3915 + } 3916 + 3917 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 3918 + return err 3919 + } 3920 + if _, err := cw.WriteString(string("$type")); err != nil { 3921 + return err 3922 + } 3923 + 3924 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("sh.tangled.knot"))); err != nil { 3925 + return err 3926 + } 3927 + if _, err := cw.WriteString(string("sh.tangled.knot")); err != nil { 3928 + return err 3929 + } 3930 + 3931 + // t.CreatedAt (string) (string) 3932 + if len("createdAt") > 1000000 { 3933 + return xerrors.Errorf("Value in field \"createdAt\" was too long") 3934 + } 3935 + 3936 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil { 3937 + return err 3938 + } 3939 + if _, err := cw.WriteString(string("createdAt")); err != nil { 3940 + return err 3941 + } 3942 + 3943 + if len(t.CreatedAt) > 1000000 { 3944 + return xerrors.Errorf("Value in field t.CreatedAt was too long") 3945 + } 3946 + 3947 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil { 3948 + return err 3949 + } 3950 + if _, err := cw.WriteString(string(t.CreatedAt)); err != nil { 3951 + return err 3952 + } 3953 + return nil 3954 + } 3955 + 3956 + func (t *Knot) UnmarshalCBOR(r io.Reader) (err error) { 3957 + *t = Knot{} 3958 + 3959 + cr := cbg.NewCborReader(r) 3960 + 3961 + maj, extra, err := cr.ReadHeader() 3962 + if err != nil { 3963 + return err 3964 + } 3965 + defer func() { 3966 + if err == io.EOF { 3967 + err = io.ErrUnexpectedEOF 3968 + } 3969 + }() 3970 + 3971 + if maj != cbg.MajMap { 3972 + return fmt.Errorf("cbor input should be of type map") 3973 + } 3974 + 3975 + if extra > cbg.MaxLength { 3976 + return fmt.Errorf("Knot: map struct too large (%d)", extra) 3977 + } 3978 + 3979 + n := extra 3980 + 3981 + nameBuf := make([]byte, 9) 3982 + for i := uint64(0); i < n; i++ { 3983 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 3984 + if err != nil { 3985 + return err 3986 + } 3987 + 3988 + if !ok { 3989 + // Field doesn't exist on this type, so ignore it 3990 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 3991 + return err 3992 + } 3993 + continue 3994 + } 3995 + 3996 + switch string(nameBuf[:nameLen]) { 3997 + // t.Host (string) (string) 3998 + case "host": 3999 + 4000 + { 4001 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 4002 + if err != nil { 4003 + return err 4004 + } 4005 + 4006 + t.Host = string(sval) 4007 + } 4008 + // t.LexiconTypeID (string) (string) 4009 + case "$type": 4010 + 4011 + { 4012 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 4013 + if err != nil { 4014 + return err 4015 + } 4016 + 4017 + t.LexiconTypeID = string(sval) 4018 + } 4019 + // t.CreatedAt (string) (string) 4020 + case "createdAt": 4021 + 4022 + { 4023 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 4024 + if err != nil { 4025 + return err 4026 + } 4027 + 4028 + t.CreatedAt = string(sval) 4029 + } 4030 + 4031 + default: 4032 + // Field doesn't exist on this type, so ignore it 4033 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 4034 + return err 4035 + } 4036 + } 4037 + } 4038 + 4039 + return nil 4040 + }
+24
api/tangled/tangledknot.go
··· 1 + // Code generated by cmd/lexgen (see Makefile's lexgen); DO NOT EDIT. 2 + 3 + package tangled 4 + 5 + // schema: sh.tangled.knot 6 + 7 + import ( 8 + "github.com/bluesky-social/indigo/lex/util" 9 + ) 10 + 11 + const ( 12 + KnotNSID = "sh.tangled.knot" 13 + ) 14 + 15 + func init() { 16 + util.RegisterType("sh.tangled.knot", &Knot{}) 17 + } // 18 + // RECORDTYPE: Knot 19 + type Knot struct { 20 + LexiconTypeID string `json:"$type,const=sh.tangled.knot" cborgen:"$type,const=sh.tangled.knot"` 21 + CreatedAt string `json:"createdAt" cborgen:"createdAt"` 22 + // host: publicly reachable host of the knot 23 + Host string `json:"host" cborgen:"host"` 24 + }
+1
cmd/gen.go
··· 28 28 tangled.RepoPullComment{}, 29 29 tangled.RepoArtifact{}, 30 30 tangled.ActorProfile{}, 31 + tangled.Knot{}, 31 32 ); err != nil { 32 33 panic(err) 33 34 }
+29
lexicons/knot.json
··· 1 + { 2 + "lexicon": 1, 3 + "id": "sh.tangled.knot", 4 + "needsCbor": true, 5 + "needsType": true, 6 + "defs": { 7 + "main": { 8 + "type": "record", 9 + "key": "tid", 10 + "record": { 11 + "type": "object", 12 + "required": [ 13 + "host", 14 + "createdAt" 15 + ], 16 + "properties": { 17 + "host": { 18 + "type": "string", 19 + "description": "publicly reachable host of the knot" 20 + }, 21 + "createdAt": { 22 + "type": "string", 23 + "format": "datetime" 24 + } 25 + } 26 + } 27 + } 28 + } 29 + }