// Copyright 2022 Harness Inc. All rights reserved. // Use of this source code is governed by the Polyform Free Trial License // that can be found in the LICENSE.md file for this repository. package gitrpc import ( "fmt" "github.com/harness/gitness/gitrpc/rpc" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" ) type Client struct { conn *grpc.ClientConn repoService rpc.RepositoryServiceClient refService rpc.ReferenceServiceClient httpService rpc.SmartHTTPServiceClient commitFilesService rpc.CommitFilesServiceClient diffService rpc.DiffServiceClient mergeService rpc.MergeServiceClient blameService rpc.BlameServiceClient } func New(config Config) (*Client, error) { if err := config.Validate(); err != nil { return nil, fmt.Errorf("provided config is invalid: %w", err) } // create interceptors logIntc := NewClientLogInterceptor() // preparate all grpc options grpcOpts := []grpc.DialOption{ grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithChainUnaryInterceptor( logIntc.UnaryClientInterceptor(), ), grpc.WithChainStreamInterceptor( logIntc.StreamClientInterceptor(), ), } conn, err := grpc.Dial(config.Addr, grpcOpts...) if err != nil { return nil, err } return &Client{ conn: conn, repoService: rpc.NewRepositoryServiceClient(conn), refService: rpc.NewReferenceServiceClient(conn), httpService: rpc.NewSmartHTTPServiceClient(conn), commitFilesService: rpc.NewCommitFilesServiceClient(conn), diffService: rpc.NewDiffServiceClient(conn), mergeService: rpc.NewMergeServiceClient(conn), blameService: rpc.NewBlameServiceClient(conn), }, nil }