%global _empty_manifest_terminate_build 0
Name: python-wechaty-grpc
Version: 0.20.19
Release: 1
Summary: Wechaty Puppet Service gRPC API
License: Apache-2.0
URL: https://github.com/wechaty/grpc
Source0: https://mirrors.nju.edu.cn/pypi/web/packages/ac/a8/a2f8a4e8fa41f2acc9a6d746d62eb2f382f65942229984a5eaceb522ddab/wechaty-grpc-0.20.19.tar.gz
BuildArch: noarch
Requires: python3-betterproto
Requires: python3-grpclib
%description
# Wechaty GRPC
[](https://github.com/Chatie/grpc/actions?query=workflow%3ANode.js)
[](https://github.com/Chatie/grpc/actions?query=workflow%3ANPM)
[](https://github.com/Chatie/grpc/actions?query=workflow%3APyPI)
[](https://github.com/Chatie/grpc/actions?query=workflow%3A%22Maven%22)
[](https://github.com/Chatie/grpc/actions?query=workflow%3APHP)
[](https://github.com/chatie/grpc/actions?query=workflow%3AGo)

[](https://www.npmjs.com/package/wechaty-grpc)
[](https://pypi.org/project/chatie-grpc/)
[](https://mvnrepository.com/artifact/io.github.wechaty/grpc)
[](https://packagist.org/packages/wechaty/php-grpc)
[](https://nodejs.org/)
[](https://www.python.org/downloads/release/python-370/)

gRPC for Wechaty Puppet Service
## USAGE
### Node.js
[wechaty-grpc@NPM](https://www.npmjs.com/package/wechaty-grpc)
Maintainer:
- [@huan](https://github.com/huan) - Huan LI (李卓桓)
### Python
[chatie-grpc@PyPI](https://pypi.org/project/chatie-grpc)
Maintainer:
- [@wj-Mcat](https://github.com/wj-Mcat) - Jingjing WU (吴京京)
### Go
[github.com/wechaty/go-grpc](https://github.com/wechaty/go-grpc)
Maintainer:
- [@dchaofei](https://github.com/dchaofei) - Chaofei DING (丁超飞)
### Java
[https://mvnrepository.com/artifact/io.github.wechaty/grpc](https://mvnrepository.com/artifact/io.github.wechaty/grpc)
Maven:
```xml
io.github.wechaty
0.11.25
grpc
```
Gradle:
```groovy
compile 'io.github.wechaty:grpc:0.11.25'
```
Maintainer:
- [@diaozxin007](https://github.com/diaozxin007) - Zhengxin DIAO (刁政欣)
### PHP
[github.com/wechaty/php-grpc](https://github.comwechaty/php-grpc)
Maintainer:
- [@zhangchunsheng](https://github.com/zhangchunsheng) - Chunsheng ZHANG (张春生)
### Csharp
[Wechaty.Grpc @ Nuget](https://www.nuget.org/packages/Wechaty.Grpc)
Maintainer:
- [@Darren](https://github.com/jesn) - Darren (郑波)
## DEVELOPMENT
### Debug
- [GUI Client for GRPC Services](https://github.com/uw-labs/bloomrpc) - BloomRPC aim to give the simplest and efficient developer experience for exploring and querying your GRPC services.(Inspired by Postman and GraphQL Playground)
- [A gRPC CLI interface for easy testing against gRPC servers with Node.js REPL](https://github.com/njpatel/grpcc)
```sh
grpcc --proto ./service/myservice.proto --address 127.0.0.1:3466
```
### Build
```shell
./scripts/install-protoc.sh
npm install
```
>
### Generate Stubs
```shell
npm run generate
```
#### 1. JS for Protocol Buffer
```shell
protoc \
--js_out="import_style=commonjs,binary:${OUT_DIR}"
```
>
#### 2. JS for gRPC Stubs
```shell
protoc \
--plugin="protoc-gen-grpc=`which grpc_tools_node_protoc_plugin`" \
--grpc_out="${OUT_DIR}"
```
>
#### 3. TypeScript Typing Definations for Protocol Buffer & gRPC Stubs
```shell
protoc \
--plugin="protoc-gen-grpc=node_modules/grpc_tools_node_protoc_ts/bin/protoc-gen-ts" \
--grpc_out="${OUT_DIR}"
```
>
#### 4. JS & TS for gRPC Web
```shell
protoc \
--plugin="protoc-gen-ts=node_modules/ts-protoc-gen/bin/protoc-gen-ts" \
--ts_out="service=true:${OUT_DIR}"
```
>
## OpenAPI
Thanks for the ecosystem of gRPC, we can generate OpenAPI Specification from our gRPC proto definitions automatically.
We are using [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) as the OpenAPI Specification generator ([protoc-gen-openapiv2](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2)), and using [Like grpc-gateway, but written in node and dynamic](https://github.com/konsumer/grpc-dynamic-gateway) project to serve a HTTP RESTful API to gRPC proxy.
[](https://github.com/wechaty/openapi)
> Image credit: [grpc-gateway](https://grpc-ecosystem.github.io/grpc-gateway/)
Learn more about the RESTful API service for Wechaty from [Wechaty OpenAPI](https://github.com/wechaty/openapi).
## gRPC Web
- [gRPC-Web ReactJS client, Golang Server](https://github.com/longfellowone/grpcwebtest)
## RESOURCES
### Documentation
- [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3)
- [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style)
- [Protocol Buffers for TypeScript with Decorators](https://github.com/protobufjs/protobuf.js#using-decorators)
- [Troubleshooting gRPC](https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md)
- [gRPC environment variables](https://github.com/grpc/grpc/blob/master/doc/environment_variables.md)
- [How to Interact With and Debug a gRPC Server](https://medium.com/@EdgePress/how-to-interact-with-and-debug-a-grpc-server-c4bc30ddeb0b)
### Links
- [探讨gRPC的Node技术生态及实现工具](https://xenojoshua.com/2018/02/grpc-node-ecosystem/)
- [gRPC Basics - Node.js](https://grpc.io/docs/tutorials/basic/node.html)
- [Building a gRPC service with Node.js](https://codelabs.developers.google.com/codelabs/cloud-grpc/)
- [gRPC in 3 minutes (Node.js)](https://github.com/grpc/grpc/tree/master/examples/node)
- [Listen gRPC and HTTP requests on the same port](https://medium.com/@drgarcia1986/listen-grpc-and-http-requests-on-the-same-port-263c40cb45ff)
- [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway)
- [如何在 Node.js 中更优雅地使用 gRPC:grpc-helper](https://github.com/xizhibei/blog/issues/86)
#### Protocol Buffer
- [Protocol Buffers for JavaScript (& TypeScript)](https://github.com/dcodeIO/protobuf.js)
- [Missing value/null support for scalar value types in proto 3](https://github.com/protocolbuffers/protobuf/issues/1606)
- [How to Make a Nullable Field in Proto3 for a HTTP Response?](https://stackoverflow.com/questions/57908389/how-to-make-a-nullable-field-in-proto3-for-a-http-response)
#### gRPC Web
- [gRPC-Web: Moving past REST+JSON towards type-safe Web APIs](https://improbable.io/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis)
- [Library for making gRPC-Web requests intended for TypeScript from either a browser or Node.js.](https://github.com/improbable-eng/grpc-web/tree/master/ts)
#### TypeScript Generator
- [A Typescript definition file generator for gRPC services](https://github.com/anfema/grpc-code-generator)
- [gRPC Web TypeScript Code Generation](https://github.com/improbable-eng/grpc-web/blob/master/ts/docs/code-generation.md)
- [Protocol Buffers Compiler (protoc) plugin for TypeScript and gRPC-Web.](https://github.com/improbable-eng/ts-protoc-gen)
#### Zoo Keeper
- [ZooKeeper - The King of Coordination](https://www.elastic.co/blog/found-zookeeper-king-of-coordination)
#### STUN
- [How To TCP NAT Traversal using Node.js and a STUN Server](http://sogilis.com/blog/tcp-nat-traversal-nodejs-stun/)
- [chownat, allows two peers behind two separate NATs to directly communicate with each other.](https://samy.pl/chownat/)
- [What is STUN & TURN Server](https://stackoverflow.com/a/23307588/1123955)
- [NPM Search for: NAT Traversal](https://www.npmjs.com/search?q=nat+traversal)
- [NAT traversal by way of UPnP or NAT-PMP](https://github.com/tintfoundation/nat-traverse)
- [How To TCP NAT Traversal using Node.js and a STUN Server](https://gist.github.com/mildred/b803e48801f9cdd8a4a8)
- [STUN, TURN, and ICE - AnyConnect pioneered the STUN, TURN, and ICE NAT Traversal protocols](https://anyconnect.com/stun-turn-ice/)
- [What are STUN, TURN, and ICE?](https://www.twilio.com/docs/stun-turn/faq#faq-what-is-nat)
- [Set Phasers to STUN/TURN: Getting Started with WebRTC using Node.js, Socket.io and Twilio’s NAT Traversal Service](https://www.twilio.com/blog/2014/12/set-phasers-to-stunturn-getting-started-with-webrtc-using-node-js-socket-io-and-twilios-nat-traversal-service.html)
TCP hole punching
#### Reverse Engineering
- [A toolset for reverse engineering and fuzzing Protobuf-based apps](https://github.com/marin-m/pbtk)
#### Python Stub
- [gRPC typing stubs for Python](https://github.com/shabbyrobe/grpc-stubs)
#### CSharp grpc
- [An introduction to NuGet (microsoft)](https://docs.microsoft.com/en-us/nuget/what-is-nuget)
- [Create a gRPC client and server in ASP.NET Core (microsoft)](https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio)
- [ASP.NET Core 3.0 使用gRPC (晓晨Master)](https://www.cnblogs.com/stulzq/p/11581967.html)
## HISTORY
### master
### v0.20 (Feb 21, 2021)
1. Rename NPM module name from `@chatie/grpc` to `wechaty-grpc`
1. Add OpenAPI annotations & generators for supporting
1. Code clean.
### v0.18 (Oct 15, 2020)
- Add new `MessageFileStream` and `MessageImageStream` to replace the `MessageFile` and `MessageImage` method to avoid blocking nodejs event loop when sending large files ([#88](https://github.com/Chatie/grpc/pull/88)) by [@windmemory](https://github.com/windmemory)
- Add new `MessageSendFileStream` to replace the `MessageSendFile` method to avoid blocking nodejs event loop when sending large files ([#89](https://github.com/Chatie/grpc/pull/89)) by [@windmemory](https://github.com/windmemory)
### v0.17 (Aug 5, 2020)
- Add PHPH Support ([#76](https://github.com/Chatie/grpc/pull/76) [#78](https://github.com/Chatie/grpc/pull/78)) by [@zhangchunsheng](https://github.com/zhangchunsheng)
- Publish PHP Module at
### v0.13 (Apr 19, 2020)
- Add Java Support ([#52](https://github.com/Chatie/grpc/issues/52) [#53](https://github.com/Chatie/grpc/issues/53) by [@diaozxin007](https://github.com/diaozxin007))
- Publish Java Module at [Open Source Project Repository HostingOSSRH-56843 - Release the Chatie/grpc Java Client](https://issues.sonatype.org/browse/OSSRH-56843)
### v0.11 (Apr 10, 2020)
- Add Go Support ([#50](https://github.com/Chatie/grpc/issues/50) by [@dchaofei](https://github.com/dchaofei))
- Publish Go Module at
### v0.6 (Feb 2020)
- Align gRPC Services with Wechaty Puppet Abstraction
- Add Unit Tests
### v0.2 (Jul 2018)
- Automatic Generating gRPC Stubs
- Publish to NPM
### v0.0.1 (May 2018)
Initial commiit
## MAINTAINER
[Huan LI](https://github.com/huan) ([李卓桓](http://linkedin.com/in/zixia)), Google Developer Expert in Machine Learning (ML GDE),
[](https://stackexchange.com/users/265499)
## COPYRIGHT & LICENSE
- Code & Docs © 2018-now Huan LI \
- Code released under the Apache-2.0 License
- Docs released under Creative Commons
%package -n python3-wechaty-grpc
Summary: Wechaty Puppet Service gRPC API
Provides: python-wechaty-grpc
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-pip
%description -n python3-wechaty-grpc
# Wechaty GRPC
[](https://github.com/Chatie/grpc/actions?query=workflow%3ANode.js)
[](https://github.com/Chatie/grpc/actions?query=workflow%3ANPM)
[](https://github.com/Chatie/grpc/actions?query=workflow%3APyPI)
[](https://github.com/Chatie/grpc/actions?query=workflow%3A%22Maven%22)
[](https://github.com/Chatie/grpc/actions?query=workflow%3APHP)
[](https://github.com/chatie/grpc/actions?query=workflow%3AGo)

[](https://www.npmjs.com/package/wechaty-grpc)
[](https://pypi.org/project/chatie-grpc/)
[](https://mvnrepository.com/artifact/io.github.wechaty/grpc)
[](https://packagist.org/packages/wechaty/php-grpc)
[](https://nodejs.org/)
[](https://www.python.org/downloads/release/python-370/)

gRPC for Wechaty Puppet Service
## USAGE
### Node.js
[wechaty-grpc@NPM](https://www.npmjs.com/package/wechaty-grpc)
Maintainer:
- [@huan](https://github.com/huan) - Huan LI (李卓桓)
### Python
[chatie-grpc@PyPI](https://pypi.org/project/chatie-grpc)
Maintainer:
- [@wj-Mcat](https://github.com/wj-Mcat) - Jingjing WU (吴京京)
### Go
[github.com/wechaty/go-grpc](https://github.com/wechaty/go-grpc)
Maintainer:
- [@dchaofei](https://github.com/dchaofei) - Chaofei DING (丁超飞)
### Java
[https://mvnrepository.com/artifact/io.github.wechaty/grpc](https://mvnrepository.com/artifact/io.github.wechaty/grpc)
Maven:
```xml
io.github.wechaty
0.11.25
grpc
```
Gradle:
```groovy
compile 'io.github.wechaty:grpc:0.11.25'
```
Maintainer:
- [@diaozxin007](https://github.com/diaozxin007) - Zhengxin DIAO (刁政欣)
### PHP
[github.com/wechaty/php-grpc](https://github.comwechaty/php-grpc)
Maintainer:
- [@zhangchunsheng](https://github.com/zhangchunsheng) - Chunsheng ZHANG (张春生)
### Csharp
[Wechaty.Grpc @ Nuget](https://www.nuget.org/packages/Wechaty.Grpc)
Maintainer:
- [@Darren](https://github.com/jesn) - Darren (郑波)
## DEVELOPMENT
### Debug
- [GUI Client for GRPC Services](https://github.com/uw-labs/bloomrpc) - BloomRPC aim to give the simplest and efficient developer experience for exploring and querying your GRPC services.(Inspired by Postman and GraphQL Playground)
- [A gRPC CLI interface for easy testing against gRPC servers with Node.js REPL](https://github.com/njpatel/grpcc)
```sh
grpcc --proto ./service/myservice.proto --address 127.0.0.1:3466
```
### Build
```shell
./scripts/install-protoc.sh
npm install
```
>
### Generate Stubs
```shell
npm run generate
```
#### 1. JS for Protocol Buffer
```shell
protoc \
--js_out="import_style=commonjs,binary:${OUT_DIR}"
```
>
#### 2. JS for gRPC Stubs
```shell
protoc \
--plugin="protoc-gen-grpc=`which grpc_tools_node_protoc_plugin`" \
--grpc_out="${OUT_DIR}"
```
>
#### 3. TypeScript Typing Definations for Protocol Buffer & gRPC Stubs
```shell
protoc \
--plugin="protoc-gen-grpc=node_modules/grpc_tools_node_protoc_ts/bin/protoc-gen-ts" \
--grpc_out="${OUT_DIR}"
```
>
#### 4. JS & TS for gRPC Web
```shell
protoc \
--plugin="protoc-gen-ts=node_modules/ts-protoc-gen/bin/protoc-gen-ts" \
--ts_out="service=true:${OUT_DIR}"
```
>
## OpenAPI
Thanks for the ecosystem of gRPC, we can generate OpenAPI Specification from our gRPC proto definitions automatically.
We are using [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) as the OpenAPI Specification generator ([protoc-gen-openapiv2](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2)), and using [Like grpc-gateway, but written in node and dynamic](https://github.com/konsumer/grpc-dynamic-gateway) project to serve a HTTP RESTful API to gRPC proxy.
[](https://github.com/wechaty/openapi)
> Image credit: [grpc-gateway](https://grpc-ecosystem.github.io/grpc-gateway/)
Learn more about the RESTful API service for Wechaty from [Wechaty OpenAPI](https://github.com/wechaty/openapi).
## gRPC Web
- [gRPC-Web ReactJS client, Golang Server](https://github.com/longfellowone/grpcwebtest)
## RESOURCES
### Documentation
- [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3)
- [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style)
- [Protocol Buffers for TypeScript with Decorators](https://github.com/protobufjs/protobuf.js#using-decorators)
- [Troubleshooting gRPC](https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md)
- [gRPC environment variables](https://github.com/grpc/grpc/blob/master/doc/environment_variables.md)
- [How to Interact With and Debug a gRPC Server](https://medium.com/@EdgePress/how-to-interact-with-and-debug-a-grpc-server-c4bc30ddeb0b)
### Links
- [探讨gRPC的Node技术生态及实现工具](https://xenojoshua.com/2018/02/grpc-node-ecosystem/)
- [gRPC Basics - Node.js](https://grpc.io/docs/tutorials/basic/node.html)
- [Building a gRPC service with Node.js](https://codelabs.developers.google.com/codelabs/cloud-grpc/)
- [gRPC in 3 minutes (Node.js)](https://github.com/grpc/grpc/tree/master/examples/node)
- [Listen gRPC and HTTP requests on the same port](https://medium.com/@drgarcia1986/listen-grpc-and-http-requests-on-the-same-port-263c40cb45ff)
- [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway)
- [如何在 Node.js 中更优雅地使用 gRPC:grpc-helper](https://github.com/xizhibei/blog/issues/86)
#### Protocol Buffer
- [Protocol Buffers for JavaScript (& TypeScript)](https://github.com/dcodeIO/protobuf.js)
- [Missing value/null support for scalar value types in proto 3](https://github.com/protocolbuffers/protobuf/issues/1606)
- [How to Make a Nullable Field in Proto3 for a HTTP Response?](https://stackoverflow.com/questions/57908389/how-to-make-a-nullable-field-in-proto3-for-a-http-response)
#### gRPC Web
- [gRPC-Web: Moving past REST+JSON towards type-safe Web APIs](https://improbable.io/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis)
- [Library for making gRPC-Web requests intended for TypeScript from either a browser or Node.js.](https://github.com/improbable-eng/grpc-web/tree/master/ts)
#### TypeScript Generator
- [A Typescript definition file generator for gRPC services](https://github.com/anfema/grpc-code-generator)
- [gRPC Web TypeScript Code Generation](https://github.com/improbable-eng/grpc-web/blob/master/ts/docs/code-generation.md)
- [Protocol Buffers Compiler (protoc) plugin for TypeScript and gRPC-Web.](https://github.com/improbable-eng/ts-protoc-gen)
#### Zoo Keeper
- [ZooKeeper - The King of Coordination](https://www.elastic.co/blog/found-zookeeper-king-of-coordination)
#### STUN
- [How To TCP NAT Traversal using Node.js and a STUN Server](http://sogilis.com/blog/tcp-nat-traversal-nodejs-stun/)
- [chownat, allows two peers behind two separate NATs to directly communicate with each other.](https://samy.pl/chownat/)
- [What is STUN & TURN Server](https://stackoverflow.com/a/23307588/1123955)
- [NPM Search for: NAT Traversal](https://www.npmjs.com/search?q=nat+traversal)
- [NAT traversal by way of UPnP or NAT-PMP](https://github.com/tintfoundation/nat-traverse)
- [How To TCP NAT Traversal using Node.js and a STUN Server](https://gist.github.com/mildred/b803e48801f9cdd8a4a8)
- [STUN, TURN, and ICE - AnyConnect pioneered the STUN, TURN, and ICE NAT Traversal protocols](https://anyconnect.com/stun-turn-ice/)
- [What are STUN, TURN, and ICE?](https://www.twilio.com/docs/stun-turn/faq#faq-what-is-nat)
- [Set Phasers to STUN/TURN: Getting Started with WebRTC using Node.js, Socket.io and Twilio’s NAT Traversal Service](https://www.twilio.com/blog/2014/12/set-phasers-to-stunturn-getting-started-with-webrtc-using-node-js-socket-io-and-twilios-nat-traversal-service.html)
TCP hole punching
#### Reverse Engineering
- [A toolset for reverse engineering and fuzzing Protobuf-based apps](https://github.com/marin-m/pbtk)
#### Python Stub
- [gRPC typing stubs for Python](https://github.com/shabbyrobe/grpc-stubs)
#### CSharp grpc
- [An introduction to NuGet (microsoft)](https://docs.microsoft.com/en-us/nuget/what-is-nuget)
- [Create a gRPC client and server in ASP.NET Core (microsoft)](https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio)
- [ASP.NET Core 3.0 使用gRPC (晓晨Master)](https://www.cnblogs.com/stulzq/p/11581967.html)
## HISTORY
### master
### v0.20 (Feb 21, 2021)
1. Rename NPM module name from `@chatie/grpc` to `wechaty-grpc`
1. Add OpenAPI annotations & generators for supporting
1. Code clean.
### v0.18 (Oct 15, 2020)
- Add new `MessageFileStream` and `MessageImageStream` to replace the `MessageFile` and `MessageImage` method to avoid blocking nodejs event loop when sending large files ([#88](https://github.com/Chatie/grpc/pull/88)) by [@windmemory](https://github.com/windmemory)
- Add new `MessageSendFileStream` to replace the `MessageSendFile` method to avoid blocking nodejs event loop when sending large files ([#89](https://github.com/Chatie/grpc/pull/89)) by [@windmemory](https://github.com/windmemory)
### v0.17 (Aug 5, 2020)
- Add PHPH Support ([#76](https://github.com/Chatie/grpc/pull/76) [#78](https://github.com/Chatie/grpc/pull/78)) by [@zhangchunsheng](https://github.com/zhangchunsheng)
- Publish PHP Module at
### v0.13 (Apr 19, 2020)
- Add Java Support ([#52](https://github.com/Chatie/grpc/issues/52) [#53](https://github.com/Chatie/grpc/issues/53) by [@diaozxin007](https://github.com/diaozxin007))
- Publish Java Module at [Open Source Project Repository HostingOSSRH-56843 - Release the Chatie/grpc Java Client](https://issues.sonatype.org/browse/OSSRH-56843)
### v0.11 (Apr 10, 2020)
- Add Go Support ([#50](https://github.com/Chatie/grpc/issues/50) by [@dchaofei](https://github.com/dchaofei))
- Publish Go Module at
### v0.6 (Feb 2020)
- Align gRPC Services with Wechaty Puppet Abstraction
- Add Unit Tests
### v0.2 (Jul 2018)
- Automatic Generating gRPC Stubs
- Publish to NPM
### v0.0.1 (May 2018)
Initial commiit
## MAINTAINER
[Huan LI](https://github.com/huan) ([李卓桓](http://linkedin.com/in/zixia)), Google Developer Expert in Machine Learning (ML GDE),
[](https://stackexchange.com/users/265499)
## COPYRIGHT & LICENSE
- Code & Docs © 2018-now Huan LI \
- Code released under the Apache-2.0 License
- Docs released under Creative Commons
%package help
Summary: Development documents and examples for wechaty-grpc
Provides: python3-wechaty-grpc-doc
%description help
# Wechaty GRPC
[](https://github.com/Chatie/grpc/actions?query=workflow%3ANode.js)
[](https://github.com/Chatie/grpc/actions?query=workflow%3ANPM)
[](https://github.com/Chatie/grpc/actions?query=workflow%3APyPI)
[](https://github.com/Chatie/grpc/actions?query=workflow%3A%22Maven%22)
[](https://github.com/Chatie/grpc/actions?query=workflow%3APHP)
[](https://github.com/chatie/grpc/actions?query=workflow%3AGo)

[](https://www.npmjs.com/package/wechaty-grpc)
[](https://pypi.org/project/chatie-grpc/)
[](https://mvnrepository.com/artifact/io.github.wechaty/grpc)
[](https://packagist.org/packages/wechaty/php-grpc)
[](https://nodejs.org/)
[](https://www.python.org/downloads/release/python-370/)

gRPC for Wechaty Puppet Service
## USAGE
### Node.js
[wechaty-grpc@NPM](https://www.npmjs.com/package/wechaty-grpc)
Maintainer:
- [@huan](https://github.com/huan) - Huan LI (李卓桓)
### Python
[chatie-grpc@PyPI](https://pypi.org/project/chatie-grpc)
Maintainer:
- [@wj-Mcat](https://github.com/wj-Mcat) - Jingjing WU (吴京京)
### Go
[github.com/wechaty/go-grpc](https://github.com/wechaty/go-grpc)
Maintainer:
- [@dchaofei](https://github.com/dchaofei) - Chaofei DING (丁超飞)
### Java
[https://mvnrepository.com/artifact/io.github.wechaty/grpc](https://mvnrepository.com/artifact/io.github.wechaty/grpc)
Maven:
```xml
io.github.wechaty
0.11.25
grpc
```
Gradle:
```groovy
compile 'io.github.wechaty:grpc:0.11.25'
```
Maintainer:
- [@diaozxin007](https://github.com/diaozxin007) - Zhengxin DIAO (刁政欣)
### PHP
[github.com/wechaty/php-grpc](https://github.comwechaty/php-grpc)
Maintainer:
- [@zhangchunsheng](https://github.com/zhangchunsheng) - Chunsheng ZHANG (张春生)
### Csharp
[Wechaty.Grpc @ Nuget](https://www.nuget.org/packages/Wechaty.Grpc)
Maintainer:
- [@Darren](https://github.com/jesn) - Darren (郑波)
## DEVELOPMENT
### Debug
- [GUI Client for GRPC Services](https://github.com/uw-labs/bloomrpc) - BloomRPC aim to give the simplest and efficient developer experience for exploring and querying your GRPC services.(Inspired by Postman and GraphQL Playground)
- [A gRPC CLI interface for easy testing against gRPC servers with Node.js REPL](https://github.com/njpatel/grpcc)
```sh
grpcc --proto ./service/myservice.proto --address 127.0.0.1:3466
```
### Build
```shell
./scripts/install-protoc.sh
npm install
```
>
### Generate Stubs
```shell
npm run generate
```
#### 1. JS for Protocol Buffer
```shell
protoc \
--js_out="import_style=commonjs,binary:${OUT_DIR}"
```
>
#### 2. JS for gRPC Stubs
```shell
protoc \
--plugin="protoc-gen-grpc=`which grpc_tools_node_protoc_plugin`" \
--grpc_out="${OUT_DIR}"
```
>
#### 3. TypeScript Typing Definations for Protocol Buffer & gRPC Stubs
```shell
protoc \
--plugin="protoc-gen-grpc=node_modules/grpc_tools_node_protoc_ts/bin/protoc-gen-ts" \
--grpc_out="${OUT_DIR}"
```
>
#### 4. JS & TS for gRPC Web
```shell
protoc \
--plugin="protoc-gen-ts=node_modules/ts-protoc-gen/bin/protoc-gen-ts" \
--ts_out="service=true:${OUT_DIR}"
```
>
## OpenAPI
Thanks for the ecosystem of gRPC, we can generate OpenAPI Specification from our gRPC proto definitions automatically.
We are using [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) as the OpenAPI Specification generator ([protoc-gen-openapiv2](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2)), and using [Like grpc-gateway, but written in node and dynamic](https://github.com/konsumer/grpc-dynamic-gateway) project to serve a HTTP RESTful API to gRPC proxy.
[](https://github.com/wechaty/openapi)
> Image credit: [grpc-gateway](https://grpc-ecosystem.github.io/grpc-gateway/)
Learn more about the RESTful API service for Wechaty from [Wechaty OpenAPI](https://github.com/wechaty/openapi).
## gRPC Web
- [gRPC-Web ReactJS client, Golang Server](https://github.com/longfellowone/grpcwebtest)
## RESOURCES
### Documentation
- [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3)
- [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style)
- [Protocol Buffers for TypeScript with Decorators](https://github.com/protobufjs/protobuf.js#using-decorators)
- [Troubleshooting gRPC](https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md)
- [gRPC environment variables](https://github.com/grpc/grpc/blob/master/doc/environment_variables.md)
- [How to Interact With and Debug a gRPC Server](https://medium.com/@EdgePress/how-to-interact-with-and-debug-a-grpc-server-c4bc30ddeb0b)
### Links
- [探讨gRPC的Node技术生态及实现工具](https://xenojoshua.com/2018/02/grpc-node-ecosystem/)
- [gRPC Basics - Node.js](https://grpc.io/docs/tutorials/basic/node.html)
- [Building a gRPC service with Node.js](https://codelabs.developers.google.com/codelabs/cloud-grpc/)
- [gRPC in 3 minutes (Node.js)](https://github.com/grpc/grpc/tree/master/examples/node)
- [Listen gRPC and HTTP requests on the same port](https://medium.com/@drgarcia1986/listen-grpc-and-http-requests-on-the-same-port-263c40cb45ff)
- [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway)
- [如何在 Node.js 中更优雅地使用 gRPC:grpc-helper](https://github.com/xizhibei/blog/issues/86)
#### Protocol Buffer
- [Protocol Buffers for JavaScript (& TypeScript)](https://github.com/dcodeIO/protobuf.js)
- [Missing value/null support for scalar value types in proto 3](https://github.com/protocolbuffers/protobuf/issues/1606)
- [How to Make a Nullable Field in Proto3 for a HTTP Response?](https://stackoverflow.com/questions/57908389/how-to-make-a-nullable-field-in-proto3-for-a-http-response)
#### gRPC Web
- [gRPC-Web: Moving past REST+JSON towards type-safe Web APIs](https://improbable.io/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis)
- [Library for making gRPC-Web requests intended for TypeScript from either a browser or Node.js.](https://github.com/improbable-eng/grpc-web/tree/master/ts)
#### TypeScript Generator
- [A Typescript definition file generator for gRPC services](https://github.com/anfema/grpc-code-generator)
- [gRPC Web TypeScript Code Generation](https://github.com/improbable-eng/grpc-web/blob/master/ts/docs/code-generation.md)
- [Protocol Buffers Compiler (protoc) plugin for TypeScript and gRPC-Web.](https://github.com/improbable-eng/ts-protoc-gen)
#### Zoo Keeper
- [ZooKeeper - The King of Coordination](https://www.elastic.co/blog/found-zookeeper-king-of-coordination)
#### STUN
- [How To TCP NAT Traversal using Node.js and a STUN Server](http://sogilis.com/blog/tcp-nat-traversal-nodejs-stun/)
- [chownat, allows two peers behind two separate NATs to directly communicate with each other.](https://samy.pl/chownat/)
- [What is STUN & TURN Server](https://stackoverflow.com/a/23307588/1123955)
- [NPM Search for: NAT Traversal](https://www.npmjs.com/search?q=nat+traversal)
- [NAT traversal by way of UPnP or NAT-PMP](https://github.com/tintfoundation/nat-traverse)
- [How To TCP NAT Traversal using Node.js and a STUN Server](https://gist.github.com/mildred/b803e48801f9cdd8a4a8)
- [STUN, TURN, and ICE - AnyConnect pioneered the STUN, TURN, and ICE NAT Traversal protocols](https://anyconnect.com/stun-turn-ice/)
- [What are STUN, TURN, and ICE?](https://www.twilio.com/docs/stun-turn/faq#faq-what-is-nat)
- [Set Phasers to STUN/TURN: Getting Started with WebRTC using Node.js, Socket.io and Twilio’s NAT Traversal Service](https://www.twilio.com/blog/2014/12/set-phasers-to-stunturn-getting-started-with-webrtc-using-node-js-socket-io-and-twilios-nat-traversal-service.html)
TCP hole punching
#### Reverse Engineering
- [A toolset for reverse engineering and fuzzing Protobuf-based apps](https://github.com/marin-m/pbtk)
#### Python Stub
- [gRPC typing stubs for Python](https://github.com/shabbyrobe/grpc-stubs)
#### CSharp grpc
- [An introduction to NuGet (microsoft)](https://docs.microsoft.com/en-us/nuget/what-is-nuget)
- [Create a gRPC client and server in ASP.NET Core (microsoft)](https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio)
- [ASP.NET Core 3.0 使用gRPC (晓晨Master)](https://www.cnblogs.com/stulzq/p/11581967.html)
## HISTORY
### master
### v0.20 (Feb 21, 2021)
1. Rename NPM module name from `@chatie/grpc` to `wechaty-grpc`
1. Add OpenAPI annotations & generators for supporting
1. Code clean.
### v0.18 (Oct 15, 2020)
- Add new `MessageFileStream` and `MessageImageStream` to replace the `MessageFile` and `MessageImage` method to avoid blocking nodejs event loop when sending large files ([#88](https://github.com/Chatie/grpc/pull/88)) by [@windmemory](https://github.com/windmemory)
- Add new `MessageSendFileStream` to replace the `MessageSendFile` method to avoid blocking nodejs event loop when sending large files ([#89](https://github.com/Chatie/grpc/pull/89)) by [@windmemory](https://github.com/windmemory)
### v0.17 (Aug 5, 2020)
- Add PHPH Support ([#76](https://github.com/Chatie/grpc/pull/76) [#78](https://github.com/Chatie/grpc/pull/78)) by [@zhangchunsheng](https://github.com/zhangchunsheng)
- Publish PHP Module at
### v0.13 (Apr 19, 2020)
- Add Java Support ([#52](https://github.com/Chatie/grpc/issues/52) [#53](https://github.com/Chatie/grpc/issues/53) by [@diaozxin007](https://github.com/diaozxin007))
- Publish Java Module at [Open Source Project Repository HostingOSSRH-56843 - Release the Chatie/grpc Java Client](https://issues.sonatype.org/browse/OSSRH-56843)
### v0.11 (Apr 10, 2020)
- Add Go Support ([#50](https://github.com/Chatie/grpc/issues/50) by [@dchaofei](https://github.com/dchaofei))
- Publish Go Module at
### v0.6 (Feb 2020)
- Align gRPC Services with Wechaty Puppet Abstraction
- Add Unit Tests
### v0.2 (Jul 2018)
- Automatic Generating gRPC Stubs
- Publish to NPM
### v0.0.1 (May 2018)
Initial commiit
## MAINTAINER
[Huan LI](https://github.com/huan) ([李卓桓](http://linkedin.com/in/zixia)), Google Developer Expert in Machine Learning (ML GDE),
[](https://stackexchange.com/users/265499)
## COPYRIGHT & LICENSE
- Code & Docs © 2018-now Huan LI \
- Code released under the Apache-2.0 License
- Docs released under Creative Commons
%prep
%autosetup -n wechaty-grpc-0.20.19
%build
%py3_build
%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .
%files -n python3-wechaty-grpc -f filelist.lst
%dir %{python3_sitelib}/*
%files help -f doclist.lst
%{_docdir}/*
%changelog
* Wed May 10 2023 Python_Bot - 0.20.19-1
- Package Spec generated