package ProtoHandler import ( "context" "google.golang.org/grpc" "lpm-cli/Lotus" proto "lpm-cli/Proto/lpm/go" "time" ) func createConnection() *grpc.ClientConn{ logger := Lotus.DetailedLogger("ProtoHandler", "createConnection") //TODO Remove Hardcoded addr conn, err := grpc.Dial("localhost:9090", grpc.WithInsecure()) if err != nil { logger.Fatal(err) } return conn } func createRegistryClient(conn *grpc.ClientConn) (proto.LpmRegistryClient, context.Context, context.CancelFunc) { lrc := proto.NewLpmRegistryClient(conn) ctx, cancel := context.WithTimeout(context.Background(), time.Second * 10) return lrc, ctx, cancel } func SearchPackages(platform string, architecture []string, query string) []PackageMetadata { logger := Lotus.DetailedLogger("ProtoHandler", "sendSearchRequest") conn := createConnection() defer conn.Close() client, ctx, cancel := createRegistryClient(conn) defer cancel() res, connErr := client.Search(ctx, &proto.SearchRequest{Platform: platform, Architecture: architecture, Query: query}) if connErr != nil { logger.Fatal(connErr) } packages := make([]PackageMetadata, len(res.GetPackages())) for i, pkg := range res.GetPackages() { packages[i].FillMetadata(pkg) } return packages }