github.com/Desuuuu/genqlient@v0.5.3/generate/testdata/snapshots/TestGenerate-ComplexNamedFragments.graphql-ComplexNamedFragments.graphql.go (about) 1 // Code generated by github.com/Desuuuu/genqlient, DO NOT EDIT. 2 3 package test 4 5 import ( 6 "encoding/json" 7 "fmt" 8 9 "github.com/Desuuuu/genqlient/graphql" 10 "github.com/Desuuuu/genqlient/internal/testutil" 11 ) 12 13 // ComplexNamedFragmentsResponse is returned by ComplexNamedFragments on success. 14 type ComplexNamedFragmentsResponse struct { 15 QueryFragment `json:"-"` 16 } 17 18 // GetRandomItem returns ComplexNamedFragmentsResponse.RandomItem, and is useful for accessing the field via an interface. 19 func (v *ComplexNamedFragmentsResponse) GetRandomItem() InnerQueryFragmentRandomItemContent { 20 return v.QueryFragment.InnerQueryFragment.RandomItem 21 } 22 23 // GetRandomLeaf returns ComplexNamedFragmentsResponse.RandomLeaf, and is useful for accessing the field via an interface. 24 func (v *ComplexNamedFragmentsResponse) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent { 25 return v.QueryFragment.InnerQueryFragment.RandomLeaf 26 } 27 28 // GetOtherLeaf returns ComplexNamedFragmentsResponse.OtherLeaf, and is useful for accessing the field via an interface. 29 func (v *ComplexNamedFragmentsResponse) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent { 30 return v.QueryFragment.InnerQueryFragment.OtherLeaf 31 } 32 33 func (v *ComplexNamedFragmentsResponse) UnmarshalJSON(b []byte) error { 34 35 if string(b) == "null" { 36 return nil 37 } 38 39 var firstPass struct { 40 *ComplexNamedFragmentsResponse 41 graphql.NoUnmarshalJSON 42 } 43 firstPass.ComplexNamedFragmentsResponse = v 44 45 err := json.Unmarshal(b, &firstPass) 46 if err != nil { 47 return err 48 } 49 50 err = json.Unmarshal( 51 b, &v.QueryFragment) 52 if err != nil { 53 return err 54 } 55 return nil 56 } 57 58 type __premarshalComplexNamedFragmentsResponse struct { 59 RandomItem json.RawMessage `json:"randomItem"` 60 61 RandomLeaf json.RawMessage `json:"randomLeaf"` 62 63 OtherLeaf json.RawMessage `json:"otherLeaf"` 64 } 65 66 func (v *ComplexNamedFragmentsResponse) MarshalJSON() ([]byte, error) { 67 premarshaled, err := v.__premarshalJSON() 68 if err != nil { 69 return nil, err 70 } 71 return json.Marshal(premarshaled) 72 } 73 74 func (v *ComplexNamedFragmentsResponse) __premarshalJSON() (*__premarshalComplexNamedFragmentsResponse, error) { 75 var retval __premarshalComplexNamedFragmentsResponse 76 77 { 78 79 dst := &retval.RandomItem 80 src := v.QueryFragment.InnerQueryFragment.RandomItem 81 var err error 82 *dst, err = __marshalInnerQueryFragmentRandomItemContent( 83 &src) 84 if err != nil { 85 return nil, fmt.Errorf( 86 "Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomItem: %w", err) 87 } 88 } 89 { 90 91 dst := &retval.RandomLeaf 92 src := v.QueryFragment.InnerQueryFragment.RandomLeaf 93 var err error 94 *dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent( 95 &src) 96 if err != nil { 97 return nil, fmt.Errorf( 98 "Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.RandomLeaf: %w", err) 99 } 100 } 101 { 102 103 dst := &retval.OtherLeaf 104 src := v.QueryFragment.InnerQueryFragment.OtherLeaf 105 var err error 106 *dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent( 107 &src) 108 if err != nil { 109 return nil, fmt.Errorf( 110 "Unable to marshal ComplexNamedFragmentsResponse.QueryFragment.InnerQueryFragment.OtherLeaf: %w", err) 111 } 112 } 113 return &retval, nil 114 } 115 116 // ContentFields includes the GraphQL fields of Content requested by the fragment ContentFields. 117 // The GraphQL type's documentation follows. 118 // 119 // Content is implemented by various types like Article, Video, and Topic. 120 // 121 // ContentFields is implemented by the following types: 122 // ContentFieldsArticle 123 // ContentFieldsVideo 124 // ContentFieldsTopic 125 type ContentFields interface { 126 implementsGraphQLInterfaceContentFields() 127 // GetName returns the interface-field "name" from its implementation. 128 GetName() string 129 // GetUrl returns the interface-field "url" from its implementation. 130 GetUrl() string 131 GetContentFieldsArticle() (*ContentFieldsArticle, bool) 132 GetContentFieldsVideo() (*ContentFieldsVideo, bool) 133 GetContentFieldsTopic() (*ContentFieldsTopic, bool) 134 } 135 136 func (v *ContentFieldsArticle) implementsGraphQLInterfaceContentFields() {} 137 func (v *ContentFieldsArticle) GetContentFieldsArticle() (*ContentFieldsArticle, bool) { 138 return v, true 139 } 140 func (v *ContentFieldsArticle) GetContentFieldsVideo() (*ContentFieldsVideo, bool) { 141 return nil, false 142 } 143 func (v *ContentFieldsArticle) GetContentFieldsTopic() (*ContentFieldsTopic, bool) { 144 return nil, false 145 } 146 func (v *ContentFieldsVideo) implementsGraphQLInterfaceContentFields() {} 147 func (v *ContentFieldsVideo) GetContentFieldsArticle() (*ContentFieldsArticle, bool) { 148 return nil, false 149 } 150 func (v *ContentFieldsVideo) GetContentFieldsVideo() (*ContentFieldsVideo, bool) { 151 return v, true 152 } 153 func (v *ContentFieldsVideo) GetContentFieldsTopic() (*ContentFieldsTopic, bool) { 154 return nil, false 155 } 156 func (v *ContentFieldsTopic) implementsGraphQLInterfaceContentFields() {} 157 func (v *ContentFieldsTopic) GetContentFieldsArticle() (*ContentFieldsArticle, bool) { 158 return nil, false 159 } 160 func (v *ContentFieldsTopic) GetContentFieldsVideo() (*ContentFieldsVideo, bool) { 161 return nil, false 162 } 163 func (v *ContentFieldsTopic) GetContentFieldsTopic() (*ContentFieldsTopic, bool) { 164 return v, true 165 } 166 167 func __unmarshalContentFields(b []byte, v *ContentFields) error { 168 if string(b) == "null" { 169 return nil 170 } 171 172 var tn struct { 173 TypeName string `json:"__typename"` 174 } 175 err := json.Unmarshal(b, &tn) 176 if err != nil { 177 return err 178 } 179 180 switch tn.TypeName { 181 case "Article": 182 *v = new(ContentFieldsArticle) 183 return json.Unmarshal(b, *v) 184 case "Video": 185 *v = new(ContentFieldsVideo) 186 return json.Unmarshal(b, *v) 187 case "Topic": 188 *v = new(ContentFieldsTopic) 189 return json.Unmarshal(b, *v) 190 case "": 191 return fmt.Errorf( 192 "response was missing Content.__typename") 193 default: 194 return fmt.Errorf( 195 `unexpected concrete type for ContentFields: "%v"`, tn.TypeName) 196 } 197 } 198 199 func __marshalContentFields(v *ContentFields) ([]byte, error) { 200 201 var typename string 202 switch v := (*v).(type) { 203 case *ContentFieldsArticle: 204 typename = "Article" 205 206 result := struct { 207 TypeName string `json:"__typename"` 208 *ContentFieldsArticle 209 }{typename, v} 210 return json.Marshal(result) 211 case *ContentFieldsVideo: 212 typename = "Video" 213 214 result := struct { 215 TypeName string `json:"__typename"` 216 *ContentFieldsVideo 217 }{typename, v} 218 return json.Marshal(result) 219 case *ContentFieldsTopic: 220 typename = "Topic" 221 222 result := struct { 223 TypeName string `json:"__typename"` 224 *ContentFieldsTopic 225 }{typename, v} 226 return json.Marshal(result) 227 case nil: 228 return []byte("null"), nil 229 default: 230 return nil, fmt.Errorf( 231 `unexpected concrete type for ContentFields: "%T"`, v) 232 } 233 } 234 235 // ContentFields includes the GraphQL fields of Article requested by the fragment ContentFields. 236 // The GraphQL type's documentation follows. 237 // 238 // Content is implemented by various types like Article, Video, and Topic. 239 type ContentFieldsArticle struct { 240 Name string `json:"name"` 241 Url string `json:"url"` 242 } 243 244 // GetName returns ContentFieldsArticle.Name, and is useful for accessing the field via an interface. 245 func (v *ContentFieldsArticle) GetName() string { return v.Name } 246 247 // GetUrl returns ContentFieldsArticle.Url, and is useful for accessing the field via an interface. 248 func (v *ContentFieldsArticle) GetUrl() string { return v.Url } 249 250 // ContentFields includes the GraphQL fields of Topic requested by the fragment ContentFields. 251 // The GraphQL type's documentation follows. 252 // 253 // Content is implemented by various types like Article, Video, and Topic. 254 type ContentFieldsTopic struct { 255 Name string `json:"name"` 256 Url string `json:"url"` 257 } 258 259 // GetName returns ContentFieldsTopic.Name, and is useful for accessing the field via an interface. 260 func (v *ContentFieldsTopic) GetName() string { return v.Name } 261 262 // GetUrl returns ContentFieldsTopic.Url, and is useful for accessing the field via an interface. 263 func (v *ContentFieldsTopic) GetUrl() string { return v.Url } 264 265 // ContentFields includes the GraphQL fields of Video requested by the fragment ContentFields. 266 // The GraphQL type's documentation follows. 267 // 268 // Content is implemented by various types like Article, Video, and Topic. 269 type ContentFieldsVideo struct { 270 Name string `json:"name"` 271 Url string `json:"url"` 272 } 273 274 // GetName returns ContentFieldsVideo.Name, and is useful for accessing the field via an interface. 275 func (v *ContentFieldsVideo) GetName() string { return v.Name } 276 277 // GetUrl returns ContentFieldsVideo.Url, and is useful for accessing the field via an interface. 278 func (v *ContentFieldsVideo) GetUrl() string { return v.Url } 279 280 // InnerQueryFragment includes the GraphQL fields of Query requested by the fragment InnerQueryFragment. 281 // The GraphQL type's documentation follows. 282 // 283 // Query's description is probably ignored by almost all callers. 284 type InnerQueryFragment struct { 285 RandomItem InnerQueryFragmentRandomItemContent `json:"-"` 286 RandomLeaf InnerQueryFragmentRandomLeafLeafContent `json:"-"` 287 OtherLeaf InnerQueryFragmentOtherLeafLeafContent `json:"-"` 288 } 289 290 // GetRandomItem returns InnerQueryFragment.RandomItem, and is useful for accessing the field via an interface. 291 func (v *InnerQueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent { return v.RandomItem } 292 293 // GetRandomLeaf returns InnerQueryFragment.RandomLeaf, and is useful for accessing the field via an interface. 294 func (v *InnerQueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent { 295 return v.RandomLeaf 296 } 297 298 // GetOtherLeaf returns InnerQueryFragment.OtherLeaf, and is useful for accessing the field via an interface. 299 func (v *InnerQueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent { 300 return v.OtherLeaf 301 } 302 303 func (v *InnerQueryFragment) UnmarshalJSON(b []byte) error { 304 305 if string(b) == "null" { 306 return nil 307 } 308 309 var firstPass struct { 310 *InnerQueryFragment 311 RandomItem json.RawMessage `json:"randomItem"` 312 RandomLeaf json.RawMessage `json:"randomLeaf"` 313 OtherLeaf json.RawMessage `json:"otherLeaf"` 314 graphql.NoUnmarshalJSON 315 } 316 firstPass.InnerQueryFragment = v 317 318 err := json.Unmarshal(b, &firstPass) 319 if err != nil { 320 return err 321 } 322 323 { 324 dst := &v.RandomItem 325 src := firstPass.RandomItem 326 if len(src) != 0 && string(src) != "null" { 327 err = __unmarshalInnerQueryFragmentRandomItemContent( 328 src, dst) 329 if err != nil { 330 return fmt.Errorf( 331 "Unable to unmarshal InnerQueryFragment.RandomItem: %w", err) 332 } 333 } 334 } 335 336 { 337 dst := &v.RandomLeaf 338 src := firstPass.RandomLeaf 339 if len(src) != 0 && string(src) != "null" { 340 err = __unmarshalInnerQueryFragmentRandomLeafLeafContent( 341 src, dst) 342 if err != nil { 343 return fmt.Errorf( 344 "Unable to unmarshal InnerQueryFragment.RandomLeaf: %w", err) 345 } 346 } 347 } 348 349 { 350 dst := &v.OtherLeaf 351 src := firstPass.OtherLeaf 352 if len(src) != 0 && string(src) != "null" { 353 err = __unmarshalInnerQueryFragmentOtherLeafLeafContent( 354 src, dst) 355 if err != nil { 356 return fmt.Errorf( 357 "Unable to unmarshal InnerQueryFragment.OtherLeaf: %w", err) 358 } 359 } 360 } 361 return nil 362 } 363 364 type __premarshalInnerQueryFragment struct { 365 RandomItem json.RawMessage `json:"randomItem"` 366 367 RandomLeaf json.RawMessage `json:"randomLeaf"` 368 369 OtherLeaf json.RawMessage `json:"otherLeaf"` 370 } 371 372 func (v *InnerQueryFragment) MarshalJSON() ([]byte, error) { 373 premarshaled, err := v.__premarshalJSON() 374 if err != nil { 375 return nil, err 376 } 377 return json.Marshal(premarshaled) 378 } 379 380 func (v *InnerQueryFragment) __premarshalJSON() (*__premarshalInnerQueryFragment, error) { 381 var retval __premarshalInnerQueryFragment 382 383 { 384 385 dst := &retval.RandomItem 386 src := v.RandomItem 387 var err error 388 *dst, err = __marshalInnerQueryFragmentRandomItemContent( 389 &src) 390 if err != nil { 391 return nil, fmt.Errorf( 392 "Unable to marshal InnerQueryFragment.RandomItem: %w", err) 393 } 394 } 395 { 396 397 dst := &retval.RandomLeaf 398 src := v.RandomLeaf 399 var err error 400 *dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent( 401 &src) 402 if err != nil { 403 return nil, fmt.Errorf( 404 "Unable to marshal InnerQueryFragment.RandomLeaf: %w", err) 405 } 406 } 407 { 408 409 dst := &retval.OtherLeaf 410 src := v.OtherLeaf 411 var err error 412 *dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent( 413 &src) 414 if err != nil { 415 return nil, fmt.Errorf( 416 "Unable to marshal InnerQueryFragment.OtherLeaf: %w", err) 417 } 418 } 419 return &retval, nil 420 } 421 422 // InnerQueryFragmentOtherLeafArticle includes the requested fields of the GraphQL type Article. 423 type InnerQueryFragmentOtherLeafArticle struct { 424 Typename string `json:"__typename"` 425 ContentFieldsArticle `json:"-"` 426 } 427 428 // GetTypename returns InnerQueryFragmentOtherLeafArticle.Typename, and is useful for accessing the field via an interface. 429 func (v *InnerQueryFragmentOtherLeafArticle) GetTypename() string { return v.Typename } 430 431 // GetName returns InnerQueryFragmentOtherLeafArticle.Name, and is useful for accessing the field via an interface. 432 func (v *InnerQueryFragmentOtherLeafArticle) GetName() string { return v.ContentFieldsArticle.Name } 433 434 // GetUrl returns InnerQueryFragmentOtherLeafArticle.Url, and is useful for accessing the field via an interface. 435 func (v *InnerQueryFragmentOtherLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url } 436 437 func (v *InnerQueryFragmentOtherLeafArticle) UnmarshalJSON(b []byte) error { 438 439 if string(b) == "null" { 440 return nil 441 } 442 443 var firstPass struct { 444 *InnerQueryFragmentOtherLeafArticle 445 graphql.NoUnmarshalJSON 446 } 447 firstPass.InnerQueryFragmentOtherLeafArticle = v 448 449 err := json.Unmarshal(b, &firstPass) 450 if err != nil { 451 return err 452 } 453 454 err = json.Unmarshal( 455 b, &v.ContentFieldsArticle) 456 if err != nil { 457 return err 458 } 459 return nil 460 } 461 462 type __premarshalInnerQueryFragmentOtherLeafArticle struct { 463 Typename string `json:"__typename"` 464 465 Name string `json:"name"` 466 467 Url string `json:"url"` 468 } 469 470 func (v *InnerQueryFragmentOtherLeafArticle) MarshalJSON() ([]byte, error) { 471 premarshaled, err := v.__premarshalJSON() 472 if err != nil { 473 return nil, err 474 } 475 return json.Marshal(premarshaled) 476 } 477 478 func (v *InnerQueryFragmentOtherLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafArticle, error) { 479 var retval __premarshalInnerQueryFragmentOtherLeafArticle 480 481 retval.Typename = v.Typename 482 retval.Name = v.ContentFieldsArticle.Name 483 retval.Url = v.ContentFieldsArticle.Url 484 return &retval, nil 485 } 486 487 // InnerQueryFragmentOtherLeafLeafContent includes the requested fields of the GraphQL interface LeafContent. 488 // 489 // InnerQueryFragmentOtherLeafLeafContent is implemented by the following types: 490 // InnerQueryFragmentOtherLeafArticle 491 // InnerQueryFragmentOtherLeafVideo 492 // The GraphQL type's documentation follows. 493 // 494 // LeafContent represents content items that can't have child-nodes. 495 type InnerQueryFragmentOtherLeafLeafContent interface { 496 implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() 497 // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). 498 GetTypename() string 499 GetLeafContentArticle() (*InnerQueryFragmentOtherLeafArticle, bool) 500 GetLeafContentVideo() (*InnerQueryFragmentOtherLeafVideo, bool) 501 } 502 503 func (v *InnerQueryFragmentOtherLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() { 504 } 505 func (v *InnerQueryFragmentOtherLeafArticle) GetLeafContentArticle() (*InnerQueryFragmentOtherLeafArticle, bool) { 506 return v, true 507 } 508 func (v *InnerQueryFragmentOtherLeafArticle) GetLeafContentVideo() (*InnerQueryFragmentOtherLeafVideo, bool) { 509 return nil, false 510 } 511 func (v *InnerQueryFragmentOtherLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentOtherLeafLeafContent() { 512 } 513 func (v *InnerQueryFragmentOtherLeafVideo) GetLeafContentArticle() (*InnerQueryFragmentOtherLeafArticle, bool) { 514 return nil, false 515 } 516 func (v *InnerQueryFragmentOtherLeafVideo) GetLeafContentVideo() (*InnerQueryFragmentOtherLeafVideo, bool) { 517 return v, true 518 } 519 520 func __unmarshalInnerQueryFragmentOtherLeafLeafContent(b []byte, v *InnerQueryFragmentOtherLeafLeafContent) error { 521 if string(b) == "null" { 522 return nil 523 } 524 525 var tn struct { 526 TypeName string `json:"__typename"` 527 } 528 err := json.Unmarshal(b, &tn) 529 if err != nil { 530 return err 531 } 532 533 switch tn.TypeName { 534 case "Article": 535 *v = new(InnerQueryFragmentOtherLeafArticle) 536 return json.Unmarshal(b, *v) 537 case "Video": 538 *v = new(InnerQueryFragmentOtherLeafVideo) 539 return json.Unmarshal(b, *v) 540 case "": 541 return fmt.Errorf( 542 "response was missing LeafContent.__typename") 543 default: 544 return fmt.Errorf( 545 `unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%v"`, tn.TypeName) 546 } 547 } 548 549 func __marshalInnerQueryFragmentOtherLeafLeafContent(v *InnerQueryFragmentOtherLeafLeafContent) ([]byte, error) { 550 551 var typename string 552 switch v := (*v).(type) { 553 case *InnerQueryFragmentOtherLeafArticle: 554 typename = "Article" 555 556 premarshaled, err := v.__premarshalJSON() 557 if err != nil { 558 return nil, err 559 } 560 result := struct { 561 TypeName string `json:"__typename"` 562 *__premarshalInnerQueryFragmentOtherLeafArticle 563 }{typename, premarshaled} 564 return json.Marshal(result) 565 case *InnerQueryFragmentOtherLeafVideo: 566 typename = "Video" 567 568 premarshaled, err := v.__premarshalJSON() 569 if err != nil { 570 return nil, err 571 } 572 result := struct { 573 TypeName string `json:"__typename"` 574 *__premarshalInnerQueryFragmentOtherLeafVideo 575 }{typename, premarshaled} 576 return json.Marshal(result) 577 case nil: 578 return []byte("null"), nil 579 default: 580 return nil, fmt.Errorf( 581 `unexpected concrete type for InnerQueryFragmentOtherLeafLeafContent: "%T"`, v) 582 } 583 } 584 585 // InnerQueryFragmentOtherLeafVideo includes the requested fields of the GraphQL type Video. 586 type InnerQueryFragmentOtherLeafVideo struct { 587 Typename string `json:"__typename"` 588 MoreVideoFields `json:"-"` 589 ContentFieldsVideo `json:"-"` 590 } 591 592 // GetTypename returns InnerQueryFragmentOtherLeafVideo.Typename, and is useful for accessing the field via an interface. 593 func (v *InnerQueryFragmentOtherLeafVideo) GetTypename() string { return v.Typename } 594 595 // GetId returns InnerQueryFragmentOtherLeafVideo.Id, and is useful for accessing the field via an interface. 596 func (v *InnerQueryFragmentOtherLeafVideo) GetId() *testutil.ID { return v.MoreVideoFields.Id } 597 598 // GetParent returns InnerQueryFragmentOtherLeafVideo.Parent, and is useful for accessing the field via an interface. 599 func (v *InnerQueryFragmentOtherLeafVideo) GetParent() *MoreVideoFieldsParentTopic { 600 return v.MoreVideoFields.Parent 601 } 602 603 // GetName returns InnerQueryFragmentOtherLeafVideo.Name, and is useful for accessing the field via an interface. 604 func (v *InnerQueryFragmentOtherLeafVideo) GetName() string { return v.ContentFieldsVideo.Name } 605 606 // GetUrl returns InnerQueryFragmentOtherLeafVideo.Url, and is useful for accessing the field via an interface. 607 func (v *InnerQueryFragmentOtherLeafVideo) GetUrl() string { return v.ContentFieldsVideo.Url } 608 609 func (v *InnerQueryFragmentOtherLeafVideo) UnmarshalJSON(b []byte) error { 610 611 if string(b) == "null" { 612 return nil 613 } 614 615 var firstPass struct { 616 *InnerQueryFragmentOtherLeafVideo 617 graphql.NoUnmarshalJSON 618 } 619 firstPass.InnerQueryFragmentOtherLeafVideo = v 620 621 err := json.Unmarshal(b, &firstPass) 622 if err != nil { 623 return err 624 } 625 626 err = json.Unmarshal( 627 b, &v.MoreVideoFields) 628 if err != nil { 629 return err 630 } 631 err = json.Unmarshal( 632 b, &v.ContentFieldsVideo) 633 if err != nil { 634 return err 635 } 636 return nil 637 } 638 639 type __premarshalInnerQueryFragmentOtherLeafVideo struct { 640 Typename string `json:"__typename"` 641 642 Id *testutil.ID `json:"id"` 643 644 Parent *MoreVideoFieldsParentTopic `json:"parent"` 645 646 Name string `json:"name"` 647 648 Url string `json:"url"` 649 } 650 651 func (v *InnerQueryFragmentOtherLeafVideo) MarshalJSON() ([]byte, error) { 652 premarshaled, err := v.__premarshalJSON() 653 if err != nil { 654 return nil, err 655 } 656 return json.Marshal(premarshaled) 657 } 658 659 func (v *InnerQueryFragmentOtherLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentOtherLeafVideo, error) { 660 var retval __premarshalInnerQueryFragmentOtherLeafVideo 661 662 retval.Typename = v.Typename 663 retval.Id = v.MoreVideoFields.Id 664 retval.Parent = v.MoreVideoFields.Parent 665 retval.Name = v.ContentFieldsVideo.Name 666 retval.Url = v.ContentFieldsVideo.Url 667 return &retval, nil 668 } 669 670 // InnerQueryFragmentRandomItemArticle includes the requested fields of the GraphQL type Article. 671 type InnerQueryFragmentRandomItemArticle struct { 672 Typename string `json:"__typename"` 673 // ID is the identifier of the content. 674 Id testutil.ID `json:"id"` 675 Name string `json:"name"` 676 ContentFieldsArticle `json:"-"` 677 } 678 679 // GetTypename returns InnerQueryFragmentRandomItemArticle.Typename, and is useful for accessing the field via an interface. 680 func (v *InnerQueryFragmentRandomItemArticle) GetTypename() string { return v.Typename } 681 682 // GetId returns InnerQueryFragmentRandomItemArticle.Id, and is useful for accessing the field via an interface. 683 func (v *InnerQueryFragmentRandomItemArticle) GetId() testutil.ID { return v.Id } 684 685 // GetName returns InnerQueryFragmentRandomItemArticle.Name, and is useful for accessing the field via an interface. 686 func (v *InnerQueryFragmentRandomItemArticle) GetName() string { return v.Name } 687 688 // GetUrl returns InnerQueryFragmentRandomItemArticle.Url, and is useful for accessing the field via an interface. 689 func (v *InnerQueryFragmentRandomItemArticle) GetUrl() string { return v.ContentFieldsArticle.Url } 690 691 func (v *InnerQueryFragmentRandomItemArticle) UnmarshalJSON(b []byte) error { 692 693 if string(b) == "null" { 694 return nil 695 } 696 697 var firstPass struct { 698 *InnerQueryFragmentRandomItemArticle 699 graphql.NoUnmarshalJSON 700 } 701 firstPass.InnerQueryFragmentRandomItemArticle = v 702 703 err := json.Unmarshal(b, &firstPass) 704 if err != nil { 705 return err 706 } 707 708 err = json.Unmarshal( 709 b, &v.ContentFieldsArticle) 710 if err != nil { 711 return err 712 } 713 return nil 714 } 715 716 type __premarshalInnerQueryFragmentRandomItemArticle struct { 717 Typename string `json:"__typename"` 718 719 Id testutil.ID `json:"id"` 720 721 Name string `json:"name"` 722 723 Url string `json:"url"` 724 } 725 726 func (v *InnerQueryFragmentRandomItemArticle) MarshalJSON() ([]byte, error) { 727 premarshaled, err := v.__premarshalJSON() 728 if err != nil { 729 return nil, err 730 } 731 return json.Marshal(premarshaled) 732 } 733 734 func (v *InnerQueryFragmentRandomItemArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemArticle, error) { 735 var retval __premarshalInnerQueryFragmentRandomItemArticle 736 737 retval.Typename = v.Typename 738 retval.Id = v.Id 739 retval.Name = v.Name 740 retval.Url = v.ContentFieldsArticle.Url 741 return &retval, nil 742 } 743 744 // InnerQueryFragmentRandomItemContent includes the requested fields of the GraphQL interface Content. 745 // 746 // InnerQueryFragmentRandomItemContent is implemented by the following types: 747 // InnerQueryFragmentRandomItemArticle 748 // InnerQueryFragmentRandomItemVideo 749 // InnerQueryFragmentRandomItemTopic 750 // The GraphQL type's documentation follows. 751 // 752 // Content is implemented by various types like Article, Video, and Topic. 753 type InnerQueryFragmentRandomItemContent interface { 754 implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() 755 // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). 756 GetTypename() string 757 // GetId returns the interface-field "id" from its implementation. 758 // The GraphQL interface field's documentation follows. 759 // 760 // ID is the identifier of the content. 761 GetId() testutil.ID 762 // GetName returns the interface-field "name" from its implementation. 763 GetName() string 764 ContentFields 765 GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) 766 GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) 767 GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) 768 } 769 770 func (v *InnerQueryFragmentRandomItemArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() { 771 } 772 func (v *InnerQueryFragmentRandomItemArticle) GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) { 773 return v, true 774 } 775 func (v *InnerQueryFragmentRandomItemArticle) GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) { 776 return nil, false 777 } 778 func (v *InnerQueryFragmentRandomItemArticle) GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) { 779 return nil, false 780 } 781 func (v *InnerQueryFragmentRandomItemVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() { 782 } 783 func (v *InnerQueryFragmentRandomItemVideo) GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) { 784 return nil, false 785 } 786 func (v *InnerQueryFragmentRandomItemVideo) GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) { 787 return v, true 788 } 789 func (v *InnerQueryFragmentRandomItemVideo) GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) { 790 return nil, false 791 } 792 func (v *InnerQueryFragmentRandomItemTopic) implementsGraphQLInterfaceInnerQueryFragmentRandomItemContent() { 793 } 794 func (v *InnerQueryFragmentRandomItemTopic) GetContentArticle() (*InnerQueryFragmentRandomItemArticle, bool) { 795 return nil, false 796 } 797 func (v *InnerQueryFragmentRandomItemTopic) GetContentVideo() (*InnerQueryFragmentRandomItemVideo, bool) { 798 return nil, false 799 } 800 func (v *InnerQueryFragmentRandomItemTopic) GetContentTopic() (*InnerQueryFragmentRandomItemTopic, bool) { 801 return v, true 802 } 803 804 func __unmarshalInnerQueryFragmentRandomItemContent(b []byte, v *InnerQueryFragmentRandomItemContent) error { 805 if string(b) == "null" { 806 return nil 807 } 808 809 var tn struct { 810 TypeName string `json:"__typename"` 811 } 812 err := json.Unmarshal(b, &tn) 813 if err != nil { 814 return err 815 } 816 817 switch tn.TypeName { 818 case "Article": 819 *v = new(InnerQueryFragmentRandomItemArticle) 820 return json.Unmarshal(b, *v) 821 case "Video": 822 *v = new(InnerQueryFragmentRandomItemVideo) 823 return json.Unmarshal(b, *v) 824 case "Topic": 825 *v = new(InnerQueryFragmentRandomItemTopic) 826 return json.Unmarshal(b, *v) 827 case "": 828 return fmt.Errorf( 829 "response was missing Content.__typename") 830 default: 831 return fmt.Errorf( 832 `unexpected concrete type for InnerQueryFragmentRandomItemContent: "%v"`, tn.TypeName) 833 } 834 } 835 836 func __marshalInnerQueryFragmentRandomItemContent(v *InnerQueryFragmentRandomItemContent) ([]byte, error) { 837 838 var typename string 839 switch v := (*v).(type) { 840 case *InnerQueryFragmentRandomItemArticle: 841 typename = "Article" 842 843 premarshaled, err := v.__premarshalJSON() 844 if err != nil { 845 return nil, err 846 } 847 result := struct { 848 TypeName string `json:"__typename"` 849 *__premarshalInnerQueryFragmentRandomItemArticle 850 }{typename, premarshaled} 851 return json.Marshal(result) 852 case *InnerQueryFragmentRandomItemVideo: 853 typename = "Video" 854 855 premarshaled, err := v.__premarshalJSON() 856 if err != nil { 857 return nil, err 858 } 859 result := struct { 860 TypeName string `json:"__typename"` 861 *__premarshalInnerQueryFragmentRandomItemVideo 862 }{typename, premarshaled} 863 return json.Marshal(result) 864 case *InnerQueryFragmentRandomItemTopic: 865 typename = "Topic" 866 867 premarshaled, err := v.__premarshalJSON() 868 if err != nil { 869 return nil, err 870 } 871 result := struct { 872 TypeName string `json:"__typename"` 873 *__premarshalInnerQueryFragmentRandomItemTopic 874 }{typename, premarshaled} 875 return json.Marshal(result) 876 case nil: 877 return []byte("null"), nil 878 default: 879 return nil, fmt.Errorf( 880 `unexpected concrete type for InnerQueryFragmentRandomItemContent: "%T"`, v) 881 } 882 } 883 884 // InnerQueryFragmentRandomItemTopic includes the requested fields of the GraphQL type Topic. 885 type InnerQueryFragmentRandomItemTopic struct { 886 Typename string `json:"__typename"` 887 // ID is the identifier of the content. 888 Id testutil.ID `json:"id"` 889 Name string `json:"name"` 890 ContentFieldsTopic `json:"-"` 891 } 892 893 // GetTypename returns InnerQueryFragmentRandomItemTopic.Typename, and is useful for accessing the field via an interface. 894 func (v *InnerQueryFragmentRandomItemTopic) GetTypename() string { return v.Typename } 895 896 // GetId returns InnerQueryFragmentRandomItemTopic.Id, and is useful for accessing the field via an interface. 897 func (v *InnerQueryFragmentRandomItemTopic) GetId() testutil.ID { return v.Id } 898 899 // GetName returns InnerQueryFragmentRandomItemTopic.Name, and is useful for accessing the field via an interface. 900 func (v *InnerQueryFragmentRandomItemTopic) GetName() string { return v.Name } 901 902 // GetUrl returns InnerQueryFragmentRandomItemTopic.Url, and is useful for accessing the field via an interface. 903 func (v *InnerQueryFragmentRandomItemTopic) GetUrl() string { return v.ContentFieldsTopic.Url } 904 905 func (v *InnerQueryFragmentRandomItemTopic) UnmarshalJSON(b []byte) error { 906 907 if string(b) == "null" { 908 return nil 909 } 910 911 var firstPass struct { 912 *InnerQueryFragmentRandomItemTopic 913 graphql.NoUnmarshalJSON 914 } 915 firstPass.InnerQueryFragmentRandomItemTopic = v 916 917 err := json.Unmarshal(b, &firstPass) 918 if err != nil { 919 return err 920 } 921 922 err = json.Unmarshal( 923 b, &v.ContentFieldsTopic) 924 if err != nil { 925 return err 926 } 927 return nil 928 } 929 930 type __premarshalInnerQueryFragmentRandomItemTopic struct { 931 Typename string `json:"__typename"` 932 933 Id testutil.ID `json:"id"` 934 935 Name string `json:"name"` 936 937 Url string `json:"url"` 938 } 939 940 func (v *InnerQueryFragmentRandomItemTopic) MarshalJSON() ([]byte, error) { 941 premarshaled, err := v.__premarshalJSON() 942 if err != nil { 943 return nil, err 944 } 945 return json.Marshal(premarshaled) 946 } 947 948 func (v *InnerQueryFragmentRandomItemTopic) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemTopic, error) { 949 var retval __premarshalInnerQueryFragmentRandomItemTopic 950 951 retval.Typename = v.Typename 952 retval.Id = v.Id 953 retval.Name = v.Name 954 retval.Url = v.ContentFieldsTopic.Url 955 return &retval, nil 956 } 957 958 // InnerQueryFragmentRandomItemVideo includes the requested fields of the GraphQL type Video. 959 type InnerQueryFragmentRandomItemVideo struct { 960 Typename string `json:"__typename"` 961 // ID is the identifier of the content. 962 Id testutil.ID `json:"id"` 963 Name string `json:"name"` 964 VideoFields `json:"-"` 965 ContentFieldsVideo `json:"-"` 966 } 967 968 // GetTypename returns InnerQueryFragmentRandomItemVideo.Typename, and is useful for accessing the field via an interface. 969 func (v *InnerQueryFragmentRandomItemVideo) GetTypename() string { return v.Typename } 970 971 // GetId returns InnerQueryFragmentRandomItemVideo.Id, and is useful for accessing the field via an interface. 972 func (v *InnerQueryFragmentRandomItemVideo) GetId() testutil.ID { return v.Id } 973 974 // GetName returns InnerQueryFragmentRandomItemVideo.Name, and is useful for accessing the field via an interface. 975 func (v *InnerQueryFragmentRandomItemVideo) GetName() string { return v.Name } 976 977 // GetUrl returns InnerQueryFragmentRandomItemVideo.Url, and is useful for accessing the field via an interface. 978 func (v *InnerQueryFragmentRandomItemVideo) GetUrl() string { return v.VideoFields.Url } 979 980 // GetDuration returns InnerQueryFragmentRandomItemVideo.Duration, and is useful for accessing the field via an interface. 981 func (v *InnerQueryFragmentRandomItemVideo) GetDuration() int { return v.VideoFields.Duration } 982 983 // GetThumbnail returns InnerQueryFragmentRandomItemVideo.Thumbnail, and is useful for accessing the field via an interface. 984 func (v *InnerQueryFragmentRandomItemVideo) GetThumbnail() VideoFieldsThumbnail { 985 return v.VideoFields.Thumbnail 986 } 987 988 func (v *InnerQueryFragmentRandomItemVideo) UnmarshalJSON(b []byte) error { 989 990 if string(b) == "null" { 991 return nil 992 } 993 994 var firstPass struct { 995 *InnerQueryFragmentRandomItemVideo 996 graphql.NoUnmarshalJSON 997 } 998 firstPass.InnerQueryFragmentRandomItemVideo = v 999 1000 err := json.Unmarshal(b, &firstPass) 1001 if err != nil { 1002 return err 1003 } 1004 1005 err = json.Unmarshal( 1006 b, &v.VideoFields) 1007 if err != nil { 1008 return err 1009 } 1010 err = json.Unmarshal( 1011 b, &v.ContentFieldsVideo) 1012 if err != nil { 1013 return err 1014 } 1015 return nil 1016 } 1017 1018 type __premarshalInnerQueryFragmentRandomItemVideo struct { 1019 Typename string `json:"__typename"` 1020 1021 Id testutil.ID `json:"id"` 1022 1023 Name string `json:"name"` 1024 1025 Url string `json:"url"` 1026 1027 Duration int `json:"duration"` 1028 1029 Thumbnail VideoFieldsThumbnail `json:"thumbnail"` 1030 } 1031 1032 func (v *InnerQueryFragmentRandomItemVideo) MarshalJSON() ([]byte, error) { 1033 premarshaled, err := v.__premarshalJSON() 1034 if err != nil { 1035 return nil, err 1036 } 1037 return json.Marshal(premarshaled) 1038 } 1039 1040 func (v *InnerQueryFragmentRandomItemVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomItemVideo, error) { 1041 var retval __premarshalInnerQueryFragmentRandomItemVideo 1042 1043 retval.Typename = v.Typename 1044 retval.Id = v.Id 1045 retval.Name = v.Name 1046 retval.Url = v.VideoFields.Url 1047 retval.Duration = v.VideoFields.Duration 1048 retval.Thumbnail = v.VideoFields.Thumbnail 1049 return &retval, nil 1050 } 1051 1052 // InnerQueryFragmentRandomLeafArticle includes the requested fields of the GraphQL type Article. 1053 type InnerQueryFragmentRandomLeafArticle struct { 1054 Typename string `json:"__typename"` 1055 ContentFieldsArticle `json:"-"` 1056 } 1057 1058 // GetTypename returns InnerQueryFragmentRandomLeafArticle.Typename, and is useful for accessing the field via an interface. 1059 func (v *InnerQueryFragmentRandomLeafArticle) GetTypename() string { return v.Typename } 1060 1061 // GetName returns InnerQueryFragmentRandomLeafArticle.Name, and is useful for accessing the field via an interface. 1062 func (v *InnerQueryFragmentRandomLeafArticle) GetName() string { return v.ContentFieldsArticle.Name } 1063 1064 // GetUrl returns InnerQueryFragmentRandomLeafArticle.Url, and is useful for accessing the field via an interface. 1065 func (v *InnerQueryFragmentRandomLeafArticle) GetUrl() string { return v.ContentFieldsArticle.Url } 1066 1067 func (v *InnerQueryFragmentRandomLeafArticle) UnmarshalJSON(b []byte) error { 1068 1069 if string(b) == "null" { 1070 return nil 1071 } 1072 1073 var firstPass struct { 1074 *InnerQueryFragmentRandomLeafArticle 1075 graphql.NoUnmarshalJSON 1076 } 1077 firstPass.InnerQueryFragmentRandomLeafArticle = v 1078 1079 err := json.Unmarshal(b, &firstPass) 1080 if err != nil { 1081 return err 1082 } 1083 1084 err = json.Unmarshal( 1085 b, &v.ContentFieldsArticle) 1086 if err != nil { 1087 return err 1088 } 1089 return nil 1090 } 1091 1092 type __premarshalInnerQueryFragmentRandomLeafArticle struct { 1093 Typename string `json:"__typename"` 1094 1095 Name string `json:"name"` 1096 1097 Url string `json:"url"` 1098 } 1099 1100 func (v *InnerQueryFragmentRandomLeafArticle) MarshalJSON() ([]byte, error) { 1101 premarshaled, err := v.__premarshalJSON() 1102 if err != nil { 1103 return nil, err 1104 } 1105 return json.Marshal(premarshaled) 1106 } 1107 1108 func (v *InnerQueryFragmentRandomLeafArticle) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafArticle, error) { 1109 var retval __premarshalInnerQueryFragmentRandomLeafArticle 1110 1111 retval.Typename = v.Typename 1112 retval.Name = v.ContentFieldsArticle.Name 1113 retval.Url = v.ContentFieldsArticle.Url 1114 return &retval, nil 1115 } 1116 1117 // InnerQueryFragmentRandomLeafLeafContent includes the requested fields of the GraphQL interface LeafContent. 1118 // 1119 // InnerQueryFragmentRandomLeafLeafContent is implemented by the following types: 1120 // InnerQueryFragmentRandomLeafArticle 1121 // InnerQueryFragmentRandomLeafVideo 1122 // The GraphQL type's documentation follows. 1123 // 1124 // LeafContent represents content items that can't have child-nodes. 1125 type InnerQueryFragmentRandomLeafLeafContent interface { 1126 implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() 1127 // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). 1128 GetTypename() string 1129 GetLeafContentArticle() (*InnerQueryFragmentRandomLeafArticle, bool) 1130 GetLeafContentVideo() (*InnerQueryFragmentRandomLeafVideo, bool) 1131 } 1132 1133 func (v *InnerQueryFragmentRandomLeafArticle) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() { 1134 } 1135 func (v *InnerQueryFragmentRandomLeafArticle) GetLeafContentArticle() (*InnerQueryFragmentRandomLeafArticle, bool) { 1136 return v, true 1137 } 1138 func (v *InnerQueryFragmentRandomLeafArticle) GetLeafContentVideo() (*InnerQueryFragmentRandomLeafVideo, bool) { 1139 return nil, false 1140 } 1141 func (v *InnerQueryFragmentRandomLeafVideo) implementsGraphQLInterfaceInnerQueryFragmentRandomLeafLeafContent() { 1142 } 1143 func (v *InnerQueryFragmentRandomLeafVideo) GetLeafContentArticle() (*InnerQueryFragmentRandomLeafArticle, bool) { 1144 return nil, false 1145 } 1146 func (v *InnerQueryFragmentRandomLeafVideo) GetLeafContentVideo() (*InnerQueryFragmentRandomLeafVideo, bool) { 1147 return v, true 1148 } 1149 1150 func __unmarshalInnerQueryFragmentRandomLeafLeafContent(b []byte, v *InnerQueryFragmentRandomLeafLeafContent) error { 1151 if string(b) == "null" { 1152 return nil 1153 } 1154 1155 var tn struct { 1156 TypeName string `json:"__typename"` 1157 } 1158 err := json.Unmarshal(b, &tn) 1159 if err != nil { 1160 return err 1161 } 1162 1163 switch tn.TypeName { 1164 case "Article": 1165 *v = new(InnerQueryFragmentRandomLeafArticle) 1166 return json.Unmarshal(b, *v) 1167 case "Video": 1168 *v = new(InnerQueryFragmentRandomLeafVideo) 1169 return json.Unmarshal(b, *v) 1170 case "": 1171 return fmt.Errorf( 1172 "response was missing LeafContent.__typename") 1173 default: 1174 return fmt.Errorf( 1175 `unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%v"`, tn.TypeName) 1176 } 1177 } 1178 1179 func __marshalInnerQueryFragmentRandomLeafLeafContent(v *InnerQueryFragmentRandomLeafLeafContent) ([]byte, error) { 1180 1181 var typename string 1182 switch v := (*v).(type) { 1183 case *InnerQueryFragmentRandomLeafArticle: 1184 typename = "Article" 1185 1186 premarshaled, err := v.__premarshalJSON() 1187 if err != nil { 1188 return nil, err 1189 } 1190 result := struct { 1191 TypeName string `json:"__typename"` 1192 *__premarshalInnerQueryFragmentRandomLeafArticle 1193 }{typename, premarshaled} 1194 return json.Marshal(result) 1195 case *InnerQueryFragmentRandomLeafVideo: 1196 typename = "Video" 1197 1198 premarshaled, err := v.__premarshalJSON() 1199 if err != nil { 1200 return nil, err 1201 } 1202 result := struct { 1203 TypeName string `json:"__typename"` 1204 *__premarshalInnerQueryFragmentRandomLeafVideo 1205 }{typename, premarshaled} 1206 return json.Marshal(result) 1207 case nil: 1208 return []byte("null"), nil 1209 default: 1210 return nil, fmt.Errorf( 1211 `unexpected concrete type for InnerQueryFragmentRandomLeafLeafContent: "%T"`, v) 1212 } 1213 } 1214 1215 // InnerQueryFragmentRandomLeafVideo includes the requested fields of the GraphQL type Video. 1216 type InnerQueryFragmentRandomLeafVideo struct { 1217 Typename string `json:"__typename"` 1218 VideoFields `json:"-"` 1219 MoreVideoFields `json:"-"` 1220 ContentFieldsVideo `json:"-"` 1221 } 1222 1223 // GetTypename returns InnerQueryFragmentRandomLeafVideo.Typename, and is useful for accessing the field via an interface. 1224 func (v *InnerQueryFragmentRandomLeafVideo) GetTypename() string { return v.Typename } 1225 1226 // GetId returns InnerQueryFragmentRandomLeafVideo.Id, and is useful for accessing the field via an interface. 1227 func (v *InnerQueryFragmentRandomLeafVideo) GetId() testutil.ID { return v.VideoFields.Id } 1228 1229 // GetName returns InnerQueryFragmentRandomLeafVideo.Name, and is useful for accessing the field via an interface. 1230 func (v *InnerQueryFragmentRandomLeafVideo) GetName() string { return v.VideoFields.Name } 1231 1232 // GetUrl returns InnerQueryFragmentRandomLeafVideo.Url, and is useful for accessing the field via an interface. 1233 func (v *InnerQueryFragmentRandomLeafVideo) GetUrl() string { return v.VideoFields.Url } 1234 1235 // GetDuration returns InnerQueryFragmentRandomLeafVideo.Duration, and is useful for accessing the field via an interface. 1236 func (v *InnerQueryFragmentRandomLeafVideo) GetDuration() int { return v.VideoFields.Duration } 1237 1238 // GetThumbnail returns InnerQueryFragmentRandomLeafVideo.Thumbnail, and is useful for accessing the field via an interface. 1239 func (v *InnerQueryFragmentRandomLeafVideo) GetThumbnail() VideoFieldsThumbnail { 1240 return v.VideoFields.Thumbnail 1241 } 1242 1243 // GetParent returns InnerQueryFragmentRandomLeafVideo.Parent, and is useful for accessing the field via an interface. 1244 func (v *InnerQueryFragmentRandomLeafVideo) GetParent() *MoreVideoFieldsParentTopic { 1245 return v.MoreVideoFields.Parent 1246 } 1247 1248 func (v *InnerQueryFragmentRandomLeafVideo) UnmarshalJSON(b []byte) error { 1249 1250 if string(b) == "null" { 1251 return nil 1252 } 1253 1254 var firstPass struct { 1255 *InnerQueryFragmentRandomLeafVideo 1256 graphql.NoUnmarshalJSON 1257 } 1258 firstPass.InnerQueryFragmentRandomLeafVideo = v 1259 1260 err := json.Unmarshal(b, &firstPass) 1261 if err != nil { 1262 return err 1263 } 1264 1265 err = json.Unmarshal( 1266 b, &v.VideoFields) 1267 if err != nil { 1268 return err 1269 } 1270 err = json.Unmarshal( 1271 b, &v.MoreVideoFields) 1272 if err != nil { 1273 return err 1274 } 1275 err = json.Unmarshal( 1276 b, &v.ContentFieldsVideo) 1277 if err != nil { 1278 return err 1279 } 1280 return nil 1281 } 1282 1283 type __premarshalInnerQueryFragmentRandomLeafVideo struct { 1284 Typename string `json:"__typename"` 1285 1286 Id testutil.ID `json:"id"` 1287 1288 Name string `json:"name"` 1289 1290 Url string `json:"url"` 1291 1292 Duration int `json:"duration"` 1293 1294 Thumbnail VideoFieldsThumbnail `json:"thumbnail"` 1295 1296 Parent *MoreVideoFieldsParentTopic `json:"parent"` 1297 } 1298 1299 func (v *InnerQueryFragmentRandomLeafVideo) MarshalJSON() ([]byte, error) { 1300 premarshaled, err := v.__premarshalJSON() 1301 if err != nil { 1302 return nil, err 1303 } 1304 return json.Marshal(premarshaled) 1305 } 1306 1307 func (v *InnerQueryFragmentRandomLeafVideo) __premarshalJSON() (*__premarshalInnerQueryFragmentRandomLeafVideo, error) { 1308 var retval __premarshalInnerQueryFragmentRandomLeafVideo 1309 1310 retval.Typename = v.Typename 1311 retval.Id = v.VideoFields.Id 1312 retval.Name = v.VideoFields.Name 1313 retval.Url = v.VideoFields.Url 1314 retval.Duration = v.VideoFields.Duration 1315 retval.Thumbnail = v.VideoFields.Thumbnail 1316 retval.Parent = v.MoreVideoFields.Parent 1317 return &retval, nil 1318 } 1319 1320 // MoreVideoFields includes the GraphQL fields of Video requested by the fragment MoreVideoFields. 1321 type MoreVideoFields struct { 1322 // ID is documented in the Content interface. 1323 Id *testutil.ID `json:"id"` 1324 Parent *MoreVideoFieldsParentTopic `json:"parent"` 1325 } 1326 1327 // GetId returns MoreVideoFields.Id, and is useful for accessing the field via an interface. 1328 func (v *MoreVideoFields) GetId() *testutil.ID { return v.Id } 1329 1330 // GetParent returns MoreVideoFields.Parent, and is useful for accessing the field via an interface. 1331 func (v *MoreVideoFields) GetParent() *MoreVideoFieldsParentTopic { return v.Parent } 1332 1333 // MoreVideoFieldsParentTopic includes the requested fields of the GraphQL type Topic. 1334 type MoreVideoFieldsParentTopic struct { 1335 Name *string `json:"name"` 1336 Url *string `json:"url"` 1337 ContentFieldsTopic `json:"-"` 1338 Children []MoreVideoFieldsParentTopicChildrenContent `json:"-"` 1339 } 1340 1341 // GetName returns MoreVideoFieldsParentTopic.Name, and is useful for accessing the field via an interface. 1342 func (v *MoreVideoFieldsParentTopic) GetName() *string { return v.Name } 1343 1344 // GetUrl returns MoreVideoFieldsParentTopic.Url, and is useful for accessing the field via an interface. 1345 func (v *MoreVideoFieldsParentTopic) GetUrl() *string { return v.Url } 1346 1347 // GetChildren returns MoreVideoFieldsParentTopic.Children, and is useful for accessing the field via an interface. 1348 func (v *MoreVideoFieldsParentTopic) GetChildren() []MoreVideoFieldsParentTopicChildrenContent { 1349 return v.Children 1350 } 1351 1352 func (v *MoreVideoFieldsParentTopic) UnmarshalJSON(b []byte) error { 1353 1354 if string(b) == "null" { 1355 return nil 1356 } 1357 1358 var firstPass struct { 1359 *MoreVideoFieldsParentTopic 1360 Children []json.RawMessage `json:"children"` 1361 graphql.NoUnmarshalJSON 1362 } 1363 firstPass.MoreVideoFieldsParentTopic = v 1364 1365 err := json.Unmarshal(b, &firstPass) 1366 if err != nil { 1367 return err 1368 } 1369 1370 err = json.Unmarshal( 1371 b, &v.ContentFieldsTopic) 1372 if err != nil { 1373 return err 1374 } 1375 1376 { 1377 dst := &v.Children 1378 src := firstPass.Children 1379 *dst = make( 1380 []MoreVideoFieldsParentTopicChildrenContent, 1381 len(src)) 1382 for i, src := range src { 1383 dst := &(*dst)[i] 1384 if len(src) != 0 && string(src) != "null" { 1385 err = __unmarshalMoreVideoFieldsParentTopicChildrenContent( 1386 src, dst) 1387 if err != nil { 1388 return fmt.Errorf( 1389 "Unable to unmarshal MoreVideoFieldsParentTopic.Children: %w", err) 1390 } 1391 } 1392 } 1393 } 1394 return nil 1395 } 1396 1397 type __premarshalMoreVideoFieldsParentTopic struct { 1398 Name *string `json:"name"` 1399 1400 Url *string `json:"url"` 1401 1402 Children []json.RawMessage `json:"children"` 1403 } 1404 1405 func (v *MoreVideoFieldsParentTopic) MarshalJSON() ([]byte, error) { 1406 premarshaled, err := v.__premarshalJSON() 1407 if err != nil { 1408 return nil, err 1409 } 1410 return json.Marshal(premarshaled) 1411 } 1412 1413 func (v *MoreVideoFieldsParentTopic) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopic, error) { 1414 var retval __premarshalMoreVideoFieldsParentTopic 1415 1416 retval.Name = v.Name 1417 retval.Url = v.Url 1418 { 1419 1420 dst := &retval.Children 1421 src := v.Children 1422 *dst = make( 1423 []json.RawMessage, 1424 len(src)) 1425 for i, src := range src { 1426 dst := &(*dst)[i] 1427 var err error 1428 *dst, err = __marshalMoreVideoFieldsParentTopicChildrenContent( 1429 &src) 1430 if err != nil { 1431 return nil, fmt.Errorf( 1432 "Unable to marshal MoreVideoFieldsParentTopic.Children: %w", err) 1433 } 1434 } 1435 } 1436 return &retval, nil 1437 } 1438 1439 // MoreVideoFieldsParentTopicChildrenArticle includes the requested fields of the GraphQL type Article. 1440 type MoreVideoFieldsParentTopicChildrenArticle struct { 1441 Typename *string `json:"__typename"` 1442 } 1443 1444 // GetTypename returns MoreVideoFieldsParentTopicChildrenArticle.Typename, and is useful for accessing the field via an interface. 1445 func (v *MoreVideoFieldsParentTopicChildrenArticle) GetTypename() *string { return v.Typename } 1446 1447 // MoreVideoFieldsParentTopicChildrenContent includes the requested fields of the GraphQL interface Content. 1448 // 1449 // MoreVideoFieldsParentTopicChildrenContent is implemented by the following types: 1450 // MoreVideoFieldsParentTopicChildrenArticle 1451 // MoreVideoFieldsParentTopicChildrenVideo 1452 // MoreVideoFieldsParentTopicChildrenTopic 1453 // The GraphQL type's documentation follows. 1454 // 1455 // Content is implemented by various types like Article, Video, and Topic. 1456 type MoreVideoFieldsParentTopicChildrenContent interface { 1457 implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() 1458 // GetTypename returns the receiver's concrete GraphQL type-name (see interface doc for possible values). 1459 GetTypename() *string 1460 GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) 1461 GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) 1462 GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) 1463 } 1464 1465 func (v *MoreVideoFieldsParentTopicChildrenArticle) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() { 1466 } 1467 func (v *MoreVideoFieldsParentTopicChildrenArticle) GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) { 1468 return v, true 1469 } 1470 func (v *MoreVideoFieldsParentTopicChildrenArticle) GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) { 1471 return nil, false 1472 } 1473 func (v *MoreVideoFieldsParentTopicChildrenArticle) GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) { 1474 return nil, false 1475 } 1476 func (v *MoreVideoFieldsParentTopicChildrenVideo) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() { 1477 } 1478 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) { 1479 return nil, false 1480 } 1481 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) { 1482 return v, true 1483 } 1484 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) { 1485 return nil, false 1486 } 1487 func (v *MoreVideoFieldsParentTopicChildrenTopic) implementsGraphQLInterfaceMoreVideoFieldsParentTopicChildrenContent() { 1488 } 1489 func (v *MoreVideoFieldsParentTopicChildrenTopic) GetContentArticle() (*MoreVideoFieldsParentTopicChildrenArticle, bool) { 1490 return nil, false 1491 } 1492 func (v *MoreVideoFieldsParentTopicChildrenTopic) GetContentVideo() (*MoreVideoFieldsParentTopicChildrenVideo, bool) { 1493 return nil, false 1494 } 1495 func (v *MoreVideoFieldsParentTopicChildrenTopic) GetContentTopic() (*MoreVideoFieldsParentTopicChildrenTopic, bool) { 1496 return v, true 1497 } 1498 1499 func __unmarshalMoreVideoFieldsParentTopicChildrenContent(b []byte, v *MoreVideoFieldsParentTopicChildrenContent) error { 1500 if string(b) == "null" { 1501 return nil 1502 } 1503 1504 var tn struct { 1505 TypeName string `json:"__typename"` 1506 } 1507 err := json.Unmarshal(b, &tn) 1508 if err != nil { 1509 return err 1510 } 1511 1512 switch tn.TypeName { 1513 case "Article": 1514 *v = new(MoreVideoFieldsParentTopicChildrenArticle) 1515 return json.Unmarshal(b, *v) 1516 case "Video": 1517 *v = new(MoreVideoFieldsParentTopicChildrenVideo) 1518 return json.Unmarshal(b, *v) 1519 case "Topic": 1520 *v = new(MoreVideoFieldsParentTopicChildrenTopic) 1521 return json.Unmarshal(b, *v) 1522 case "": 1523 return fmt.Errorf( 1524 "response was missing Content.__typename") 1525 default: 1526 return fmt.Errorf( 1527 `unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%v"`, tn.TypeName) 1528 } 1529 } 1530 1531 func __marshalMoreVideoFieldsParentTopicChildrenContent(v *MoreVideoFieldsParentTopicChildrenContent) ([]byte, error) { 1532 1533 var typename string 1534 switch v := (*v).(type) { 1535 case *MoreVideoFieldsParentTopicChildrenArticle: 1536 typename = "Article" 1537 1538 result := struct { 1539 TypeName string `json:"__typename"` 1540 *MoreVideoFieldsParentTopicChildrenArticle 1541 }{typename, v} 1542 return json.Marshal(result) 1543 case *MoreVideoFieldsParentTopicChildrenVideo: 1544 typename = "Video" 1545 1546 premarshaled, err := v.__premarshalJSON() 1547 if err != nil { 1548 return nil, err 1549 } 1550 result := struct { 1551 TypeName string `json:"__typename"` 1552 *__premarshalMoreVideoFieldsParentTopicChildrenVideo 1553 }{typename, premarshaled} 1554 return json.Marshal(result) 1555 case *MoreVideoFieldsParentTopicChildrenTopic: 1556 typename = "Topic" 1557 1558 result := struct { 1559 TypeName string `json:"__typename"` 1560 *MoreVideoFieldsParentTopicChildrenTopic 1561 }{typename, v} 1562 return json.Marshal(result) 1563 case nil: 1564 return []byte("null"), nil 1565 default: 1566 return nil, fmt.Errorf( 1567 `unexpected concrete type for MoreVideoFieldsParentTopicChildrenContent: "%T"`, v) 1568 } 1569 } 1570 1571 // MoreVideoFieldsParentTopicChildrenTopic includes the requested fields of the GraphQL type Topic. 1572 type MoreVideoFieldsParentTopicChildrenTopic struct { 1573 Typename *string `json:"__typename"` 1574 } 1575 1576 // GetTypename returns MoreVideoFieldsParentTopicChildrenTopic.Typename, and is useful for accessing the field via an interface. 1577 func (v *MoreVideoFieldsParentTopicChildrenTopic) GetTypename() *string { return v.Typename } 1578 1579 // MoreVideoFieldsParentTopicChildrenVideo includes the requested fields of the GraphQL type Video. 1580 type MoreVideoFieldsParentTopicChildrenVideo struct { 1581 Typename *string `json:"__typename"` 1582 VideoFields `json:"-"` 1583 } 1584 1585 // GetTypename returns MoreVideoFieldsParentTopicChildrenVideo.Typename, and is useful for accessing the field via an interface. 1586 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetTypename() *string { return v.Typename } 1587 1588 // GetId returns MoreVideoFieldsParentTopicChildrenVideo.Id, and is useful for accessing the field via an interface. 1589 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetId() testutil.ID { return v.VideoFields.Id } 1590 1591 // GetName returns MoreVideoFieldsParentTopicChildrenVideo.Name, and is useful for accessing the field via an interface. 1592 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetName() string { return v.VideoFields.Name } 1593 1594 // GetUrl returns MoreVideoFieldsParentTopicChildrenVideo.Url, and is useful for accessing the field via an interface. 1595 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetUrl() string { return v.VideoFields.Url } 1596 1597 // GetDuration returns MoreVideoFieldsParentTopicChildrenVideo.Duration, and is useful for accessing the field via an interface. 1598 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetDuration() int { return v.VideoFields.Duration } 1599 1600 // GetThumbnail returns MoreVideoFieldsParentTopicChildrenVideo.Thumbnail, and is useful for accessing the field via an interface. 1601 func (v *MoreVideoFieldsParentTopicChildrenVideo) GetThumbnail() VideoFieldsThumbnail { 1602 return v.VideoFields.Thumbnail 1603 } 1604 1605 func (v *MoreVideoFieldsParentTopicChildrenVideo) UnmarshalJSON(b []byte) error { 1606 1607 if string(b) == "null" { 1608 return nil 1609 } 1610 1611 var firstPass struct { 1612 *MoreVideoFieldsParentTopicChildrenVideo 1613 graphql.NoUnmarshalJSON 1614 } 1615 firstPass.MoreVideoFieldsParentTopicChildrenVideo = v 1616 1617 err := json.Unmarshal(b, &firstPass) 1618 if err != nil { 1619 return err 1620 } 1621 1622 err = json.Unmarshal( 1623 b, &v.VideoFields) 1624 if err != nil { 1625 return err 1626 } 1627 return nil 1628 } 1629 1630 type __premarshalMoreVideoFieldsParentTopicChildrenVideo struct { 1631 Typename *string `json:"__typename"` 1632 1633 Id testutil.ID `json:"id"` 1634 1635 Name string `json:"name"` 1636 1637 Url string `json:"url"` 1638 1639 Duration int `json:"duration"` 1640 1641 Thumbnail VideoFieldsThumbnail `json:"thumbnail"` 1642 } 1643 1644 func (v *MoreVideoFieldsParentTopicChildrenVideo) MarshalJSON() ([]byte, error) { 1645 premarshaled, err := v.__premarshalJSON() 1646 if err != nil { 1647 return nil, err 1648 } 1649 return json.Marshal(premarshaled) 1650 } 1651 1652 func (v *MoreVideoFieldsParentTopicChildrenVideo) __premarshalJSON() (*__premarshalMoreVideoFieldsParentTopicChildrenVideo, error) { 1653 var retval __premarshalMoreVideoFieldsParentTopicChildrenVideo 1654 1655 retval.Typename = v.Typename 1656 retval.Id = v.VideoFields.Id 1657 retval.Name = v.VideoFields.Name 1658 retval.Url = v.VideoFields.Url 1659 retval.Duration = v.VideoFields.Duration 1660 retval.Thumbnail = v.VideoFields.Thumbnail 1661 return &retval, nil 1662 } 1663 1664 // QueryFragment includes the GraphQL fields of Query requested by the fragment QueryFragment. 1665 // The GraphQL type's documentation follows. 1666 // 1667 // Query's description is probably ignored by almost all callers. 1668 type QueryFragment struct { 1669 InnerQueryFragment `json:"-"` 1670 } 1671 1672 // GetRandomItem returns QueryFragment.RandomItem, and is useful for accessing the field via an interface. 1673 func (v *QueryFragment) GetRandomItem() InnerQueryFragmentRandomItemContent { 1674 return v.InnerQueryFragment.RandomItem 1675 } 1676 1677 // GetRandomLeaf returns QueryFragment.RandomLeaf, and is useful for accessing the field via an interface. 1678 func (v *QueryFragment) GetRandomLeaf() InnerQueryFragmentRandomLeafLeafContent { 1679 return v.InnerQueryFragment.RandomLeaf 1680 } 1681 1682 // GetOtherLeaf returns QueryFragment.OtherLeaf, and is useful for accessing the field via an interface. 1683 func (v *QueryFragment) GetOtherLeaf() InnerQueryFragmentOtherLeafLeafContent { 1684 return v.InnerQueryFragment.OtherLeaf 1685 } 1686 1687 func (v *QueryFragment) UnmarshalJSON(b []byte) error { 1688 1689 if string(b) == "null" { 1690 return nil 1691 } 1692 1693 var firstPass struct { 1694 *QueryFragment 1695 graphql.NoUnmarshalJSON 1696 } 1697 firstPass.QueryFragment = v 1698 1699 err := json.Unmarshal(b, &firstPass) 1700 if err != nil { 1701 return err 1702 } 1703 1704 err = json.Unmarshal( 1705 b, &v.InnerQueryFragment) 1706 if err != nil { 1707 return err 1708 } 1709 return nil 1710 } 1711 1712 type __premarshalQueryFragment struct { 1713 RandomItem json.RawMessage `json:"randomItem"` 1714 1715 RandomLeaf json.RawMessage `json:"randomLeaf"` 1716 1717 OtherLeaf json.RawMessage `json:"otherLeaf"` 1718 } 1719 1720 func (v *QueryFragment) MarshalJSON() ([]byte, error) { 1721 premarshaled, err := v.__premarshalJSON() 1722 if err != nil { 1723 return nil, err 1724 } 1725 return json.Marshal(premarshaled) 1726 } 1727 1728 func (v *QueryFragment) __premarshalJSON() (*__premarshalQueryFragment, error) { 1729 var retval __premarshalQueryFragment 1730 1731 { 1732 1733 dst := &retval.RandomItem 1734 src := v.InnerQueryFragment.RandomItem 1735 var err error 1736 *dst, err = __marshalInnerQueryFragmentRandomItemContent( 1737 &src) 1738 if err != nil { 1739 return nil, fmt.Errorf( 1740 "Unable to marshal QueryFragment.InnerQueryFragment.RandomItem: %w", err) 1741 } 1742 } 1743 { 1744 1745 dst := &retval.RandomLeaf 1746 src := v.InnerQueryFragment.RandomLeaf 1747 var err error 1748 *dst, err = __marshalInnerQueryFragmentRandomLeafLeafContent( 1749 &src) 1750 if err != nil { 1751 return nil, fmt.Errorf( 1752 "Unable to marshal QueryFragment.InnerQueryFragment.RandomLeaf: %w", err) 1753 } 1754 } 1755 { 1756 1757 dst := &retval.OtherLeaf 1758 src := v.InnerQueryFragment.OtherLeaf 1759 var err error 1760 *dst, err = __marshalInnerQueryFragmentOtherLeafLeafContent( 1761 &src) 1762 if err != nil { 1763 return nil, fmt.Errorf( 1764 "Unable to marshal QueryFragment.InnerQueryFragment.OtherLeaf: %w", err) 1765 } 1766 } 1767 return &retval, nil 1768 } 1769 1770 // VideoFields includes the GraphQL fields of Video requested by the fragment VideoFields. 1771 type VideoFields struct { 1772 // ID is documented in the Content interface. 1773 Id testutil.ID `json:"id"` 1774 Name string `json:"name"` 1775 Url string `json:"url"` 1776 Duration int `json:"duration"` 1777 Thumbnail VideoFieldsThumbnail `json:"thumbnail"` 1778 ContentFieldsVideo `json:"-"` 1779 } 1780 1781 // GetId returns VideoFields.Id, and is useful for accessing the field via an interface. 1782 func (v *VideoFields) GetId() testutil.ID { return v.Id } 1783 1784 // GetName returns VideoFields.Name, and is useful for accessing the field via an interface. 1785 func (v *VideoFields) GetName() string { return v.Name } 1786 1787 // GetUrl returns VideoFields.Url, and is useful for accessing the field via an interface. 1788 func (v *VideoFields) GetUrl() string { return v.Url } 1789 1790 // GetDuration returns VideoFields.Duration, and is useful for accessing the field via an interface. 1791 func (v *VideoFields) GetDuration() int { return v.Duration } 1792 1793 // GetThumbnail returns VideoFields.Thumbnail, and is useful for accessing the field via an interface. 1794 func (v *VideoFields) GetThumbnail() VideoFieldsThumbnail { return v.Thumbnail } 1795 1796 func (v *VideoFields) UnmarshalJSON(b []byte) error { 1797 1798 if string(b) == "null" { 1799 return nil 1800 } 1801 1802 var firstPass struct { 1803 *VideoFields 1804 graphql.NoUnmarshalJSON 1805 } 1806 firstPass.VideoFields = v 1807 1808 err := json.Unmarshal(b, &firstPass) 1809 if err != nil { 1810 return err 1811 } 1812 1813 err = json.Unmarshal( 1814 b, &v.ContentFieldsVideo) 1815 if err != nil { 1816 return err 1817 } 1818 return nil 1819 } 1820 1821 type __premarshalVideoFields struct { 1822 Id testutil.ID `json:"id"` 1823 1824 Name string `json:"name"` 1825 1826 Url string `json:"url"` 1827 1828 Duration int `json:"duration"` 1829 1830 Thumbnail VideoFieldsThumbnail `json:"thumbnail"` 1831 } 1832 1833 func (v *VideoFields) MarshalJSON() ([]byte, error) { 1834 premarshaled, err := v.__premarshalJSON() 1835 if err != nil { 1836 return nil, err 1837 } 1838 return json.Marshal(premarshaled) 1839 } 1840 1841 func (v *VideoFields) __premarshalJSON() (*__premarshalVideoFields, error) { 1842 var retval __premarshalVideoFields 1843 1844 retval.Id = v.Id 1845 retval.Name = v.Name 1846 retval.Url = v.Url 1847 retval.Duration = v.Duration 1848 retval.Thumbnail = v.Thumbnail 1849 return &retval, nil 1850 } 1851 1852 // VideoFieldsThumbnail includes the requested fields of the GraphQL type Thumbnail. 1853 type VideoFieldsThumbnail struct { 1854 Id testutil.ID `json:"id"` 1855 } 1856 1857 // GetId returns VideoFieldsThumbnail.Id, and is useful for accessing the field via an interface. 1858 func (v *VideoFieldsThumbnail) GetId() testutil.ID { return v.Id } 1859 1860 func ComplexNamedFragments( 1861 client graphql.Client, 1862 ) (*ComplexNamedFragmentsResponse, error) { 1863 req := &graphql.Request{ 1864 OpName: "ComplexNamedFragments", 1865 Query: ` 1866 query ComplexNamedFragments { 1867 ... on Query { 1868 ... QueryFragment 1869 } 1870 } 1871 fragment QueryFragment on Query { 1872 ... InnerQueryFragment 1873 } 1874 fragment InnerQueryFragment on Query { 1875 randomItem { 1876 __typename 1877 id 1878 name 1879 ... VideoFields 1880 ... ContentFields 1881 } 1882 randomLeaf { 1883 __typename 1884 ... VideoFields 1885 ... MoreVideoFields 1886 ... ContentFields 1887 } 1888 otherLeaf: randomLeaf { 1889 __typename 1890 ... on Video { 1891 ... MoreVideoFields 1892 ... ContentFields 1893 } 1894 ... ContentFields 1895 } 1896 } 1897 fragment VideoFields on Video { 1898 id 1899 name 1900 url 1901 duration 1902 thumbnail { 1903 id 1904 } 1905 ... ContentFields 1906 } 1907 fragment ContentFields on Content { 1908 name 1909 url 1910 } 1911 fragment MoreVideoFields on Video { 1912 id 1913 parent { 1914 name 1915 url 1916 ... ContentFields 1917 children { 1918 __typename 1919 ... VideoFields 1920 } 1921 } 1922 } 1923 `, 1924 } 1925 var err error 1926 1927 var data ComplexNamedFragmentsResponse 1928 resp := &graphql.Response{Data: &data} 1929 1930 err = client.MakeRequest( 1931 nil, 1932 req, 1933 resp, 1934 ) 1935 1936 return &data, err 1937 } 1938