VOOZH about

URL: https://www.nuget.org/packages/DynamicGrpc/

⇱ NuGet Gallery | DynamicGrpc 1.4.0




👁 Image
DynamicGrpc 1.4.0

dotnet add package DynamicGrpc --version 1.4.0
 
 
NuGet\Install-Package DynamicGrpc -Version 1.4.0
 
 
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DynamicGrpc" Version="1.4.0" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DynamicGrpc" Version="1.4.0" />
 
Directory.Packages.props
<PackageReference Include="DynamicGrpc" />
 
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DynamicGrpc --version 1.4.0
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: DynamicGrpc, 1.4.0"
 
 
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DynamicGrpc@1.4.0
 
 
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DynamicGrpc&version=1.4.0
 
Install as a Cake Addin
#tool nuget:?package=DynamicGrpc&version=1.4.0
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

grpc-curl 👁 Build Status
👁 Coverage Status
👁 NuGet

<img align="right" width="160px" height="160px" src="https://raw.githubusercontent.com/xoofx/grpc-curl/main/img/grpc-curl.png">

grpc-curl is a command line tool for interacting with gRPC servers.

All the functionalities of grpc-curl are also accessible through the NuGet package DynamicGrpc that is part of this repository.

This tool is the .NET equivalent of the popular gRPCurl written in Golang.

NOTE: grpc-curl doesn't not support yet all the features that gRPCurl is providing.

Features

  • Allows to invoke method services for all gRPC calling modes (unary, client streaming, server streaming, full-duplex).
  • Allows to print proto reflection descriptors back to proto language (via --describe with grpc-curl, or via the API .ToProtoString() with DynamicGrpc)
  • Supports for plain Protocol Buffers naming conventions and JSON.
  • Supports for google.protobuf.Any: The type has to be encoded - and is decoded with the shadow property @type on a dictionary (e.g @type = "type.googleapis.com/YourTypeName").
  • Build on top of the DynamicGrpc library available as a separate NuGet package.
  • Build for net6.0+
  • Available for multiple platforms. See binaries section below.

Usage

grpc-curl currently requires that the gRPC server has activated gRPC reflection.

Copyright (C) 2022 Alexandre Mutel. All Rights Reserved
grpc-curl - Version: 1.3.6

Usage: grpc-curl [options] address service/method

 address: A http/https URL or a simple host:address.
 If only host:address is used, HTTPS is used by default
 unless the options --http is passed.

## Options

 -d, --data=VALUE Data for string content.
 --http Use HTTP instead of HTTPS unless the protocol is
 specified directly on the address.
 --json Use JSON naming for input and output.
 --describe Describe the service or dump all services
 available.
 -v, --verbosity[=VALUE] Set verbosity.
 -h, --help Show this help.

Query a service

./grpc-curl --json -d "{""getStatus"":{}}" http://192.168.100.1:9200 SpaceX.API.Device.Device/Handle

Will print the following result:

{
 "apiVersion": 4,
 "dishGetStatus": {
 "deviceInfo": {
 "id": "0000000000-00000000-00000000",
 "hardwareVersion": "rev2_proto3",
 "softwareVersion": "992cafb5-61c7-46a3-9ef7-5907c8cf90fd.uterm.release",
 "countryCode": "FR",
 "utcOffsetS": 1
 },
 "deviceState": {
 "uptimeS": 667397
 },
 "obstructionStats": {
 "fractionObstructed": 2.2786187E-06,
 "wedgeFractionObstructed": [
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0
 ],
 "wedgeAbsFractionObstructed": [
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0,
 0.0
 ],
 "validS": 667070.0,
 "avgProlongedObstructionIntervalS": "NaN"
 },
 "alerts": {
 "roaming": true
 },
 "downlinkThroughputBps": 461012.72,
 "uplinkThroughputBps": 294406.6,
 "popPingLatencyMs": 30.35,
 "boresightAzimuthDeg": 0.7464048,
 "boresightElevationDeg": 65.841354,
 "gpsStats": {
 "gpsValid": true,
 "gpsSats": 12
 }
 }
}

