@@ -691,3 +691,100 @@ func (r *GroupsPageAutoPager[T]) Err() error {
691691func (r * GroupsPageAutoPager [T ]) Index () int {
692692 return r .run
693693}
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