@@ -128,10 +128,19 @@ func (g *generator) genDocFile(year int, scopes []string, serv *descriptorpb.Ser
128128
129129 p ("import (" )
130130 p ("%s%q" , "\t " , "context" )
131+ p ("%s%q" , "\t " , "io" )
132+ p ("%s%q" , "\t " , "log/slog" )
133+ p ("%s%q" , "\t " , "net/http" )
131134 p ("" )
135+ p ("%s%q" , "\t " , "github.com/googleapis/gax-go/v2/internallog" )
136+ p ("%s%q" , "\t " , "github.com/googleapis/gax-go/v2/internallog/grpclog" )
137+ p ("%s%q" , "\t " , "google.golang.org/api/googleapi" )
132138 p ("%s%q" , "\t " , "google.golang.org/api/option" )
139+ p ("%s%q" , "\t " , "google.golang.org/grpc" )
140+ p ("%s%q" , "\t " , "google.golang.org/protobuf/proto" )
133141 p (")" )
134142 p ("" )
143+ p ("const serviceName = %q" , g .serviceConfig .GetName ())
135144
136145 p ("// For more information on implementing a client constructor hook, see" )
137146 p ("// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors." )
@@ -157,6 +166,52 @@ func (g *generator) genDocFile(year int, scopes []string, serv *descriptorpb.Ser
157166 }
158167 p (" }" )
159168 p ("}" )
169+ p ("" )
170+
171+ p ("func executeHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, error) {" )
172+ p (` logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body))` )
173+ p (" resp, err := client.Do(req)" )
174+ p (" if err != nil{" )
175+ p (" return nil, err" )
176+ p (" }" )
177+ p (" defer resp.Body.Close()" )
178+ p (" buf, err := io.ReadAll(resp.Body)" )
179+ p (" if err != nil {" )
180+ p (" return nil, err" )
181+ p (" }" )
182+ p (` logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, buf))` )
183+ p (" if err = googleapi.CheckResponse(resp); err != nil {" )
184+ p (" return nil, err" )
185+ p (" }" )
186+ p (" return buf, nil" )
187+ p ("}" )
188+ p ("" )
189+
190+ p ("func executeStreamingHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) (*http.Response, error) {" )
191+ p (` logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body))` )
192+ p (" resp, err := client.Do(req)" )
193+ p (" if err != nil{" )
194+ p (" return nil, err" )
195+ p (" }" )
196+ p (` logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, nil))` )
197+ p (" if err = googleapi.CheckResponse(resp); err != nil {" )
198+ p (" return nil, err" )
199+ p (" }" )
200+ p (" return resp, nil" )
201+ p ("}" )
202+ p ("" )
203+
204+ p ("func executeRPC[I proto.Message, O proto.Message](ctx context.Context, fn func(context.Context, I, ...grpc.CallOption) (O, error), req I, opts []grpc.CallOption, logger *slog.Logger, rpc string) (O, error) {" )
205+ p (" var zero O" )
206+ p (` logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", grpclog.ProtoMessageRequest(ctx, req))` )
207+ p (" resp, err := fn(ctx, req, opts...)" )
208+ p (" if err != nil {" )
209+ p (" return zero, err" )
210+ p (" }" )
211+ p (` logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", grpclog.ProtoMessageResponse(resp))` )
212+ p (" return resp, err" )
213+ p ("}" )
214+ p ("" )
160215}
161216
162217func collectScopes (servs []* descriptorpb.ServiceDescriptorProto ) []string {
0 commit comments