From d46623de81cfa8426a31da87520523e18481ea17 Mon Sep 17 00:00:00 2001 From: GitHub Date: Fri, 2 Feb 2024 07:44:58 +0000 Subject: [PATCH] feat(schema): update Telegram to the latest layer --- _schema/tdesktop.tl | 10 +- _schema/telegram.tl | 10 +- telegram/query/cached/queries.gen.go | 8 +- tg/tl_auth_sign_up_gen.go | 77 ++++++++++++--- tg/tl_messages_get_saved_reaction_tags_gen.go | 94 ++++++++++++++++--- tg/tl_registry_gen.go | 6 +- tg/tl_server_gen.go | 4 +- 7 files changed, 167 insertions(+), 42 deletions(-) diff --git a/_schema/tdesktop.tl b/_schema/tdesktop.tl index 4c2dde018b..f60e4320fb 100644 --- a/_schema/tdesktop.tl +++ b/_schema/tdesktop.tl @@ -1,8 +1,8 @@ // Code generated by ./cmd/dltl, DO NOT EDIT. // // Source: https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/Telegram/SourceFiles/mtproto/scheme/api.tl -// Layer: 172 -// SHA256: fbaa11d3539fd1f369fb788b89b3e7ff55cf25f5bcc6a9822d0da5f14fbd9433 +// Layer: 173 +// SHA256: e9fedcc9c68ac53e741e5ea9122fa99f7918d8931635a213217fd4c1e947f7da boolFalse#bc799737 = Bool; @@ -2445,7 +2445,7 @@ invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X; auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode; -auth.signUp#80eee427 phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; +auth.signUp#aac7b717 flags:# no_joined_notifications:flags.0?true phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; auth.signIn#8d52a951 flags:# phone_number:string phone_code_hash:string phone_code:flags.0?string email_verification:flags.1?EmailVerification = auth.Authorization; @@ -3117,7 +3117,7 @@ messages.toggleSavedDialogPin#ac81bbde flags:# pinned:flags.0?true peer:InputDia messages.reorderPinnedSavedDialogs#8b716587 flags:# force:flags.0?true order:Vector = Bool; -messages.getSavedReactionTags#761ddacf hash:long = messages.SavedReactionTags; +messages.getSavedReactionTags#3637e05b flags:# peer:flags.0?InputPeer hash:long = messages.SavedReactionTags; messages.updateSavedReactionTag#60297dec flags:# reaction:Reaction title:flags.0?string = Bool; @@ -3577,4 +3577,4 @@ premium.getBoostsStatus#42f1f61 peer:InputPeer = premium.BoostsStatus; premium.getUserBoosts#39854d1f peer:InputPeer user_id:InputUser = premium.BoostsList; -// LAYER 172 +// LAYER 173 diff --git a/_schema/telegram.tl b/_schema/telegram.tl index 1b169258cf..9d230a821a 100644 --- a/_schema/telegram.tl +++ b/_schema/telegram.tl @@ -2,8 +2,8 @@ // // Source: https://raw.githubusercontent.com/telegramdesktop/tdesktop/dev/Telegram/SourceFiles/mtproto/scheme/api.tl // Merge: _schema/legacy.tl -// Layer: 172 -// SHA256: fbaa11d3539fd1f369fb788b89b3e7ff55cf25f5bcc6a9822d0da5f14fbd9433 +// Layer: 173 +// SHA256: e9fedcc9c68ac53e741e5ea9122fa99f7918d8931635a213217fd4c1e947f7da boolFalse#bc799737 = Bool; @@ -2446,7 +2446,7 @@ invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X; auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode; -auth.signUp#80eee427 phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; +auth.signUp#aac7b717 flags:# no_joined_notifications:flags.0?true phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; auth.signIn#8d52a951 flags:# phone_number:string phone_code_hash:string phone_code:flags.0?string email_verification:flags.1?EmailVerification = auth.Authorization; @@ -3118,7 +3118,7 @@ messages.toggleSavedDialogPin#ac81bbde flags:# pinned:flags.0?true peer:InputDia messages.reorderPinnedSavedDialogs#8b716587 flags:# force:flags.0?true order:Vector = Bool; -messages.getSavedReactionTags#761ddacf hash:long = messages.SavedReactionTags; +messages.getSavedReactionTags#3637e05b flags:# peer:flags.0?InputPeer hash:long = messages.SavedReactionTags; messages.updateSavedReactionTag#60297dec flags:# reaction:Reaction title:flags.0?string = Bool; @@ -3610,4 +3610,4 @@ test.useError#ee75af01 = Error; test.useConfigSimple#f9b7b23d = help.ConfigSimple; -// LAYER 172 +// LAYER 173 diff --git a/telegram/query/cached/queries.gen.go b/telegram/query/cached/queries.gen.go index a4f1b9020d..e30f07bc5a 100644 --- a/telegram/query/cached/queries.gen.go +++ b/telegram/query/cached/queries.gen.go @@ -1966,6 +1966,8 @@ type innerMessagesGetSavedReactionTags struct { } type MessagesGetSavedReactionTags struct { + // Query to send. + req *tg.MessagesGetSavedReactionTagsRequest // Result state. last atomic.Value @@ -1974,8 +1976,9 @@ type MessagesGetSavedReactionTags struct { } // NewMessagesGetSavedReactionTags creates new MessagesGetSavedReactionTags. -func NewMessagesGetSavedReactionTags(raw *tg.Client) *MessagesGetSavedReactionTags { +func NewMessagesGetSavedReactionTags(raw *tg.Client, initial *tg.MessagesGetSavedReactionTagsRequest) *MessagesGetSavedReactionTags { q := &MessagesGetSavedReactionTags{ + req: initial, raw: raw, } @@ -2017,7 +2020,8 @@ func (s *MessagesGetSavedReactionTags) Get(ctx context.Context) (*tg.MessagesSav func (s *MessagesGetSavedReactionTags) Fetch(ctx context.Context) (bool, error) { lastHash := s.Hash() - req := lastHash + req := s.req + req.Hash = lastHash result, err := s.raw.MessagesGetSavedReactionTags(ctx, req) if err != nil { return false, errors.Wrap(err, "execute MessagesGetSavedReactionTags") diff --git a/tg/tl_auth_sign_up_gen.go b/tg/tl_auth_sign_up_gen.go index ea4c4b4287..963b89aa9e 100644 --- a/tg/tl_auth_sign_up_gen.go +++ b/tg/tl_auth_sign_up_gen.go @@ -31,11 +31,15 @@ var ( _ = tdjson.Encoder{} ) -// AuthSignUpRequest represents TL type `auth.signUp#80eee427`. +// AuthSignUpRequest represents TL type `auth.signUp#aac7b717`. // Registers a validated phone number in the system. // // See https://core.telegram.org/method/auth.signUp for reference. type AuthSignUpRequest struct { + // Flags field of AuthSignUpRequest. + Flags bin.Fields + // NoJoinedNotifications field of AuthSignUpRequest. + NoJoinedNotifications bool // Phone number in the international format PhoneNumber string // SMS-message ID @@ -47,7 +51,7 @@ type AuthSignUpRequest struct { } // AuthSignUpRequestTypeID is TL type id of AuthSignUpRequest. -const AuthSignUpRequestTypeID = 0x80eee427 +const AuthSignUpRequestTypeID = 0xaac7b717 // Ensuring interfaces in compile-time for AuthSignUpRequest. var ( @@ -61,6 +65,12 @@ func (s *AuthSignUpRequest) Zero() bool { if s == nil { return true } + if !(s.Flags.Zero()) { + return false + } + if !(s.NoJoinedNotifications == false) { + return false + } if !(s.PhoneNumber == "") { return false } @@ -88,11 +98,13 @@ func (s *AuthSignUpRequest) String() string { // FillFrom fills AuthSignUpRequest from given interface. func (s *AuthSignUpRequest) FillFrom(from interface { + GetNoJoinedNotifications() (value bool) GetPhoneNumber() (value string) GetPhoneCodeHash() (value string) GetFirstName() (value string) GetLastName() (value string) }) { + s.NoJoinedNotifications = from.GetNoJoinedNotifications() s.PhoneNumber = from.GetPhoneNumber() s.PhoneCodeHash = from.GetPhoneCodeHash() s.FirstName = from.GetFirstName() @@ -122,6 +134,11 @@ func (s *AuthSignUpRequest) TypeInfo() tdp.Type { return typ } typ.Fields = []tdp.Field{ + { + Name: "NoJoinedNotifications", + SchemaName: "no_joined_notifications", + Null: !s.Flags.Has(0), + }, { Name: "PhoneNumber", SchemaName: "phone_number", @@ -142,10 +159,17 @@ func (s *AuthSignUpRequest) TypeInfo() tdp.Type { return typ } +// SetFlags sets flags for non-zero fields. +func (s *AuthSignUpRequest) SetFlags() { + if !(s.NoJoinedNotifications == false) { + s.Flags.Set(0) + } +} + // Encode implements bin.Encoder. func (s *AuthSignUpRequest) Encode(b *bin.Buffer) error { if s == nil { - return fmt.Errorf("can't encode auth.signUp#80eee427 as nil") + return fmt.Errorf("can't encode auth.signUp#aac7b717 as nil") } b.PutID(AuthSignUpRequestTypeID) return s.EncodeBare(b) @@ -154,7 +178,11 @@ func (s *AuthSignUpRequest) Encode(b *bin.Buffer) error { // EncodeBare implements bin.BareEncoder. func (s *AuthSignUpRequest) EncodeBare(b *bin.Buffer) error { if s == nil { - return fmt.Errorf("can't encode auth.signUp#80eee427 as nil") + return fmt.Errorf("can't encode auth.signUp#aac7b717 as nil") + } + s.SetFlags() + if err := s.Flags.Encode(b); err != nil { + return fmt.Errorf("unable to encode auth.signUp#aac7b717: field flags: %w", err) } b.PutString(s.PhoneNumber) b.PutString(s.PhoneCodeHash) @@ -166,10 +194,10 @@ func (s *AuthSignUpRequest) EncodeBare(b *bin.Buffer) error { // Decode implements bin.Decoder. func (s *AuthSignUpRequest) Decode(b *bin.Buffer) error { if s == nil { - return fmt.Errorf("can't decode auth.signUp#80eee427 to nil") + return fmt.Errorf("can't decode auth.signUp#aac7b717 to nil") } if err := b.ConsumeID(AuthSignUpRequestTypeID); err != nil { - return fmt.Errorf("unable to decode auth.signUp#80eee427: %w", err) + return fmt.Errorf("unable to decode auth.signUp#aac7b717: %w", err) } return s.DecodeBare(b) } @@ -177,39 +205,64 @@ func (s *AuthSignUpRequest) Decode(b *bin.Buffer) error { // DecodeBare implements bin.BareDecoder. func (s *AuthSignUpRequest) DecodeBare(b *bin.Buffer) error { if s == nil { - return fmt.Errorf("can't decode auth.signUp#80eee427 to nil") + return fmt.Errorf("can't decode auth.signUp#aac7b717 to nil") } + { + if err := s.Flags.Decode(b); err != nil { + return fmt.Errorf("unable to decode auth.signUp#aac7b717: field flags: %w", err) + } + } + s.NoJoinedNotifications = s.Flags.Has(0) { value, err := b.String() if err != nil { - return fmt.Errorf("unable to decode auth.signUp#80eee427: field phone_number: %w", err) + return fmt.Errorf("unable to decode auth.signUp#aac7b717: field phone_number: %w", err) } s.PhoneNumber = value } { value, err := b.String() if err != nil { - return fmt.Errorf("unable to decode auth.signUp#80eee427: field phone_code_hash: %w", err) + return fmt.Errorf("unable to decode auth.signUp#aac7b717: field phone_code_hash: %w", err) } s.PhoneCodeHash = value } { value, err := b.String() if err != nil { - return fmt.Errorf("unable to decode auth.signUp#80eee427: field first_name: %w", err) + return fmt.Errorf("unable to decode auth.signUp#aac7b717: field first_name: %w", err) } s.FirstName = value } { value, err := b.String() if err != nil { - return fmt.Errorf("unable to decode auth.signUp#80eee427: field last_name: %w", err) + return fmt.Errorf("unable to decode auth.signUp#aac7b717: field last_name: %w", err) } s.LastName = value } return nil } +// SetNoJoinedNotifications sets value of NoJoinedNotifications conditional field. +func (s *AuthSignUpRequest) SetNoJoinedNotifications(value bool) { + if value { + s.Flags.Set(0) + s.NoJoinedNotifications = true + } else { + s.Flags.Unset(0) + s.NoJoinedNotifications = false + } +} + +// GetNoJoinedNotifications returns value of NoJoinedNotifications conditional field. +func (s *AuthSignUpRequest) GetNoJoinedNotifications() (value bool) { + if s == nil { + return + } + return s.Flags.Has(0) +} + // GetPhoneNumber returns value of PhoneNumber field. func (s *AuthSignUpRequest) GetPhoneNumber() (value string) { if s == nil { @@ -242,7 +295,7 @@ func (s *AuthSignUpRequest) GetLastName() (value string) { return s.LastName } -// AuthSignUp invokes method auth.signUp#80eee427 returning error if any. +// AuthSignUp invokes method auth.signUp#aac7b717 returning error if any. // Registers a validated phone number in the system. // // Possible errors: diff --git a/tg/tl_messages_get_saved_reaction_tags_gen.go b/tg/tl_messages_get_saved_reaction_tags_gen.go index ba76db8798..3151f98704 100644 --- a/tg/tl_messages_get_saved_reaction_tags_gen.go +++ b/tg/tl_messages_get_saved_reaction_tags_gen.go @@ -31,16 +31,22 @@ var ( _ = tdjson.Encoder{} ) -// MessagesGetSavedReactionTagsRequest represents TL type `messages.getSavedReactionTags#761ddacf`. +// MessagesGetSavedReactionTagsRequest represents TL type `messages.getSavedReactionTags#3637e05b`. // // See https://core.telegram.org/method/messages.getSavedReactionTags for reference. type MessagesGetSavedReactionTagsRequest struct { + // Flags field of MessagesGetSavedReactionTagsRequest. + Flags bin.Fields + // Peer field of MessagesGetSavedReactionTagsRequest. + // + // Use SetPeer and GetPeer helpers. + Peer InputPeerClass // Hash field of MessagesGetSavedReactionTagsRequest. Hash int64 } // MessagesGetSavedReactionTagsRequestTypeID is TL type id of MessagesGetSavedReactionTagsRequest. -const MessagesGetSavedReactionTagsRequestTypeID = 0x761ddacf +const MessagesGetSavedReactionTagsRequestTypeID = 0x3637e05b // Ensuring interfaces in compile-time for MessagesGetSavedReactionTagsRequest. var ( @@ -54,6 +60,12 @@ func (g *MessagesGetSavedReactionTagsRequest) Zero() bool { if g == nil { return true } + if !(g.Flags.Zero()) { + return false + } + if !(g.Peer == nil) { + return false + } if !(g.Hash == 0) { return false } @@ -72,8 +84,13 @@ func (g *MessagesGetSavedReactionTagsRequest) String() string { // FillFrom fills MessagesGetSavedReactionTagsRequest from given interface. func (g *MessagesGetSavedReactionTagsRequest) FillFrom(from interface { + GetPeer() (value InputPeerClass, ok bool) GetHash() (value int64) }) { + if val, ok := from.GetPeer(); ok { + g.Peer = val + } + g.Hash = from.GetHash() } @@ -100,6 +117,11 @@ func (g *MessagesGetSavedReactionTagsRequest) TypeInfo() tdp.Type { return typ } typ.Fields = []tdp.Field{ + { + Name: "Peer", + SchemaName: "peer", + Null: !g.Flags.Has(0), + }, { Name: "Hash", SchemaName: "hash", @@ -108,10 +130,17 @@ func (g *MessagesGetSavedReactionTagsRequest) TypeInfo() tdp.Type { return typ } +// SetFlags sets flags for non-zero fields. +func (g *MessagesGetSavedReactionTagsRequest) SetFlags() { + if !(g.Peer == nil) { + g.Flags.Set(0) + } +} + // Encode implements bin.Encoder. func (g *MessagesGetSavedReactionTagsRequest) Encode(b *bin.Buffer) error { if g == nil { - return fmt.Errorf("can't encode messages.getSavedReactionTags#761ddacf as nil") + return fmt.Errorf("can't encode messages.getSavedReactionTags#3637e05b as nil") } b.PutID(MessagesGetSavedReactionTagsRequestTypeID) return g.EncodeBare(b) @@ -120,7 +149,19 @@ func (g *MessagesGetSavedReactionTagsRequest) Encode(b *bin.Buffer) error { // EncodeBare implements bin.BareEncoder. func (g *MessagesGetSavedReactionTagsRequest) EncodeBare(b *bin.Buffer) error { if g == nil { - return fmt.Errorf("can't encode messages.getSavedReactionTags#761ddacf as nil") + return fmt.Errorf("can't encode messages.getSavedReactionTags#3637e05b as nil") + } + g.SetFlags() + if err := g.Flags.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.getSavedReactionTags#3637e05b: field flags: %w", err) + } + if g.Flags.Has(0) { + if g.Peer == nil { + return fmt.Errorf("unable to encode messages.getSavedReactionTags#3637e05b: field peer is nil") + } + if err := g.Peer.Encode(b); err != nil { + return fmt.Errorf("unable to encode messages.getSavedReactionTags#3637e05b: field peer: %w", err) + } } b.PutLong(g.Hash) return nil @@ -129,10 +170,10 @@ func (g *MessagesGetSavedReactionTagsRequest) EncodeBare(b *bin.Buffer) error { // Decode implements bin.Decoder. func (g *MessagesGetSavedReactionTagsRequest) Decode(b *bin.Buffer) error { if g == nil { - return fmt.Errorf("can't decode messages.getSavedReactionTags#761ddacf to nil") + return fmt.Errorf("can't decode messages.getSavedReactionTags#3637e05b to nil") } if err := b.ConsumeID(MessagesGetSavedReactionTagsRequestTypeID); err != nil { - return fmt.Errorf("unable to decode messages.getSavedReactionTags#761ddacf: %w", err) + return fmt.Errorf("unable to decode messages.getSavedReactionTags#3637e05b: %w", err) } return g.DecodeBare(b) } @@ -140,18 +181,48 @@ func (g *MessagesGetSavedReactionTagsRequest) Decode(b *bin.Buffer) error { // DecodeBare implements bin.BareDecoder. func (g *MessagesGetSavedReactionTagsRequest) DecodeBare(b *bin.Buffer) error { if g == nil { - return fmt.Errorf("can't decode messages.getSavedReactionTags#761ddacf to nil") + return fmt.Errorf("can't decode messages.getSavedReactionTags#3637e05b to nil") + } + { + if err := g.Flags.Decode(b); err != nil { + return fmt.Errorf("unable to decode messages.getSavedReactionTags#3637e05b: field flags: %w", err) + } + } + if g.Flags.Has(0) { + value, err := DecodeInputPeer(b) + if err != nil { + return fmt.Errorf("unable to decode messages.getSavedReactionTags#3637e05b: field peer: %w", err) + } + g.Peer = value } { value, err := b.Long() if err != nil { - return fmt.Errorf("unable to decode messages.getSavedReactionTags#761ddacf: field hash: %w", err) + return fmt.Errorf("unable to decode messages.getSavedReactionTags#3637e05b: field hash: %w", err) } g.Hash = value } return nil } +// SetPeer sets value of Peer conditional field. +func (g *MessagesGetSavedReactionTagsRequest) SetPeer(value InputPeerClass) { + g.Flags.Set(0) + g.Peer = value +} + +// GetPeer returns value of Peer conditional field and +// boolean which is true if field was set. +func (g *MessagesGetSavedReactionTagsRequest) GetPeer() (value InputPeerClass, ok bool) { + if g == nil { + return + } + if !g.Flags.Has(0) { + return value, false + } + return g.Peer, true +} + // GetHash returns value of Hash field. func (g *MessagesGetSavedReactionTagsRequest) GetHash() (value int64) { if g == nil { @@ -160,15 +231,12 @@ func (g *MessagesGetSavedReactionTagsRequest) GetHash() (value int64) { return g.Hash } -// MessagesGetSavedReactionTags invokes method messages.getSavedReactionTags#761ddacf returning error if any. +// MessagesGetSavedReactionTags invokes method messages.getSavedReactionTags#3637e05b returning error if any. // // See https://core.telegram.org/method/messages.getSavedReactionTags for reference. -func (c *Client) MessagesGetSavedReactionTags(ctx context.Context, hash int64) (MessagesSavedReactionTagsClass, error) { +func (c *Client) MessagesGetSavedReactionTags(ctx context.Context, request *MessagesGetSavedReactionTagsRequest) (MessagesSavedReactionTagsClass, error) { var result MessagesSavedReactionTagsBox - request := &MessagesGetSavedReactionTagsRequest{ - Hash: hash, - } if err := c.rpc.Invoke(ctx, request, &result); err != nil { return nil, err } diff --git a/tg/tl_registry_gen.go b/tg/tl_registry_gen.go index 740db4d3d7..7b66351299 100644 --- a/tg/tl_registry_gen.go +++ b/tg/tl_registry_gen.go @@ -32,7 +32,7 @@ var ( ) // Layer version of schema. -const Layer = 172 +const Layer = 173 // TypesMap returns mapping from type ids to TL type names. func TypesMap() map[uint32]string { @@ -1256,7 +1256,7 @@ func TypesMap() map[uint32]string { InvokeWithMessagesRangeRequestTypeID: "invokeWithMessagesRange#365275f2", InvokeWithTakeoutRequestTypeID: "invokeWithTakeout#aca9fd2e", AuthSendCodeRequestTypeID: "auth.sendCode#a677244f", - AuthSignUpRequestTypeID: "auth.signUp#80eee427", + AuthSignUpRequestTypeID: "auth.signUp#aac7b717", AuthSignInRequestTypeID: "auth.signIn#8d52a951", AuthLogOutRequestTypeID: "auth.logOut#3e72ba19", AuthResetAuthorizationsRequestTypeID: "auth.resetAuthorizations#9fab0d1a", @@ -1592,7 +1592,7 @@ func TypesMap() map[uint32]string { MessagesGetPinnedSavedDialogsRequestTypeID: "messages.getPinnedSavedDialogs#d63d94e0", MessagesToggleSavedDialogPinRequestTypeID: "messages.toggleSavedDialogPin#ac81bbde", MessagesReorderPinnedSavedDialogsRequestTypeID: "messages.reorderPinnedSavedDialogs#8b716587", - MessagesGetSavedReactionTagsRequestTypeID: "messages.getSavedReactionTags#761ddacf", + MessagesGetSavedReactionTagsRequestTypeID: "messages.getSavedReactionTags#3637e05b", MessagesUpdateSavedReactionTagRequestTypeID: "messages.updateSavedReactionTag#60297dec", MessagesGetDefaultTagReactionsRequestTypeID: "messages.getDefaultTagReactions#bdf93428", MessagesGetOutboxReadDateRequestTypeID: "messages.getOutboxReadDate#8c4bfe5d", diff --git a/tg/tl_server_gen.go b/tg/tl_server_gen.go index 6b8717536b..1f35cee9e7 100644 --- a/tg/tl_server_gen.go +++ b/tg/tl_server_gen.go @@ -6206,14 +6206,14 @@ func (s *ServerDispatcher) OnMessagesReorderPinnedSavedDialogs(f func(ctx contex s.handlers[MessagesReorderPinnedSavedDialogsRequestTypeID] = handler } -func (s *ServerDispatcher) OnMessagesGetSavedReactionTags(f func(ctx context.Context, hash int64) (MessagesSavedReactionTagsClass, error)) { +func (s *ServerDispatcher) OnMessagesGetSavedReactionTags(f func(ctx context.Context, request *MessagesGetSavedReactionTagsRequest) (MessagesSavedReactionTagsClass, error)) { handler := func(ctx context.Context, b *bin.Buffer) (bin.Encoder, error) { var request MessagesGetSavedReactionTagsRequest if err := request.Decode(b); err != nil { return nil, err } - response, err := f(ctx, request.Hash) + response, err := f(ctx, &request) if err != nil { return nil, err }