cloud.google.com/go/aiplatform@v1.106.0/apiv1beta1/helpers.go (about)

     1  // Copyright 2025 Google LLC
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     https://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go_gapic. DO NOT EDIT.
    16  
    17  package aiplatform
    18  
    19  import (
    20  	"context"
    21  	"fmt"
    22  	"io"
    23  	"log/slog"
    24  	"net/http"
    25  
    26  	"github.com/googleapis/gax-go/v2/internallog"
    27  	"github.com/googleapis/gax-go/v2/internallog/grpclog"
    28  	"google.golang.org/api/googleapi"
    29  	"google.golang.org/api/option"
    30  	"google.golang.org/grpc"
    31  	"google.golang.org/protobuf/proto"
    32  	"google.golang.org/protobuf/runtime/protoimpl"
    33  )
    34  
    35  const serviceName = "aiplatform.googleapis.com"
    36  
    37  var protoVersion = fmt.Sprintf("1.%d", protoimpl.MaxVersion)
    38  
    39  // For more information on implementing a client constructor hook, see
    40  // https://github.com/googleapis/google-cloud-go/wiki/Customizing-constructors.
    41  type clientHookParams struct{}
    42  type clientHook func(context.Context, clientHookParams) ([]option.ClientOption, error)
    43  
    44  var versionClient string
    45  
    46  func getVersionClient() string {
    47  	if versionClient == "" {
    48  		return "UNKNOWN"
    49  	}
    50  	return versionClient
    51  }
    52  
    53  // DefaultAuthScopes reports the default set of authentication scopes to use with this package.
    54  func DefaultAuthScopes() []string {
    55  	return []string{
    56  		"https://www.googleapis.com/auth/cloud-platform",
    57  		"https://www.googleapis.com/auth/cloud-platform.read-only",
    58  	}
    59  }
    60  
    61  func executeHTTPRequestWithResponse(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, *http.Response, error) {
    62  	logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body))
    63  	resp, err := client.Do(req)
    64  	if err != nil {
    65  		return nil, nil, err
    66  	}
    67  	defer resp.Body.Close()
    68  	buf, err := io.ReadAll(resp.Body)
    69  	if err != nil {
    70  		return nil, nil, err
    71  	}
    72  	logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, buf))
    73  	if err = googleapi.CheckResponseWithBody(resp, buf); err != nil {
    74  		return nil, nil, err
    75  	}
    76  	return buf, resp, nil
    77  }
    78  
    79  func executeHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) ([]byte, error) {
    80  	buf, _, err := executeHTTPRequestWithResponse(ctx, client, req, logger, body, rpc)
    81  	return buf, err
    82  }
    83  
    84  func executeStreamingHTTPRequest(ctx context.Context, client *http.Client, req *http.Request, logger *slog.Logger, body []byte, rpc string) (*http.Response, error) {
    85  	logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", internallog.HTTPRequest(req, body))
    86  	resp, err := client.Do(req)
    87  	if err != nil {
    88  		return nil, err
    89  	}
    90  	logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", internallog.HTTPResponse(resp, nil))
    91  	if err = googleapi.CheckResponse(resp); err != nil {
    92  		return nil, err
    93  	}
    94  	return resp, nil
    95  }
    96  
    97  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) {
    98  	var zero O
    99  	logger.DebugContext(ctx, "api request", "serviceName", serviceName, "rpcName", rpc, "request", grpclog.ProtoMessageRequest(ctx, req))
   100  	resp, err := fn(ctx, req, opts...)
   101  	if err != nil {
   102  		return zero, err
   103  	}
   104  	logger.DebugContext(ctx, "api response", "serviceName", serviceName, "rpcName", rpc, "response", grpclog.ProtoMessageResponse(resp))
   105  	return resp, err
   106  }