Describe a service

./grpc-curl --describe http://192.168.100.1:9200 SpaceX.API.Device.Device

Will print:

// SpaceX.API.Device.Device is a service:
service Device {
 rpc Stream ( .SpaceX.API.Device.ToDevice ) returns ( .SpaceX.API.Device.FromDevice );
 rpc Handle ( .SpaceX.API.Device.Request ) returns ( .SpaceX.API.Device.Response );
}

Describe all proto files serviced via reflection

./grpc-curl --describe http://192.168.100.1:9200

Will print:

// spacex/api/common/status/status.proto is a proto file.
syntax = "proto3";

package SpaceX.API.Status;

// SpaceX.API.Status.Status is a message:
message Status {
 int32 code = 1;
 string message = 2;
}


// spacex/api/device/command.proto is a proto file.
syntax = "proto3";

package SpaceX.API.Device;

// SpaceX.API.Device.PublicKey is a message:
message PublicKey {
 string key = 1;
 repeated Capability capabilities = 2;
}

// ....... and more prints ........

Usage API

All the functionalities of grpc-curl are also accessible through the NuGet package DynamicGrpc.

var channel = GrpcChannel.ForAddress("http://192.168.100.1:9200");
// Fetch reflection data from server
var client = await DynamicGrpcClient.FromServerReflection(channel);

// Call the method `Handle` on the service `SpaceX.API.Device.Device`
var result = await client.AsyncUnaryCall("SpaceX.API.Device.Device", "Handle", new Dictionary<string, object>()
{
 { "get_status", new Dictionary<string, object>() }
});

// Print a proto descriptor
FileDescriptor descriptor = client.Files[0];
Console.WriteLine(descriptor.ToProtoString());

Binaries

grpc-curl is available on multiple platforms:

Platform Packages
win-x64, win-arm, win-arm64 zip
linux-x64, linux-arm, linux-arm64 deb, tar
rhel-x64 rpm, tar
osx-x64, osx-arm64 tar

If you have dotnet 6.0 installed, you can install this tool via NuGet:

dotnet tool install --global grpc-curl

Otherwise, you can install native binaries to Windows, Linux, and macOS with the various debian/rpm/zip packages available directly from the releases.

grpc-curl is also available via homebrew for macOS and Linux:

$ brew tap xoofx/grpc-curl
$ brew install grpc-curl

License

This software is released under the BSD-Clause 2 license.

Author

Alexandre Mutel aka xoofx.

Product Versions Compatible and additional computed target framework versions.
.NET net6.0 net6.0 is compatible.  net6.0-android net6.0-android was computed.  net6.0-ios net6.0-ios was computed.  net6.0-maccatalyst net6.0-maccatalyst was computed.  net6.0-macos net6.0-macos was computed.  net6.0-tvos net6.0-tvos was computed.  net6.0-windows net6.0-windows was computed.  net7.0 net7.0 was computed.  net7.0-android net7.0-android was computed.  net7.0-ios net7.0-ios was computed.  net7.0-maccatalyst net7.0-maccatalyst was computed.  net7.0-macos net7.0-macos was computed.  net7.0-tvos net7.0-tvos was computed.  net7.0-windows net7.0-windows was computed.  net8.0 net8.0 was computed.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 was computed.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 was computed.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on DynamicGrpc:

Package Downloads
MSQP.Shared

Queue environment for Codecamp Queue Platform

ServerlessWorkflow.Sdk.Runtime

Contains services used to execute ServerlessWorkflow workflow definitions

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on DynamicGrpc:

Repository Stars
serverlessworkflow/synapse
Serverless Workflow Management System (WFMS)
Version Downloads Last Updated
1.4.0 4,491 11/13/2022
1.3.7 993 6/15/2022
1.3.6 991 3/7/2022
1.3.1 641 1/27/2022
1.3.0 619 1/22/2022
1.2.0 608 1/21/2022
1.1.0 622 1/21/2022
1.0.0 619 1/20/2022