@@ -691,3 +691,100 @@ func (r *GroupsPageAutoPager[T]) Err() error {
691
691
func (r * GroupsPageAutoPager [T ]) Index () int {
692
692
return r .run
693
693
}
694
+
695
+ type MembersPage [T any ] struct {
696
+ Members []T `json:"members"`
697
+ NextToken string `json:"nextToken"`
698
+ JSON membersPageJSON `json:"-"`
699
+ cfg * requestconfig.RequestConfig
700
+ res * http.Response
701
+ }
702
+
703
+ // membersPageJSON contains the JSON metadata for the struct [MembersPage[T]]
704
+ type membersPageJSON struct {
705
+ Members apijson.Field
706
+ NextToken apijson.Field
707
+ raw string
708
+ ExtraFields map [string ]apijson.Field
709
+ }
710
+
711
+ func (r * MembersPage [T ]) UnmarshalJSON (data []byte ) (err error ) {
712
+ return apijson .UnmarshalRoot (data , r )
713
+ }
714
+
715
+ func (r membersPageJSON ) RawJSON () string {
716
+ return r .raw
717
+ }
718
+
719
+ // GetNextPage returns the next page as defined by this pagination style. When
720
+ // there is no next page, this function will return a 'nil' for the page value, but
721
+ // will not return an error
722
+ func (r * MembersPage [T ]) GetNextPage () (res * MembersPage [T ], err error ) {
723
+ next := r .NextToken
724
+ if len (next ) == 0 {
725
+ return nil , nil
726
+ }
727
+ cfg := r .cfg .Clone (r .cfg .Context )
728
+ cfg .Apply (option .WithQuery ("token" , next ))
729
+ var raw * http.Response
730
+ cfg .ResponseInto = & raw
731
+ cfg .ResponseBodyInto = & res
732
+ err = cfg .Execute ()
733
+ if err != nil {
734
+ return nil , err
735
+ }
736
+ res .SetPageConfig (cfg , raw )
737
+ return res , nil
738
+ }
739
+
740
+ func (r * MembersPage [T ]) SetPageConfig (cfg * requestconfig.RequestConfig , res * http.Response ) {
741
+ if r == nil {
742
+ r = & MembersPage [T ]{}
743
+ }
744
+ r .cfg = cfg
745
+ r .res = res
746
+ }
747
+
748
+ type MembersPageAutoPager [T any ] struct {
749
+ page * MembersPage [T ]
750
+ cur T
751
+ idx int
752
+ run int
753
+ err error
754
+ }
755
+
756
+ func NewMembersPageAutoPager [T any ](page * MembersPage [T ], err error ) * MembersPageAutoPager [T ] {
757
+ return & MembersPageAutoPager [T ]{
758
+ page : page ,
759
+ err : err ,
760
+ }
761
+ }
762
+
763
+ func (r * MembersPageAutoPager [T ]) Next () bool {
764
+ if r .page == nil || len (r .page .Members ) == 0 {
765
+ return false
766
+ }
767
+ if r .idx >= len (r .page .Members ) {
768
+ r .idx = 0
769
+ r .page , r .err = r .page .GetNextPage ()
770
+ if r .err != nil || r .page == nil || len (r .page .Members ) == 0 {
771
+ return false
772
+ }
773
+ }
774
+ r .cur = r .page .Members [r .idx ]
775
+ r .run += 1
776
+ r .idx += 1
777
+ return true
778
+ }
779
+
780
+ func (r * MembersPageAutoPager [T ]) Current () T {
781
+ return r .cur
782
+ }
783
+
784
+ func (r * MembersPageAutoPager [T ]) Err () error {
785
+ return r .err
786
+ }
787
+
788
+ func (r * MembersPageAutoPager [T ]) Index () int {
789
+ return r .run
790
+ }
0 commit comments