Minimal, runnable clients for the PushService.StreamPush RPC defined in ../push.proto.
Each subfolder is a self-contained project that:
- Generates stubs from
../../push.proto. - Opens a bidirectional stream to the sandbox endpoint with HTTP Basic auth.
- Sends one
StreamInitfollowed by onePushRequestfor two customer IDs. - Drains any
PushFailureframes and prints the finalPushResponsesummary.
| Folder | Language | Build tool | Toolchain |
|---|---|---|---|
go/ |
Go | go + protoc (via Makefile) |
Go ≥ 1.22, protoc, protoc-gen-go, protoc-gen-go-grpc |
java/ |
Java | Gradle 9.5 (wrapper) + protobuf-gradle-plugin |
JDK 17 (auto-downloaded via Foojay) |
rust/ |
Rust | cargo + tonic-build |
Rust 1.75+, protoc |
All three reference ../../push.proto directly (the Go and Rust examples via build-time codegen; Java via a src/main/proto/push.proto symlink), so the schema has one source of truth.
All three have been verified to build cleanly with make build / ./gradlew build / cargo build.
All three read the same three environment variables:
PUSH_API_KEYPUSH_API_SECRETPUSH_APP_ID
These are intentionally small — they exist to show the protocol flow, not production-grade clients. For Python / Node.js examples and the full integration guide (auth, limits, gRPC status-code table, retry strategy), see ../usage.md.