@@ -231,7 +231,18 @@ func (g *generator) genAndCommitHelpers(scopes []string) error {
231231 p := g .printf
232232 g .reset ()
233233 g .imports [pbinfo.ImportSpec {Path : "context" }] = true
234+ g .imports [pbinfo.ImportSpec {Path : "io" }] = true
235+ g .imports [pbinfo.ImportSpec {Path : "log/slog" }] = true
236+ g .imports [pbinfo.ImportSpec {Path : "net/http" }] = true
234237 g .imports [pbinfo.ImportSpec {Path : "google.golang.org/api/option" }] = true
238+ g .imports [pbinfo.ImportSpec {Path : "github.com/googleapis/gax-go/v2/internallog" }] = true
239+ g .imports [pbinfo.ImportSpec {Path : "github.com/googleapis/gax-go/v2/internallog/grpclog" }] = true
240+ g .imports [pbinfo.ImportSpec {Path : "google.golang.org/api/googleapi" }] = true
241+ g .imports [pbinfo.ImportSpec {Path : "google.golang.org/grpc" }] = true
242+ g .imports [pbinfo.ImportSpec {Path : "google.golang.org/protobuf/proto" }] = true
243+
244+ p ("const serviceName = %q" , g .serviceConfig .GetName ())
245+ p ("" )
235246
236247 p ("// For more information on implementing a client constructor hook, see" )
237248 p ("// https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors." )
@@ -257,6 +268,52 @@ func (g *generator) genAndCommitHelpers(scopes []string) error {
257268 }
258269 p (" }" )
259270 p ("}" )
271+ p ("" )
272+
273+ p ("func executeHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, error) {" )
274+ p (` logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body))` )
275+ p (" resp, err := client.Do(req)" )
276+ p (" if err != nil{" )
277+ p (" return nil, err" )
278+ p (" }" )
279+ p (" defer resp.Body.Close()" )
280+ p (" buf, err := io.ReadAll(resp.Body)" )
281+ p (" if err != nil {" )
282+ p (" return nil, err" )
283+ p (" }" )
284+ p (` logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, buf))` )
285+ p (" if err = googleapi.CheckResponse(resp); err != nil {" )
286+ p (" return nil, err" )
287+ p (" }" )
288+ p (" return buf, nil" )
289+ p ("}" )
290+ p ("" )
291+
292+ p ("func executeStreamingHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) (*http.Response, error) {" )
293+ p (` logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body))` )
294+ p (" resp, err := client.Do(req)" )
295+ p (" if err != nil{" )
296+ p (" return nil, err" )
297+ p (" }" )
298+ p (` logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, nil))` )
299+ p (" if err = googleapi.CheckResponse(resp); err != nil {" )
300+ p (" return nil, err" )
301+ p (" }" )
302+ p (" return resp, nil" )
303+ p ("}" )
304+ p ("" )
305+
306+ 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) {" )
307+ p (" var zero O" )
308+ p (` logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", grpclog.ProtoMessageRequest(ctx, req))` )
309+ p (" resp, err := fn(ctx, req, opts...)" )
310+ p (" if err != nil {" )
311+ p (" return zero, err" )
312+ p (" }" )
313+ p (` logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", grpclog.ProtoMessageResponse(resp))` )
314+ p (" return resp, err" )
315+ p ("}" )
316+ p ("" )
260317
261318 outFile := filepath .Join (g .opts .outDir , "helpers.go" )
262319 g .commit (outFile , g .opts .pkgName )
0 commit comments