Get an ever updating ics link for all the events you RSVP to on the Atmosphere whenslunch.app
0

Configure Feed

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

i still don't understand go lexicon generation

+2259 -6
+2174
api/community/cbor_gen.go
··· 1 + // Code generated by github.com/whyrusleeping/cbor-gen. DO NOT EDIT. 2 + 3 + package community 4 + 5 + import ( 6 + "fmt" 7 + "io" 8 + "math" 9 + "sort" 10 + 11 + atproto "github.com/bluesky-social/indigo/api/atproto" 12 + cid "github.com/ipfs/go-cid" 13 + cbg "github.com/whyrusleeping/cbor-gen" 14 + xerrors "golang.org/x/xerrors" 15 + ) 16 + 17 + var _ = xerrors.Errorf 18 + var _ = cid.Undef 19 + var _ = math.E 20 + var _ = sort.Sort 21 + 22 + func (t *CalendarEvent) MarshalCBOR(w io.Writer) error { 23 + if t == nil { 24 + _, err := w.Write(cbg.CborNull) 25 + return err 26 + } 27 + 28 + cw := cbg.NewCborWriter(w) 29 + fieldCount := 10 30 + 31 + if t.Description == nil { 32 + fieldCount-- 33 + } 34 + 35 + if t.EndsAt == nil { 36 + fieldCount-- 37 + } 38 + 39 + if t.Locations == nil { 40 + fieldCount-- 41 + } 42 + 43 + if t.Mode == nil { 44 + fieldCount-- 45 + } 46 + 47 + if t.StartsAt == nil { 48 + fieldCount-- 49 + } 50 + 51 + if t.Status == nil { 52 + fieldCount-- 53 + } 54 + 55 + if t.Uris == nil { 56 + fieldCount-- 57 + } 58 + 59 + if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { 60 + return err 61 + } 62 + 63 + // t.Mode (string) (string) 64 + if t.Mode != nil { 65 + 66 + if len("mode") > 1000000 { 67 + return xerrors.Errorf("Value in field \"mode\" was too long") 68 + } 69 + 70 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("mode"))); err != nil { 71 + return err 72 + } 73 + if _, err := cw.WriteString(string("mode")); err != nil { 74 + return err 75 + } 76 + 77 + if t.Mode == nil { 78 + if _, err := cw.Write(cbg.CborNull); err != nil { 79 + return err 80 + } 81 + } else { 82 + if len(*t.Mode) > 1000000 { 83 + return xerrors.Errorf("Value in field t.Mode was too long") 84 + } 85 + 86 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Mode))); err != nil { 87 + return err 88 + } 89 + if _, err := cw.WriteString(string(*t.Mode)); err != nil { 90 + return err 91 + } 92 + } 93 + } 94 + 95 + // t.Name (string) (string) 96 + if len("name") > 1000000 { 97 + return xerrors.Errorf("Value in field \"name\" was too long") 98 + } 99 + 100 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { 101 + return err 102 + } 103 + if _, err := cw.WriteString(string("name")); err != nil { 104 + return err 105 + } 106 + 107 + if len(t.Name) > 1000000 { 108 + return xerrors.Errorf("Value in field t.Name was too long") 109 + } 110 + 111 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Name))); err != nil { 112 + return err 113 + } 114 + if _, err := cw.WriteString(string(t.Name)); err != nil { 115 + return err 116 + } 117 + 118 + // t.Uris ([]*community.CalendarEvent_Uri) (slice) 119 + if t.Uris != nil { 120 + 121 + if len("uris") > 1000000 { 122 + return xerrors.Errorf("Value in field \"uris\" was too long") 123 + } 124 + 125 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("uris"))); err != nil { 126 + return err 127 + } 128 + if _, err := cw.WriteString(string("uris")); err != nil { 129 + return err 130 + } 131 + 132 + if len(t.Uris) > 8192 { 133 + return xerrors.Errorf("Slice value in field t.Uris was too long") 134 + } 135 + 136 + if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Uris))); err != nil { 137 + return err 138 + } 139 + for _, v := range t.Uris { 140 + if err := v.MarshalCBOR(cw); err != nil { 141 + return err 142 + } 143 + 144 + } 145 + } 146 + 147 + // t.LexiconTypeID (string) (string) 148 + if len("$type") > 1000000 { 149 + return xerrors.Errorf("Value in field \"$type\" was too long") 150 + } 151 + 152 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 153 + return err 154 + } 155 + if _, err := cw.WriteString(string("$type")); err != nil { 156 + return err 157 + } 158 + 159 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.calendar.event"))); err != nil { 160 + return err 161 + } 162 + if _, err := cw.WriteString(string("community.lexicon.calendar.event")); err != nil { 163 + return err 164 + } 165 + 166 + // t.EndsAt (string) (string) 167 + if t.EndsAt != nil { 168 + 169 + if len("endsAt") > 1000000 { 170 + return xerrors.Errorf("Value in field \"endsAt\" was too long") 171 + } 172 + 173 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("endsAt"))); err != nil { 174 + return err 175 + } 176 + if _, err := cw.WriteString(string("endsAt")); err != nil { 177 + return err 178 + } 179 + 180 + if t.EndsAt == nil { 181 + if _, err := cw.Write(cbg.CborNull); err != nil { 182 + return err 183 + } 184 + } else { 185 + if len(*t.EndsAt) > 1000000 { 186 + return xerrors.Errorf("Value in field t.EndsAt was too long") 187 + } 188 + 189 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.EndsAt))); err != nil { 190 + return err 191 + } 192 + if _, err := cw.WriteString(string(*t.EndsAt)); err != nil { 193 + return err 194 + } 195 + } 196 + } 197 + 198 + // t.Status (string) (string) 199 + if t.Status != nil { 200 + 201 + if len("status") > 1000000 { 202 + return xerrors.Errorf("Value in field \"status\" was too long") 203 + } 204 + 205 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("status"))); err != nil { 206 + return err 207 + } 208 + if _, err := cw.WriteString(string("status")); err != nil { 209 + return err 210 + } 211 + 212 + if t.Status == nil { 213 + if _, err := cw.Write(cbg.CborNull); err != nil { 214 + return err 215 + } 216 + } else { 217 + if len(*t.Status) > 1000000 { 218 + return xerrors.Errorf("Value in field t.Status was too long") 219 + } 220 + 221 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Status))); err != nil { 222 + return err 223 + } 224 + if _, err := cw.WriteString(string(*t.Status)); err != nil { 225 + return err 226 + } 227 + } 228 + } 229 + 230 + // t.StartsAt (string) (string) 231 + if t.StartsAt != nil { 232 + 233 + if len("startsAt") > 1000000 { 234 + return xerrors.Errorf("Value in field \"startsAt\" was too long") 235 + } 236 + 237 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("startsAt"))); err != nil { 238 + return err 239 + } 240 + if _, err := cw.WriteString(string("startsAt")); err != nil { 241 + return err 242 + } 243 + 244 + if t.StartsAt == nil { 245 + if _, err := cw.Write(cbg.CborNull); err != nil { 246 + return err 247 + } 248 + } else { 249 + if len(*t.StartsAt) > 1000000 { 250 + return xerrors.Errorf("Value in field t.StartsAt was too long") 251 + } 252 + 253 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.StartsAt))); err != nil { 254 + return err 255 + } 256 + if _, err := cw.WriteString(string(*t.StartsAt)); err != nil { 257 + return err 258 + } 259 + } 260 + } 261 + 262 + // t.CreatedAt (string) (string) 263 + if len("createdAt") > 1000000 { 264 + return xerrors.Errorf("Value in field \"createdAt\" was too long") 265 + } 266 + 267 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("createdAt"))); err != nil { 268 + return err 269 + } 270 + if _, err := cw.WriteString(string("createdAt")); err != nil { 271 + return err 272 + } 273 + 274 + if len(t.CreatedAt) > 1000000 { 275 + return xerrors.Errorf("Value in field t.CreatedAt was too long") 276 + } 277 + 278 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.CreatedAt))); err != nil { 279 + return err 280 + } 281 + if _, err := cw.WriteString(string(t.CreatedAt)); err != nil { 282 + return err 283 + } 284 + 285 + // t.Locations ([]*community.CalendarEvent_Locations_Elem) (slice) 286 + if t.Locations != nil { 287 + 288 + if len("locations") > 1000000 { 289 + return xerrors.Errorf("Value in field \"locations\" was too long") 290 + } 291 + 292 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("locations"))); err != nil { 293 + return err 294 + } 295 + if _, err := cw.WriteString(string("locations")); err != nil { 296 + return err 297 + } 298 + 299 + if len(t.Locations) > 8192 { 300 + return xerrors.Errorf("Slice value in field t.Locations was too long") 301 + } 302 + 303 + if err := cw.WriteMajorTypeHeader(cbg.MajArray, uint64(len(t.Locations))); err != nil { 304 + return err 305 + } 306 + for _, v := range t.Locations { 307 + if err := v.MarshalCBOR(cw); err != nil { 308 + return err 309 + } 310 + 311 + } 312 + } 313 + 314 + // t.Description (string) (string) 315 + if t.Description != nil { 316 + 317 + if len("description") > 1000000 { 318 + return xerrors.Errorf("Value in field \"description\" was too long") 319 + } 320 + 321 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("description"))); err != nil { 322 + return err 323 + } 324 + if _, err := cw.WriteString(string("description")); err != nil { 325 + return err 326 + } 327 + 328 + if t.Description == nil { 329 + if _, err := cw.Write(cbg.CborNull); err != nil { 330 + return err 331 + } 332 + } else { 333 + if len(*t.Description) > 1000000 { 334 + return xerrors.Errorf("Value in field t.Description was too long") 335 + } 336 + 337 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Description))); err != nil { 338 + return err 339 + } 340 + if _, err := cw.WriteString(string(*t.Description)); err != nil { 341 + return err 342 + } 343 + } 344 + } 345 + return nil 346 + } 347 + 348 + func (t *CalendarEvent) UnmarshalCBOR(r io.Reader) (err error) { 349 + *t = CalendarEvent{} 350 + 351 + cr := cbg.NewCborReader(r) 352 + 353 + maj, extra, err := cr.ReadHeader() 354 + if err != nil { 355 + return err 356 + } 357 + defer func() { 358 + if err == io.EOF { 359 + err = io.ErrUnexpectedEOF 360 + } 361 + }() 362 + 363 + if maj != cbg.MajMap { 364 + return fmt.Errorf("cbor input should be of type map") 365 + } 366 + 367 + if extra > cbg.MaxLength { 368 + return fmt.Errorf("CalendarEvent: map struct too large (%d)", extra) 369 + } 370 + 371 + n := extra 372 + 373 + nameBuf := make([]byte, 11) 374 + for i := uint64(0); i < n; i++ { 375 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 376 + if err != nil { 377 + return err 378 + } 379 + 380 + if !ok { 381 + // Field doesn't exist on this type, so ignore it 382 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 383 + return err 384 + } 385 + continue 386 + } 387 + 388 + switch string(nameBuf[:nameLen]) { 389 + // t.Mode (string) (string) 390 + case "mode": 391 + 392 + { 393 + b, err := cr.ReadByte() 394 + if err != nil { 395 + return err 396 + } 397 + if b != cbg.CborNull[0] { 398 + if err := cr.UnreadByte(); err != nil { 399 + return err 400 + } 401 + 402 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 403 + if err != nil { 404 + return err 405 + } 406 + 407 + t.Mode = (*string)(&sval) 408 + } 409 + } 410 + // t.Name (string) (string) 411 + case "name": 412 + 413 + { 414 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 415 + if err != nil { 416 + return err 417 + } 418 + 419 + t.Name = string(sval) 420 + } 421 + // t.Uris ([]*community.CalendarEvent_Uri) (slice) 422 + case "uris": 423 + 424 + maj, extra, err = cr.ReadHeader() 425 + if err != nil { 426 + return err 427 + } 428 + 429 + if extra > 8192 { 430 + return fmt.Errorf("t.Uris: array too large (%d)", extra) 431 + } 432 + 433 + if maj != cbg.MajArray { 434 + return fmt.Errorf("expected cbor array") 435 + } 436 + 437 + if extra > 0 { 438 + t.Uris = make([]*CalendarEvent_Uri, extra) 439 + } 440 + 441 + for i := 0; i < int(extra); i++ { 442 + { 443 + var maj byte 444 + var extra uint64 445 + var err error 446 + _ = maj 447 + _ = extra 448 + _ = err 449 + 450 + { 451 + 452 + b, err := cr.ReadByte() 453 + if err != nil { 454 + return err 455 + } 456 + if b != cbg.CborNull[0] { 457 + if err := cr.UnreadByte(); err != nil { 458 + return err 459 + } 460 + t.Uris[i] = new(CalendarEvent_Uri) 461 + if err := t.Uris[i].UnmarshalCBOR(cr); err != nil { 462 + return xerrors.Errorf("unmarshaling t.Uris[i] pointer: %w", err) 463 + } 464 + } 465 + 466 + } 467 + 468 + } 469 + } 470 + // t.LexiconTypeID (string) (string) 471 + case "$type": 472 + 473 + { 474 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 475 + if err != nil { 476 + return err 477 + } 478 + 479 + t.LexiconTypeID = string(sval) 480 + } 481 + // t.EndsAt (string) (string) 482 + case "endsAt": 483 + 484 + { 485 + b, err := cr.ReadByte() 486 + if err != nil { 487 + return err 488 + } 489 + if b != cbg.CborNull[0] { 490 + if err := cr.UnreadByte(); err != nil { 491 + return err 492 + } 493 + 494 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 495 + if err != nil { 496 + return err 497 + } 498 + 499 + t.EndsAt = (*string)(&sval) 500 + } 501 + } 502 + // t.Status (string) (string) 503 + case "status": 504 + 505 + { 506 + b, err := cr.ReadByte() 507 + if err != nil { 508 + return err 509 + } 510 + if b != cbg.CborNull[0] { 511 + if err := cr.UnreadByte(); err != nil { 512 + return err 513 + } 514 + 515 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 516 + if err != nil { 517 + return err 518 + } 519 + 520 + t.Status = (*string)(&sval) 521 + } 522 + } 523 + // t.StartsAt (string) (string) 524 + case "startsAt": 525 + 526 + { 527 + b, err := cr.ReadByte() 528 + if err != nil { 529 + return err 530 + } 531 + if b != cbg.CborNull[0] { 532 + if err := cr.UnreadByte(); err != nil { 533 + return err 534 + } 535 + 536 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 537 + if err != nil { 538 + return err 539 + } 540 + 541 + t.StartsAt = (*string)(&sval) 542 + } 543 + } 544 + // t.CreatedAt (string) (string) 545 + case "createdAt": 546 + 547 + { 548 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 549 + if err != nil { 550 + return err 551 + } 552 + 553 + t.CreatedAt = string(sval) 554 + } 555 + // t.Locations ([]*community.CalendarEvent_Locations_Elem) (slice) 556 + case "locations": 557 + 558 + maj, extra, err = cr.ReadHeader() 559 + if err != nil { 560 + return err 561 + } 562 + 563 + if extra > 8192 { 564 + return fmt.Errorf("t.Locations: array too large (%d)", extra) 565 + } 566 + 567 + if maj != cbg.MajArray { 568 + return fmt.Errorf("expected cbor array") 569 + } 570 + 571 + if extra > 0 { 572 + t.Locations = make([]*CalendarEvent_Locations_Elem, extra) 573 + } 574 + 575 + for i := 0; i < int(extra); i++ { 576 + { 577 + var maj byte 578 + var extra uint64 579 + var err error 580 + _ = maj 581 + _ = extra 582 + _ = err 583 + 584 + { 585 + 586 + b, err := cr.ReadByte() 587 + if err != nil { 588 + return err 589 + } 590 + if b != cbg.CborNull[0] { 591 + if err := cr.UnreadByte(); err != nil { 592 + return err 593 + } 594 + t.Locations[i] = new(CalendarEvent_Locations_Elem) 595 + if err := t.Locations[i].UnmarshalCBOR(cr); err != nil { 596 + return xerrors.Errorf("unmarshaling t.Locations[i] pointer: %w", err) 597 + } 598 + } 599 + 600 + } 601 + 602 + } 603 + } 604 + // t.Description (string) (string) 605 + case "description": 606 + 607 + { 608 + b, err := cr.ReadByte() 609 + if err != nil { 610 + return err 611 + } 612 + if b != cbg.CborNull[0] { 613 + if err := cr.UnreadByte(); err != nil { 614 + return err 615 + } 616 + 617 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 618 + if err != nil { 619 + return err 620 + } 621 + 622 + t.Description = (*string)(&sval) 623 + } 624 + } 625 + 626 + default: 627 + // Field doesn't exist on this type, so ignore it 628 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 629 + return err 630 + } 631 + } 632 + } 633 + 634 + return nil 635 + } 636 + func (t *CalendarEvent_Uri) MarshalCBOR(w io.Writer) error { 637 + if t == nil { 638 + _, err := w.Write(cbg.CborNull) 639 + return err 640 + } 641 + 642 + cw := cbg.NewCborWriter(w) 643 + fieldCount := 3 644 + 645 + if t.Name == nil { 646 + fieldCount-- 647 + } 648 + 649 + if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { 650 + return err 651 + } 652 + 653 + // t.Uri (string) (string) 654 + if len("uri") > 1000000 { 655 + return xerrors.Errorf("Value in field \"uri\" was too long") 656 + } 657 + 658 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("uri"))); err != nil { 659 + return err 660 + } 661 + if _, err := cw.WriteString(string("uri")); err != nil { 662 + return err 663 + } 664 + 665 + if len(t.Uri) > 1000000 { 666 + return xerrors.Errorf("Value in field t.Uri was too long") 667 + } 668 + 669 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Uri))); err != nil { 670 + return err 671 + } 672 + if _, err := cw.WriteString(string(t.Uri)); err != nil { 673 + return err 674 + } 675 + 676 + // t.Name (string) (string) 677 + if t.Name != nil { 678 + 679 + if len("name") > 1000000 { 680 + return xerrors.Errorf("Value in field \"name\" was too long") 681 + } 682 + 683 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { 684 + return err 685 + } 686 + if _, err := cw.WriteString(string("name")); err != nil { 687 + return err 688 + } 689 + 690 + if t.Name == nil { 691 + if _, err := cw.Write(cbg.CborNull); err != nil { 692 + return err 693 + } 694 + } else { 695 + if len(*t.Name) > 1000000 { 696 + return xerrors.Errorf("Value in field t.Name was too long") 697 + } 698 + 699 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Name))); err != nil { 700 + return err 701 + } 702 + if _, err := cw.WriteString(string(*t.Name)); err != nil { 703 + return err 704 + } 705 + } 706 + } 707 + 708 + // t.LexiconTypeID (string) (string) 709 + if len("$type") > 1000000 { 710 + return xerrors.Errorf("Value in field \"$type\" was too long") 711 + } 712 + 713 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 714 + return err 715 + } 716 + if _, err := cw.WriteString(string("$type")); err != nil { 717 + return err 718 + } 719 + 720 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.calendar.event#uri"))); err != nil { 721 + return err 722 + } 723 + if _, err := cw.WriteString(string("community.lexicon.calendar.event#uri")); err != nil { 724 + return err 725 + } 726 + return nil 727 + } 728 + 729 + func (t *CalendarEvent_Uri) UnmarshalCBOR(r io.Reader) (err error) { 730 + *t = CalendarEvent_Uri{} 731 + 732 + cr := cbg.NewCborReader(r) 733 + 734 + maj, extra, err := cr.ReadHeader() 735 + if err != nil { 736 + return err 737 + } 738 + defer func() { 739 + if err == io.EOF { 740 + err = io.ErrUnexpectedEOF 741 + } 742 + }() 743 + 744 + if maj != cbg.MajMap { 745 + return fmt.Errorf("cbor input should be of type map") 746 + } 747 + 748 + if extra > cbg.MaxLength { 749 + return fmt.Errorf("CalendarEvent_Uri: map struct too large (%d)", extra) 750 + } 751 + 752 + n := extra 753 + 754 + nameBuf := make([]byte, 5) 755 + for i := uint64(0); i < n; i++ { 756 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 757 + if err != nil { 758 + return err 759 + } 760 + 761 + if !ok { 762 + // Field doesn't exist on this type, so ignore it 763 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 764 + return err 765 + } 766 + continue 767 + } 768 + 769 + switch string(nameBuf[:nameLen]) { 770 + // t.Uri (string) (string) 771 + case "uri": 772 + 773 + { 774 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 775 + if err != nil { 776 + return err 777 + } 778 + 779 + t.Uri = string(sval) 780 + } 781 + // t.Name (string) (string) 782 + case "name": 783 + 784 + { 785 + b, err := cr.ReadByte() 786 + if err != nil { 787 + return err 788 + } 789 + if b != cbg.CborNull[0] { 790 + if err := cr.UnreadByte(); err != nil { 791 + return err 792 + } 793 + 794 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 795 + if err != nil { 796 + return err 797 + } 798 + 799 + t.Name = (*string)(&sval) 800 + } 801 + } 802 + // t.LexiconTypeID (string) (string) 803 + case "$type": 804 + 805 + { 806 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 807 + if err != nil { 808 + return err 809 + } 810 + 811 + t.LexiconTypeID = string(sval) 812 + } 813 + 814 + default: 815 + // Field doesn't exist on this type, so ignore it 816 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 817 + return err 818 + } 819 + } 820 + } 821 + 822 + return nil 823 + } 824 + func (t *CalendarRsvp) MarshalCBOR(w io.Writer) error { 825 + if t == nil { 826 + _, err := w.Write(cbg.CborNull) 827 + return err 828 + } 829 + 830 + cw := cbg.NewCborWriter(w) 831 + 832 + if _, err := cw.Write([]byte{163}); err != nil { 833 + return err 834 + } 835 + 836 + // t.LexiconTypeID (string) (string) 837 + if len("$type") > 1000000 { 838 + return xerrors.Errorf("Value in field \"$type\" was too long") 839 + } 840 + 841 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 842 + return err 843 + } 844 + if _, err := cw.WriteString(string("$type")); err != nil { 845 + return err 846 + } 847 + 848 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.calendar.rsvp"))); err != nil { 849 + return err 850 + } 851 + if _, err := cw.WriteString(string("community.lexicon.calendar.rsvp")); err != nil { 852 + return err 853 + } 854 + 855 + // t.Status (string) (string) 856 + if len("status") > 1000000 { 857 + return xerrors.Errorf("Value in field \"status\" was too long") 858 + } 859 + 860 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("status"))); err != nil { 861 + return err 862 + } 863 + if _, err := cw.WriteString(string("status")); err != nil { 864 + return err 865 + } 866 + 867 + if len(t.Status) > 1000000 { 868 + return xerrors.Errorf("Value in field t.Status was too long") 869 + } 870 + 871 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Status))); err != nil { 872 + return err 873 + } 874 + if _, err := cw.WriteString(string(t.Status)); err != nil { 875 + return err 876 + } 877 + 878 + // t.Subject (atproto.RepoStrongRef) (struct) 879 + if len("subject") > 1000000 { 880 + return xerrors.Errorf("Value in field \"subject\" was too long") 881 + } 882 + 883 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("subject"))); err != nil { 884 + return err 885 + } 886 + if _, err := cw.WriteString(string("subject")); err != nil { 887 + return err 888 + } 889 + 890 + if err := t.Subject.MarshalCBOR(cw); err != nil { 891 + return err 892 + } 893 + return nil 894 + } 895 + 896 + func (t *CalendarRsvp) UnmarshalCBOR(r io.Reader) (err error) { 897 + *t = CalendarRsvp{} 898 + 899 + cr := cbg.NewCborReader(r) 900 + 901 + maj, extra, err := cr.ReadHeader() 902 + if err != nil { 903 + return err 904 + } 905 + defer func() { 906 + if err == io.EOF { 907 + err = io.ErrUnexpectedEOF 908 + } 909 + }() 910 + 911 + if maj != cbg.MajMap { 912 + return fmt.Errorf("cbor input should be of type map") 913 + } 914 + 915 + if extra > cbg.MaxLength { 916 + return fmt.Errorf("CalendarRsvp: map struct too large (%d)", extra) 917 + } 918 + 919 + n := extra 920 + 921 + nameBuf := make([]byte, 7) 922 + for i := uint64(0); i < n; i++ { 923 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 924 + if err != nil { 925 + return err 926 + } 927 + 928 + if !ok { 929 + // Field doesn't exist on this type, so ignore it 930 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 931 + return err 932 + } 933 + continue 934 + } 935 + 936 + switch string(nameBuf[:nameLen]) { 937 + // t.LexiconTypeID (string) (string) 938 + case "$type": 939 + 940 + { 941 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 942 + if err != nil { 943 + return err 944 + } 945 + 946 + t.LexiconTypeID = string(sval) 947 + } 948 + // t.Status (string) (string) 949 + case "status": 950 + 951 + { 952 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 953 + if err != nil { 954 + return err 955 + } 956 + 957 + t.Status = string(sval) 958 + } 959 + // t.Subject (atproto.RepoStrongRef) (struct) 960 + case "subject": 961 + 962 + { 963 + 964 + b, err := cr.ReadByte() 965 + if err != nil { 966 + return err 967 + } 968 + if b != cbg.CborNull[0] { 969 + if err := cr.UnreadByte(); err != nil { 970 + return err 971 + } 972 + t.Subject = new(atproto.RepoStrongRef) 973 + if err := t.Subject.UnmarshalCBOR(cr); err != nil { 974 + return xerrors.Errorf("unmarshaling t.Subject pointer: %w", err) 975 + } 976 + } 977 + 978 + } 979 + 980 + default: 981 + // Field doesn't exist on this type, so ignore it 982 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 983 + return err 984 + } 985 + } 986 + } 987 + 988 + return nil 989 + } 990 + func (t *LocationAddress) MarshalCBOR(w io.Writer) error { 991 + if t == nil { 992 + _, err := w.Write(cbg.CborNull) 993 + return err 994 + } 995 + 996 + cw := cbg.NewCborWriter(w) 997 + fieldCount := 7 998 + 999 + if t.Locality == nil { 1000 + fieldCount-- 1001 + } 1002 + 1003 + if t.Name == nil { 1004 + fieldCount-- 1005 + } 1006 + 1007 + if t.PostalCode == nil { 1008 + fieldCount-- 1009 + } 1010 + 1011 + if t.Region == nil { 1012 + fieldCount-- 1013 + } 1014 + 1015 + if t.Street == nil { 1016 + fieldCount-- 1017 + } 1018 + 1019 + if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { 1020 + return err 1021 + } 1022 + 1023 + // t.Name (string) (string) 1024 + if t.Name != nil { 1025 + 1026 + if len("name") > 1000000 { 1027 + return xerrors.Errorf("Value in field \"name\" was too long") 1028 + } 1029 + 1030 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { 1031 + return err 1032 + } 1033 + if _, err := cw.WriteString(string("name")); err != nil { 1034 + return err 1035 + } 1036 + 1037 + if t.Name == nil { 1038 + if _, err := cw.Write(cbg.CborNull); err != nil { 1039 + return err 1040 + } 1041 + } else { 1042 + if len(*t.Name) > 1000000 { 1043 + return xerrors.Errorf("Value in field t.Name was too long") 1044 + } 1045 + 1046 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Name))); err != nil { 1047 + return err 1048 + } 1049 + if _, err := cw.WriteString(string(*t.Name)); err != nil { 1050 + return err 1051 + } 1052 + } 1053 + } 1054 + 1055 + // t.LexiconTypeID (string) (string) 1056 + if len("$type") > 1000000 { 1057 + return xerrors.Errorf("Value in field \"$type\" was too long") 1058 + } 1059 + 1060 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 1061 + return err 1062 + } 1063 + if _, err := cw.WriteString(string("$type")); err != nil { 1064 + return err 1065 + } 1066 + 1067 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.location.address"))); err != nil { 1068 + return err 1069 + } 1070 + if _, err := cw.WriteString(string("community.lexicon.location.address")); err != nil { 1071 + return err 1072 + } 1073 + 1074 + // t.Region (string) (string) 1075 + if t.Region != nil { 1076 + 1077 + if len("region") > 1000000 { 1078 + return xerrors.Errorf("Value in field \"region\" was too long") 1079 + } 1080 + 1081 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("region"))); err != nil { 1082 + return err 1083 + } 1084 + if _, err := cw.WriteString(string("region")); err != nil { 1085 + return err 1086 + } 1087 + 1088 + if t.Region == nil { 1089 + if _, err := cw.Write(cbg.CborNull); err != nil { 1090 + return err 1091 + } 1092 + } else { 1093 + if len(*t.Region) > 1000000 { 1094 + return xerrors.Errorf("Value in field t.Region was too long") 1095 + } 1096 + 1097 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Region))); err != nil { 1098 + return err 1099 + } 1100 + if _, err := cw.WriteString(string(*t.Region)); err != nil { 1101 + return err 1102 + } 1103 + } 1104 + } 1105 + 1106 + // t.Street (string) (string) 1107 + if t.Street != nil { 1108 + 1109 + if len("street") > 1000000 { 1110 + return xerrors.Errorf("Value in field \"street\" was too long") 1111 + } 1112 + 1113 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("street"))); err != nil { 1114 + return err 1115 + } 1116 + if _, err := cw.WriteString(string("street")); err != nil { 1117 + return err 1118 + } 1119 + 1120 + if t.Street == nil { 1121 + if _, err := cw.Write(cbg.CborNull); err != nil { 1122 + return err 1123 + } 1124 + } else { 1125 + if len(*t.Street) > 1000000 { 1126 + return xerrors.Errorf("Value in field t.Street was too long") 1127 + } 1128 + 1129 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Street))); err != nil { 1130 + return err 1131 + } 1132 + if _, err := cw.WriteString(string(*t.Street)); err != nil { 1133 + return err 1134 + } 1135 + } 1136 + } 1137 + 1138 + // t.Country (string) (string) 1139 + if len("country") > 1000000 { 1140 + return xerrors.Errorf("Value in field \"country\" was too long") 1141 + } 1142 + 1143 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("country"))); err != nil { 1144 + return err 1145 + } 1146 + if _, err := cw.WriteString(string("country")); err != nil { 1147 + return err 1148 + } 1149 + 1150 + if len(t.Country) > 1000000 { 1151 + return xerrors.Errorf("Value in field t.Country was too long") 1152 + } 1153 + 1154 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Country))); err != nil { 1155 + return err 1156 + } 1157 + if _, err := cw.WriteString(string(t.Country)); err != nil { 1158 + return err 1159 + } 1160 + 1161 + // t.Locality (string) (string) 1162 + if t.Locality != nil { 1163 + 1164 + if len("locality") > 1000000 { 1165 + return xerrors.Errorf("Value in field \"locality\" was too long") 1166 + } 1167 + 1168 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("locality"))); err != nil { 1169 + return err 1170 + } 1171 + if _, err := cw.WriteString(string("locality")); err != nil { 1172 + return err 1173 + } 1174 + 1175 + if t.Locality == nil { 1176 + if _, err := cw.Write(cbg.CborNull); err != nil { 1177 + return err 1178 + } 1179 + } else { 1180 + if len(*t.Locality) > 1000000 { 1181 + return xerrors.Errorf("Value in field t.Locality was too long") 1182 + } 1183 + 1184 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Locality))); err != nil { 1185 + return err 1186 + } 1187 + if _, err := cw.WriteString(string(*t.Locality)); err != nil { 1188 + return err 1189 + } 1190 + } 1191 + } 1192 + 1193 + // t.PostalCode (string) (string) 1194 + if t.PostalCode != nil { 1195 + 1196 + if len("postalCode") > 1000000 { 1197 + return xerrors.Errorf("Value in field \"postalCode\" was too long") 1198 + } 1199 + 1200 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("postalCode"))); err != nil { 1201 + return err 1202 + } 1203 + if _, err := cw.WriteString(string("postalCode")); err != nil { 1204 + return err 1205 + } 1206 + 1207 + if t.PostalCode == nil { 1208 + if _, err := cw.Write(cbg.CborNull); err != nil { 1209 + return err 1210 + } 1211 + } else { 1212 + if len(*t.PostalCode) > 1000000 { 1213 + return xerrors.Errorf("Value in field t.PostalCode was too long") 1214 + } 1215 + 1216 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.PostalCode))); err != nil { 1217 + return err 1218 + } 1219 + if _, err := cw.WriteString(string(*t.PostalCode)); err != nil { 1220 + return err 1221 + } 1222 + } 1223 + } 1224 + return nil 1225 + } 1226 + 1227 + func (t *LocationAddress) UnmarshalCBOR(r io.Reader) (err error) { 1228 + *t = LocationAddress{} 1229 + 1230 + cr := cbg.NewCborReader(r) 1231 + 1232 + maj, extra, err := cr.ReadHeader() 1233 + if err != nil { 1234 + return err 1235 + } 1236 + defer func() { 1237 + if err == io.EOF { 1238 + err = io.ErrUnexpectedEOF 1239 + } 1240 + }() 1241 + 1242 + if maj != cbg.MajMap { 1243 + return fmt.Errorf("cbor input should be of type map") 1244 + } 1245 + 1246 + if extra > cbg.MaxLength { 1247 + return fmt.Errorf("LocationAddress: map struct too large (%d)", extra) 1248 + } 1249 + 1250 + n := extra 1251 + 1252 + nameBuf := make([]byte, 10) 1253 + for i := uint64(0); i < n; i++ { 1254 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 1255 + if err != nil { 1256 + return err 1257 + } 1258 + 1259 + if !ok { 1260 + // Field doesn't exist on this type, so ignore it 1261 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 1262 + return err 1263 + } 1264 + continue 1265 + } 1266 + 1267 + switch string(nameBuf[:nameLen]) { 1268 + // t.Name (string) (string) 1269 + case "name": 1270 + 1271 + { 1272 + b, err := cr.ReadByte() 1273 + if err != nil { 1274 + return err 1275 + } 1276 + if b != cbg.CborNull[0] { 1277 + if err := cr.UnreadByte(); err != nil { 1278 + return err 1279 + } 1280 + 1281 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1282 + if err != nil { 1283 + return err 1284 + } 1285 + 1286 + t.Name = (*string)(&sval) 1287 + } 1288 + } 1289 + // t.LexiconTypeID (string) (string) 1290 + case "$type": 1291 + 1292 + { 1293 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1294 + if err != nil { 1295 + return err 1296 + } 1297 + 1298 + t.LexiconTypeID = string(sval) 1299 + } 1300 + // t.Region (string) (string) 1301 + case "region": 1302 + 1303 + { 1304 + b, err := cr.ReadByte() 1305 + if err != nil { 1306 + return err 1307 + } 1308 + if b != cbg.CborNull[0] { 1309 + if err := cr.UnreadByte(); err != nil { 1310 + return err 1311 + } 1312 + 1313 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1314 + if err != nil { 1315 + return err 1316 + } 1317 + 1318 + t.Region = (*string)(&sval) 1319 + } 1320 + } 1321 + // t.Street (string) (string) 1322 + case "street": 1323 + 1324 + { 1325 + b, err := cr.ReadByte() 1326 + if err != nil { 1327 + return err 1328 + } 1329 + if b != cbg.CborNull[0] { 1330 + if err := cr.UnreadByte(); err != nil { 1331 + return err 1332 + } 1333 + 1334 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1335 + if err != nil { 1336 + return err 1337 + } 1338 + 1339 + t.Street = (*string)(&sval) 1340 + } 1341 + } 1342 + // t.Country (string) (string) 1343 + case "country": 1344 + 1345 + { 1346 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1347 + if err != nil { 1348 + return err 1349 + } 1350 + 1351 + t.Country = string(sval) 1352 + } 1353 + // t.Locality (string) (string) 1354 + case "locality": 1355 + 1356 + { 1357 + b, err := cr.ReadByte() 1358 + if err != nil { 1359 + return err 1360 + } 1361 + if b != cbg.CborNull[0] { 1362 + if err := cr.UnreadByte(); err != nil { 1363 + return err 1364 + } 1365 + 1366 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1367 + if err != nil { 1368 + return err 1369 + } 1370 + 1371 + t.Locality = (*string)(&sval) 1372 + } 1373 + } 1374 + // t.PostalCode (string) (string) 1375 + case "postalCode": 1376 + 1377 + { 1378 + b, err := cr.ReadByte() 1379 + if err != nil { 1380 + return err 1381 + } 1382 + if b != cbg.CborNull[0] { 1383 + if err := cr.UnreadByte(); err != nil { 1384 + return err 1385 + } 1386 + 1387 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1388 + if err != nil { 1389 + return err 1390 + } 1391 + 1392 + t.PostalCode = (*string)(&sval) 1393 + } 1394 + } 1395 + 1396 + default: 1397 + // Field doesn't exist on this type, so ignore it 1398 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 1399 + return err 1400 + } 1401 + } 1402 + } 1403 + 1404 + return nil 1405 + } 1406 + func (t *LocationFsq) MarshalCBOR(w io.Writer) error { 1407 + if t == nil { 1408 + _, err := w.Write(cbg.CborNull) 1409 + return err 1410 + } 1411 + 1412 + cw := cbg.NewCborWriter(w) 1413 + fieldCount := 5 1414 + 1415 + if t.Latitude == nil { 1416 + fieldCount-- 1417 + } 1418 + 1419 + if t.Longitude == nil { 1420 + fieldCount-- 1421 + } 1422 + 1423 + if t.Name == nil { 1424 + fieldCount-- 1425 + } 1426 + 1427 + if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { 1428 + return err 1429 + } 1430 + 1431 + // t.Name (string) (string) 1432 + if t.Name != nil { 1433 + 1434 + if len("name") > 1000000 { 1435 + return xerrors.Errorf("Value in field \"name\" was too long") 1436 + } 1437 + 1438 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { 1439 + return err 1440 + } 1441 + if _, err := cw.WriteString(string("name")); err != nil { 1442 + return err 1443 + } 1444 + 1445 + if t.Name == nil { 1446 + if _, err := cw.Write(cbg.CborNull); err != nil { 1447 + return err 1448 + } 1449 + } else { 1450 + if len(*t.Name) > 1000000 { 1451 + return xerrors.Errorf("Value in field t.Name was too long") 1452 + } 1453 + 1454 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Name))); err != nil { 1455 + return err 1456 + } 1457 + if _, err := cw.WriteString(string(*t.Name)); err != nil { 1458 + return err 1459 + } 1460 + } 1461 + } 1462 + 1463 + // t.LexiconTypeID (string) (string) 1464 + if len("$type") > 1000000 { 1465 + return xerrors.Errorf("Value in field \"$type\" was too long") 1466 + } 1467 + 1468 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 1469 + return err 1470 + } 1471 + if _, err := cw.WriteString(string("$type")); err != nil { 1472 + return err 1473 + } 1474 + 1475 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.location.fsq"))); err != nil { 1476 + return err 1477 + } 1478 + if _, err := cw.WriteString(string("community.lexicon.location.fsq")); err != nil { 1479 + return err 1480 + } 1481 + 1482 + // t.Latitude (string) (string) 1483 + if t.Latitude != nil { 1484 + 1485 + if len("latitude") > 1000000 { 1486 + return xerrors.Errorf("Value in field \"latitude\" was too long") 1487 + } 1488 + 1489 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("latitude"))); err != nil { 1490 + return err 1491 + } 1492 + if _, err := cw.WriteString(string("latitude")); err != nil { 1493 + return err 1494 + } 1495 + 1496 + if t.Latitude == nil { 1497 + if _, err := cw.Write(cbg.CborNull); err != nil { 1498 + return err 1499 + } 1500 + } else { 1501 + if len(*t.Latitude) > 1000000 { 1502 + return xerrors.Errorf("Value in field t.Latitude was too long") 1503 + } 1504 + 1505 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Latitude))); err != nil { 1506 + return err 1507 + } 1508 + if _, err := cw.WriteString(string(*t.Latitude)); err != nil { 1509 + return err 1510 + } 1511 + } 1512 + } 1513 + 1514 + // t.Longitude (string) (string) 1515 + if t.Longitude != nil { 1516 + 1517 + if len("longitude") > 1000000 { 1518 + return xerrors.Errorf("Value in field \"longitude\" was too long") 1519 + } 1520 + 1521 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("longitude"))); err != nil { 1522 + return err 1523 + } 1524 + if _, err := cw.WriteString(string("longitude")); err != nil { 1525 + return err 1526 + } 1527 + 1528 + if t.Longitude == nil { 1529 + if _, err := cw.Write(cbg.CborNull); err != nil { 1530 + return err 1531 + } 1532 + } else { 1533 + if len(*t.Longitude) > 1000000 { 1534 + return xerrors.Errorf("Value in field t.Longitude was too long") 1535 + } 1536 + 1537 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Longitude))); err != nil { 1538 + return err 1539 + } 1540 + if _, err := cw.WriteString(string(*t.Longitude)); err != nil { 1541 + return err 1542 + } 1543 + } 1544 + } 1545 + 1546 + // t.Fsq_place_id (string) (string) 1547 + if len("fsq_place_id") > 1000000 { 1548 + return xerrors.Errorf("Value in field \"fsq_place_id\" was too long") 1549 + } 1550 + 1551 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("fsq_place_id"))); err != nil { 1552 + return err 1553 + } 1554 + if _, err := cw.WriteString(string("fsq_place_id")); err != nil { 1555 + return err 1556 + } 1557 + 1558 + if len(t.Fsq_place_id) > 1000000 { 1559 + return xerrors.Errorf("Value in field t.Fsq_place_id was too long") 1560 + } 1561 + 1562 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Fsq_place_id))); err != nil { 1563 + return err 1564 + } 1565 + if _, err := cw.WriteString(string(t.Fsq_place_id)); err != nil { 1566 + return err 1567 + } 1568 + return nil 1569 + } 1570 + 1571 + func (t *LocationFsq) UnmarshalCBOR(r io.Reader) (err error) { 1572 + *t = LocationFsq{} 1573 + 1574 + cr := cbg.NewCborReader(r) 1575 + 1576 + maj, extra, err := cr.ReadHeader() 1577 + if err != nil { 1578 + return err 1579 + } 1580 + defer func() { 1581 + if err == io.EOF { 1582 + err = io.ErrUnexpectedEOF 1583 + } 1584 + }() 1585 + 1586 + if maj != cbg.MajMap { 1587 + return fmt.Errorf("cbor input should be of type map") 1588 + } 1589 + 1590 + if extra > cbg.MaxLength { 1591 + return fmt.Errorf("LocationFsq: map struct too large (%d)", extra) 1592 + } 1593 + 1594 + n := extra 1595 + 1596 + nameBuf := make([]byte, 12) 1597 + for i := uint64(0); i < n; i++ { 1598 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 1599 + if err != nil { 1600 + return err 1601 + } 1602 + 1603 + if !ok { 1604 + // Field doesn't exist on this type, so ignore it 1605 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 1606 + return err 1607 + } 1608 + continue 1609 + } 1610 + 1611 + switch string(nameBuf[:nameLen]) { 1612 + // t.Name (string) (string) 1613 + case "name": 1614 + 1615 + { 1616 + b, err := cr.ReadByte() 1617 + if err != nil { 1618 + return err 1619 + } 1620 + if b != cbg.CborNull[0] { 1621 + if err := cr.UnreadByte(); err != nil { 1622 + return err 1623 + } 1624 + 1625 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1626 + if err != nil { 1627 + return err 1628 + } 1629 + 1630 + t.Name = (*string)(&sval) 1631 + } 1632 + } 1633 + // t.LexiconTypeID (string) (string) 1634 + case "$type": 1635 + 1636 + { 1637 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1638 + if err != nil { 1639 + return err 1640 + } 1641 + 1642 + t.LexiconTypeID = string(sval) 1643 + } 1644 + // t.Latitude (string) (string) 1645 + case "latitude": 1646 + 1647 + { 1648 + b, err := cr.ReadByte() 1649 + if err != nil { 1650 + return err 1651 + } 1652 + if b != cbg.CborNull[0] { 1653 + if err := cr.UnreadByte(); err != nil { 1654 + return err 1655 + } 1656 + 1657 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1658 + if err != nil { 1659 + return err 1660 + } 1661 + 1662 + t.Latitude = (*string)(&sval) 1663 + } 1664 + } 1665 + // t.Longitude (string) (string) 1666 + case "longitude": 1667 + 1668 + { 1669 + b, err := cr.ReadByte() 1670 + if err != nil { 1671 + return err 1672 + } 1673 + if b != cbg.CborNull[0] { 1674 + if err := cr.UnreadByte(); err != nil { 1675 + return err 1676 + } 1677 + 1678 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1679 + if err != nil { 1680 + return err 1681 + } 1682 + 1683 + t.Longitude = (*string)(&sval) 1684 + } 1685 + } 1686 + // t.Fsq_place_id (string) (string) 1687 + case "fsq_place_id": 1688 + 1689 + { 1690 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1691 + if err != nil { 1692 + return err 1693 + } 1694 + 1695 + t.Fsq_place_id = string(sval) 1696 + } 1697 + 1698 + default: 1699 + // Field doesn't exist on this type, so ignore it 1700 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 1701 + return err 1702 + } 1703 + } 1704 + } 1705 + 1706 + return nil 1707 + } 1708 + func (t *LocationGeo) MarshalCBOR(w io.Writer) error { 1709 + if t == nil { 1710 + _, err := w.Write(cbg.CborNull) 1711 + return err 1712 + } 1713 + 1714 + cw := cbg.NewCborWriter(w) 1715 + fieldCount := 5 1716 + 1717 + if t.Altitude == nil { 1718 + fieldCount-- 1719 + } 1720 + 1721 + if t.Name == nil { 1722 + fieldCount-- 1723 + } 1724 + 1725 + if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { 1726 + return err 1727 + } 1728 + 1729 + // t.Name (string) (string) 1730 + if t.Name != nil { 1731 + 1732 + if len("name") > 1000000 { 1733 + return xerrors.Errorf("Value in field \"name\" was too long") 1734 + } 1735 + 1736 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { 1737 + return err 1738 + } 1739 + if _, err := cw.WriteString(string("name")); err != nil { 1740 + return err 1741 + } 1742 + 1743 + if t.Name == nil { 1744 + if _, err := cw.Write(cbg.CborNull); err != nil { 1745 + return err 1746 + } 1747 + } else { 1748 + if len(*t.Name) > 1000000 { 1749 + return xerrors.Errorf("Value in field t.Name was too long") 1750 + } 1751 + 1752 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Name))); err != nil { 1753 + return err 1754 + } 1755 + if _, err := cw.WriteString(string(*t.Name)); err != nil { 1756 + return err 1757 + } 1758 + } 1759 + } 1760 + 1761 + // t.LexiconTypeID (string) (string) 1762 + if len("$type") > 1000000 { 1763 + return xerrors.Errorf("Value in field \"$type\" was too long") 1764 + } 1765 + 1766 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 1767 + return err 1768 + } 1769 + if _, err := cw.WriteString(string("$type")); err != nil { 1770 + return err 1771 + } 1772 + 1773 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.location.geo"))); err != nil { 1774 + return err 1775 + } 1776 + if _, err := cw.WriteString(string("community.lexicon.location.geo")); err != nil { 1777 + return err 1778 + } 1779 + 1780 + // t.Altitude (string) (string) 1781 + if t.Altitude != nil { 1782 + 1783 + if len("altitude") > 1000000 { 1784 + return xerrors.Errorf("Value in field \"altitude\" was too long") 1785 + } 1786 + 1787 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("altitude"))); err != nil { 1788 + return err 1789 + } 1790 + if _, err := cw.WriteString(string("altitude")); err != nil { 1791 + return err 1792 + } 1793 + 1794 + if t.Altitude == nil { 1795 + if _, err := cw.Write(cbg.CborNull); err != nil { 1796 + return err 1797 + } 1798 + } else { 1799 + if len(*t.Altitude) > 1000000 { 1800 + return xerrors.Errorf("Value in field t.Altitude was too long") 1801 + } 1802 + 1803 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Altitude))); err != nil { 1804 + return err 1805 + } 1806 + if _, err := cw.WriteString(string(*t.Altitude)); err != nil { 1807 + return err 1808 + } 1809 + } 1810 + } 1811 + 1812 + // t.Latitude (string) (string) 1813 + if len("latitude") > 1000000 { 1814 + return xerrors.Errorf("Value in field \"latitude\" was too long") 1815 + } 1816 + 1817 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("latitude"))); err != nil { 1818 + return err 1819 + } 1820 + if _, err := cw.WriteString(string("latitude")); err != nil { 1821 + return err 1822 + } 1823 + 1824 + if len(t.Latitude) > 1000000 { 1825 + return xerrors.Errorf("Value in field t.Latitude was too long") 1826 + } 1827 + 1828 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Latitude))); err != nil { 1829 + return err 1830 + } 1831 + if _, err := cw.WriteString(string(t.Latitude)); err != nil { 1832 + return err 1833 + } 1834 + 1835 + // t.Longitude (string) (string) 1836 + if len("longitude") > 1000000 { 1837 + return xerrors.Errorf("Value in field \"longitude\" was too long") 1838 + } 1839 + 1840 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("longitude"))); err != nil { 1841 + return err 1842 + } 1843 + if _, err := cw.WriteString(string("longitude")); err != nil { 1844 + return err 1845 + } 1846 + 1847 + if len(t.Longitude) > 1000000 { 1848 + return xerrors.Errorf("Value in field t.Longitude was too long") 1849 + } 1850 + 1851 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Longitude))); err != nil { 1852 + return err 1853 + } 1854 + if _, err := cw.WriteString(string(t.Longitude)); err != nil { 1855 + return err 1856 + } 1857 + return nil 1858 + } 1859 + 1860 + func (t *LocationGeo) UnmarshalCBOR(r io.Reader) (err error) { 1861 + *t = LocationGeo{} 1862 + 1863 + cr := cbg.NewCborReader(r) 1864 + 1865 + maj, extra, err := cr.ReadHeader() 1866 + if err != nil { 1867 + return err 1868 + } 1869 + defer func() { 1870 + if err == io.EOF { 1871 + err = io.ErrUnexpectedEOF 1872 + } 1873 + }() 1874 + 1875 + if maj != cbg.MajMap { 1876 + return fmt.Errorf("cbor input should be of type map") 1877 + } 1878 + 1879 + if extra > cbg.MaxLength { 1880 + return fmt.Errorf("LocationGeo: map struct too large (%d)", extra) 1881 + } 1882 + 1883 + n := extra 1884 + 1885 + nameBuf := make([]byte, 9) 1886 + for i := uint64(0); i < n; i++ { 1887 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 1888 + if err != nil { 1889 + return err 1890 + } 1891 + 1892 + if !ok { 1893 + // Field doesn't exist on this type, so ignore it 1894 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 1895 + return err 1896 + } 1897 + continue 1898 + } 1899 + 1900 + switch string(nameBuf[:nameLen]) { 1901 + // t.Name (string) (string) 1902 + case "name": 1903 + 1904 + { 1905 + b, err := cr.ReadByte() 1906 + if err != nil { 1907 + return err 1908 + } 1909 + if b != cbg.CborNull[0] { 1910 + if err := cr.UnreadByte(); err != nil { 1911 + return err 1912 + } 1913 + 1914 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1915 + if err != nil { 1916 + return err 1917 + } 1918 + 1919 + t.Name = (*string)(&sval) 1920 + } 1921 + } 1922 + // t.LexiconTypeID (string) (string) 1923 + case "$type": 1924 + 1925 + { 1926 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1927 + if err != nil { 1928 + return err 1929 + } 1930 + 1931 + t.LexiconTypeID = string(sval) 1932 + } 1933 + // t.Altitude (string) (string) 1934 + case "altitude": 1935 + 1936 + { 1937 + b, err := cr.ReadByte() 1938 + if err != nil { 1939 + return err 1940 + } 1941 + if b != cbg.CborNull[0] { 1942 + if err := cr.UnreadByte(); err != nil { 1943 + return err 1944 + } 1945 + 1946 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1947 + if err != nil { 1948 + return err 1949 + } 1950 + 1951 + t.Altitude = (*string)(&sval) 1952 + } 1953 + } 1954 + // t.Latitude (string) (string) 1955 + case "latitude": 1956 + 1957 + { 1958 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1959 + if err != nil { 1960 + return err 1961 + } 1962 + 1963 + t.Latitude = string(sval) 1964 + } 1965 + // t.Longitude (string) (string) 1966 + case "longitude": 1967 + 1968 + { 1969 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 1970 + if err != nil { 1971 + return err 1972 + } 1973 + 1974 + t.Longitude = string(sval) 1975 + } 1976 + 1977 + default: 1978 + // Field doesn't exist on this type, so ignore it 1979 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 1980 + return err 1981 + } 1982 + } 1983 + } 1984 + 1985 + return nil 1986 + } 1987 + func (t *LocationHthree) MarshalCBOR(w io.Writer) error { 1988 + if t == nil { 1989 + _, err := w.Write(cbg.CborNull) 1990 + return err 1991 + } 1992 + 1993 + cw := cbg.NewCborWriter(w) 1994 + fieldCount := 3 1995 + 1996 + if t.Name == nil { 1997 + fieldCount-- 1998 + } 1999 + 2000 + if _, err := cw.Write(cbg.CborEncodeMajorType(cbg.MajMap, uint64(fieldCount))); err != nil { 2001 + return err 2002 + } 2003 + 2004 + // t.Name (string) (string) 2005 + if t.Name != nil { 2006 + 2007 + if len("name") > 1000000 { 2008 + return xerrors.Errorf("Value in field \"name\" was too long") 2009 + } 2010 + 2011 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("name"))); err != nil { 2012 + return err 2013 + } 2014 + if _, err := cw.WriteString(string("name")); err != nil { 2015 + return err 2016 + } 2017 + 2018 + if t.Name == nil { 2019 + if _, err := cw.Write(cbg.CborNull); err != nil { 2020 + return err 2021 + } 2022 + } else { 2023 + if len(*t.Name) > 1000000 { 2024 + return xerrors.Errorf("Value in field t.Name was too long") 2025 + } 2026 + 2027 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(*t.Name))); err != nil { 2028 + return err 2029 + } 2030 + if _, err := cw.WriteString(string(*t.Name)); err != nil { 2031 + return err 2032 + } 2033 + } 2034 + } 2035 + 2036 + // t.LexiconTypeID (string) (string) 2037 + if len("$type") > 1000000 { 2038 + return xerrors.Errorf("Value in field \"$type\" was too long") 2039 + } 2040 + 2041 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("$type"))); err != nil { 2042 + return err 2043 + } 2044 + if _, err := cw.WriteString(string("$type")); err != nil { 2045 + return err 2046 + } 2047 + 2048 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("community.lexicon.location.hthree"))); err != nil { 2049 + return err 2050 + } 2051 + if _, err := cw.WriteString(string("community.lexicon.location.hthree")); err != nil { 2052 + return err 2053 + } 2054 + 2055 + // t.Value (string) (string) 2056 + if len("value") > 1000000 { 2057 + return xerrors.Errorf("Value in field \"value\" was too long") 2058 + } 2059 + 2060 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len("value"))); err != nil { 2061 + return err 2062 + } 2063 + if _, err := cw.WriteString(string("value")); err != nil { 2064 + return err 2065 + } 2066 + 2067 + if len(t.Value) > 1000000 { 2068 + return xerrors.Errorf("Value in field t.Value was too long") 2069 + } 2070 + 2071 + if err := cw.WriteMajorTypeHeader(cbg.MajTextString, uint64(len(t.Value))); err != nil { 2072 + return err 2073 + } 2074 + if _, err := cw.WriteString(string(t.Value)); err != nil { 2075 + return err 2076 + } 2077 + return nil 2078 + } 2079 + 2080 + func (t *LocationHthree) UnmarshalCBOR(r io.Reader) (err error) { 2081 + *t = LocationHthree{} 2082 + 2083 + cr := cbg.NewCborReader(r) 2084 + 2085 + maj, extra, err := cr.ReadHeader() 2086 + if err != nil { 2087 + return err 2088 + } 2089 + defer func() { 2090 + if err == io.EOF { 2091 + err = io.ErrUnexpectedEOF 2092 + } 2093 + }() 2094 + 2095 + if maj != cbg.MajMap { 2096 + return fmt.Errorf("cbor input should be of type map") 2097 + } 2098 + 2099 + if extra > cbg.MaxLength { 2100 + return fmt.Errorf("LocationHthree: map struct too large (%d)", extra) 2101 + } 2102 + 2103 + n := extra 2104 + 2105 + nameBuf := make([]byte, 5) 2106 + for i := uint64(0); i < n; i++ { 2107 + nameLen, ok, err := cbg.ReadFullStringIntoBuf(cr, nameBuf, 1000000) 2108 + if err != nil { 2109 + return err 2110 + } 2111 + 2112 + if !ok { 2113 + // Field doesn't exist on this type, so ignore it 2114 + if err := cbg.ScanForLinks(cr, func(cid.Cid) {}); err != nil { 2115 + return err 2116 + } 2117 + continue 2118 + } 2119 + 2120 + switch string(nameBuf[:nameLen]) { 2121 + // t.Name (string) (string) 2122 + case "name": 2123 + 2124 + { 2125 + b, err := cr.ReadByte() 2126 + if err != nil { 2127 + return err 2128 + } 2129 + if b != cbg.CborNull[0] { 2130 + if err := cr.UnreadByte(); err != nil { 2131 + return err 2132 + } 2133 + 2134 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 2135 + if err != nil { 2136 + return err 2137 + } 2138 + 2139 + t.Name = (*string)(&sval) 2140 + } 2141 + } 2142 + // t.LexiconTypeID (string) (string) 2143 + case "$type": 2144 + 2145 + { 2146 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 2147 + if err != nil { 2148 + return err 2149 + } 2150 + 2151 + t.LexiconTypeID = string(sval) 2152 + } 2153 + // t.Value (string) (string) 2154 + case "value": 2155 + 2156 + { 2157 + sval, err := cbg.ReadStringWithMax(cr, 1000000) 2158 + if err != nil { 2159 + return err 2160 + } 2161 + 2162 + t.Value = string(sval) 2163 + } 2164 + 2165 + default: 2166 + // Field doesn't exist on this type, so ignore it 2167 + if err := cbg.ScanForLinks(r, func(cid.Cid) {}); err != nil { 2168 + return err 2169 + } 2170 + } 2171 + } 2172 + 2173 + return nil 2174 + }
+31
cmd/gen/main.go
··· 1 + // CBOR encoder generation for the lexgen'd api/community types. 2 + // Mirrors indigo's gen tool (https://github.com/bluesky-social/indigo/blob/main/gen/main.go). 3 + // Run via `just cborgen`. 4 + package main 5 + 6 + import ( 7 + community "CommunityEventsICS/api/community" 8 + 9 + cbg "github.com/whyrusleeping/cbor-gen" 10 + ) 11 + 12 + func main() { 13 + genCfg := cbg.Gen{ 14 + MaxStringLength: 1_000_000, 15 + } 16 + 17 + // CalendarEvent_Locations_Elem is a union with hand-generated CBOR methods, 18 + // so it is omitted here; we only generate encoders for the concrete structs 19 + // it dispatches to. 20 + if err := genCfg.WriteMapEncodersToFile("api/community/cbor_gen.go", "community", 21 + community.CalendarEvent{}, 22 + community.CalendarEvent_Uri{}, 23 + community.CalendarRsvp{}, 24 + community.LocationAddress{}, 25 + community.LocationFsq{}, 26 + community.LocationGeo{}, 27 + community.LocationHthree{}, 28 + ); err != nil { 29 + panic(err) 30 + } 31 + }
+3 -3
go.mod
··· 5 5 require ( 6 6 github.com/bluesky-social/indigo v0.0.0-20260528134852-3e368bd18814 7 7 github.com/gorilla/websocket v1.5.3 8 + github.com/ipfs/go-cid v0.4.1 8 9 github.com/joho/godotenv v1.5.1 9 10 github.com/klauspost/compress v1.17.3 10 11 github.com/labstack/echo/v5 v5.1.1 11 12 github.com/spf13/viper v1.21.0 12 13 github.com/urfave/cli/v2 v2.27.7 14 + github.com/whyrusleeping/cbor-gen v0.3.1 15 + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 13 16 gorm.io/driver/sqlite v1.6.0 14 17 gorm.io/gorm v1.31.1 15 18 ) ··· 18 21 github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect 19 22 github.com/fsnotify/fsnotify v1.9.0 // indirect 20 23 github.com/go-viper/mapstructure/v2 v2.4.0 // indirect 21 - github.com/ipfs/go-cid v0.4.1 // indirect 22 24 github.com/jinzhu/inflection v1.0.0 // indirect 23 25 github.com/jinzhu/now v1.1.5 // indirect 24 26 github.com/klauspost/cpuid/v2 v2.2.7 // indirect ··· 39 41 github.com/spf13/cast v1.10.0 // indirect 40 42 github.com/spf13/pflag v1.0.10 // indirect 41 43 github.com/subosito/gotenv v1.6.0 // indirect 42 - github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e // indirect 43 44 github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect 44 45 go.yaml.in/yaml/v3 v3.0.4 // indirect 45 46 golang.org/x/crypto v0.21.0 // indirect ··· 49 50 golang.org/x/text v0.37.0 // indirect 50 51 golang.org/x/time v0.14.0 // indirect 51 52 golang.org/x/tools v0.44.0 // indirect 52 - golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect 53 53 lukechampine.com/blake3 v1.2.1 // indirect 54 54 )
+2 -2
go.sum
··· 76 76 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 77 77 github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= 78 78 github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= 79 - github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e h1:28X54ciEwwUxyHn9yrZfl5ojgF4CBNLWX7LR0rvBkf4= 80 - github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= 79 + github.com/whyrusleeping/cbor-gen v0.3.1 h1:82ioxmhEYut7LBVGhGq8xoRkXPLElVuh5mV67AFfdv0= 80 + github.com/whyrusleeping/cbor-gen v0.3.1/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= 81 81 github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= 82 82 github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= 83 83 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
+4
justfile
··· 5 5 lexicons/community/lexicon/calendar/event.json \ 6 6 lexicons/community/lexicon/calendar/rsvp.json \ 7 7 lexicons/community/lexicon/location 8 + 9 + # Generate CBOR encoders (api/community/cbor_gen.go) for the lexgen'd types. 10 + cborgen: 11 + go run ./cmd/gen
+42 -1
listener/listener.go
··· 10 10 "sync/atomic" 11 11 "time" 12 12 13 + "CommunityEventsICS/api/community" 13 14 "CommunityEventsICS/models" 14 15 15 16 "github.com/gorilla/websocket" ··· 115 116 } 116 117 switch event.Kind { 117 118 case EventKindCommit: 118 - log.Printf("commit: %s", event.Did) 119 + handleCommit(&event) 119 120 case EventKindAccount: 120 121 log.Printf("account: %s", event.Did) 121 122 case EventKindIdentity: ··· 139 140 saveCursor(db, host, lastCursor.Load()) 140 141 } 141 142 } 143 + } 144 + 145 + // handleCommit dispatches a commit event to the appropriate handler based on 146 + // the record's lexicon collection. Collections we don't care about are ignored. 147 + func handleCommit(event *Event) { 148 + if event.Commit == nil { 149 + return 150 + } 151 + switch event.Commit.Collection { 152 + case CollectionCalendarEvent: 153 + handleCalendarEvent(event.Did, event.Commit) 154 + case CollectionCalendarRsvp: 155 + handleCalendarRsvp(event.Did, event.Commit) 156 + } 157 + } 158 + 159 + // handleCalendarEvent parses a community.lexicon.calendar.event record. 160 + func handleCalendarEvent(did string, commit *Commit) { 161 + if commit.Record == nil { 162 + return 163 + } 164 + var rec community.CalendarEvent 165 + if err := json.Unmarshal(commit.Record, &rec); err != nil { 166 + log.Printf("listener: unmarshal calendar event (%s/%s): %v", did, commit.RKey, err) 167 + return 168 + } 169 + log.Printf("calendar event: %s/%s %q", did, commit.RKey, rec.Name) 170 + } 171 + 172 + // handleCalendarRsvp parses a community.lexicon.calendar.rsvp record. 173 + func handleCalendarRsvp(did string, commit *Commit) { 174 + if commit.Record == nil { 175 + return 176 + } 177 + var rec community.CalendarRsvp 178 + if err := json.Unmarshal(commit.Record, &rec); err != nil { 179 + log.Printf("listener: unmarshal calendar rsvp (%s/%s): %v", did, commit.RKey, err) 180 + return 181 + } 182 + log.Printf("calendar rsvp: %s/%s status=%q", did, commit.RKey, rec.Status) 142 183 } 143 184 144 185 // nextBackoff doubles the delay up to maxReconnectDelay.
+3
listener/model.go
··· 46 46 CommitOperationCreate = "create" 47 47 CommitOperationUpdate = "update" 48 48 CommitOperationDelete = "delete" 49 + 50 + CollectionCalendarEvent = "community.lexicon.calendar.event" 51 + CollectionCalendarRsvp = "community.lexicon.calendar.rsvp" 49 52 )