Cross platform gRPC client

Wombat

Cross platform gRPC client

Github release Homebrew Cask AUR
Go version Go report card Awesome gRPC

screenshot

Features

  • Automatic parsing of proto definitions to render services and input messages
  • .proto file discovery
  • Selection of multiple services and methods
  • Configuration of TLS, including disabling TLS (plain text)
  • Input generation for all scalar types
  • Input generation for nested messages
  • Input generation for enums, including nested
  • Input generation for repeated fields
  • Input generation for oneof and map fields
  • Support for adding RPC metadata
  • Execute unary requests
  • Execute server streaming requests
  • Execute client streaming requests
  • Execute bidirectional requests
  • Cancel requests in-flight
  • Send EOF for client streaming and bi-directional streaming
  • View response messages
  • View RPC Header and Trailer
  • View full RPC statistics
  • MacOS build
  • Linux build
  • Windows build
  • Reflection API to determine RPC schema
  • Support for Google Will Known Types
  • Create multiple workspaces and workspace switching

Download

Visit the Releases page for the latest downloads.

Install

MacOS

Download and open Wombat*_Darwin_86_64.dmg, drag Wombat.app to the Applications folder and run from Applications.

Or via Homebrew

$ brew install --cask wombat

If you get this error message: "Wombat.app" can't be opened because the identity of the developer cannot be confirmed., Install by Right Click/Option Click -> Open -> Open. You'll only need to do this on first install.

Linux

Download and unarchive Wombat*_Linux_86_64.tar.gz and run.

Arch Linux AUR

$ yay -S wombat-bin

Windows

Download and unarchive Wombat*_Windows_86_64.zip and run.

Owner
Roger Chapman
A polyglot engineer, that has found his passion with the Go programming language.
Roger Chapman
Comments
  • Empty dark gray screen on startup

    Empty dark gray screen on startup

    Using 0.4.0 on Linux, I get an empty, dark gray (regular background colour) on startup, and nothing else. Starting from a terminal, I get this (and only this):

    Overriding existing handler for signal 10. Set JSC_SIGNAL_FOR_GC if you want WebKit to use a different signal
    

    When closing the window, the process exits normally (0).

    I didn't find any flag to make it more verbose or anything. It used to work on the same machine a few weeks ago, and can't figure out what might have changed since then. I tried removing ~/.cache/wombat and ~/.local/share/Wombat, it didn't make a difference.

    What can I do to get more insights to troubleshoot this?

  • Wombat (macos Catalina x86) - crashes when opening proto with imports

    Wombat (macos Catalina x86) - crashes when opening proto with imports

    After setting up wombat workspace towards my proto and respective imports (google api annotation and http) the application just crashes after a few seconds. It continues to happen even if I reopen it and hence impossible to use.

    I also cleaned all the configurations with app cleaner to start from a fresh Wombat (latest version) and the exact same problem occurs. I can't even see the forms for the respective service. Screenshots below.

    Images: https://ibb.co/DfJnJY3 https://ibb.co/j5mxqs7

  • Not working on mac

    Not working on mac

    First, thanks for creating this: I found this on Reddit.

    For some reason, I've tried multiple versions but haven't been able to get them to work on a Mac. I get the error below regardless of version:

    image

    I'm running macOs Catalina 10.15.7 (19H2).

  • Syntax error when using google.protobuf.Timestamp

    Syntax error when using google.protobuf.Timestamp

    I'm getting a syntax error when trying to specify a google.protobuf.Timestamp. This seems to occur no matter what the input for either startTime or nanos is:

    image

  • Export/Import request to/from grpcurl

    Export/Import request to/from grpcurl

    Sometimes I need to share my request settings/metadata with my team. I will export a curl command for other people, they can import the curl command in PostMan or other something in HTTP/Json case.

    Maybe we can support export and import request to grpcurl?

    grpcurl -d '{"id": 1234, "tags": ["foo","bar"]}' \
        grpc.server.com:443 my.custom.server.Service/Method
    
  • Update Wails to latest version to fix webkit2gtk issue, update to go 1.16

    Update Wails to latest version to fix webkit2gtk issue, update to go 1.16

    Resolves #54

    I updated Wails to the latest version to address this issue caused by a change in a new version of webkit2gtk. I was also having an issue where the UI wasn't showing up at all which I think is related to this other Wails issue related to Mewn. Mewn is now deprecated and the approach Wails is taking is to replace Mewn with Go 1.16's native embedding functionality so that's the approach I followed here too.

    Let me know if you need me to change anything, thanks!

  • :sparkles: Support export/import request to/from grpcurl command

    :sparkles: Support export/import request to/from grpcurl command

    Description

    This PR make wombat support export request to grpcurl and import body and metadata from them. Resolve the #50

    Limit

    Export

    TLS cert, Protobuf files will not be included in the exported command. Recommend using the service reflection. Those configurations will export to grpcurl command.

    • [x] host
    • [ ] tls cert
    • [ ] protos root
    • [ ] protos file
    • [x] reflection metadata
    • [x] method
    • [x] body
    • [x] request metadata

    Import

    Import will change your selected service, selected method, body, and metadata, but it will not change the workspace. Those configurations will import from grpcurl command.

    • [ ] host
    • [ ] tls cert
    • [ ] protos root
    • [ ] protos file
    • [ ] reflection metadata
    • [x] method
    • [x] body
    • [x] request metadata

    Screenshot

    Snipaste_2021-02-23_16-40-48 Snipaste_2021-02-23_16-44-41

    Co-Contributors

    Frontend: @iou90 Backend: @devkanro

  • Crash on MacOS

    Crash on MacOS

    Hi !

    I've been trying to run the latest version on Mac 10.15.7 but it crashes immediately. Only info I managed to get is this:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x477f9aa]
    
    goroutine 46 [running]:
    wombat/internal/app.(*api).GetWorkspaceOptions(0xc0004d8000, 0x4a1a4be, 0xb, 0xc0003701e0)
    	/Users/runner/work/wombat/wombat/internal/app/api.go:174 +0x14a
    wombat/internal/app.(*api).wailsReady(0xc0004d8000, 0x0, 0x0, 0x0)
    	/Users/runner/work/wombat/wombat/internal/app/api.go:96 +0x157
    created by github.com/wailsapp/wails/lib/event.(*Manager).Start.func1
    	/Users/runner/go/pkg/mod/github.com/wailsapp/[email protected]/lib/event/manager.go:124 +0x457
    

    Previous version runs flawlessly. Let me know if there's something else I can do to give you more debug information.

  • Build instructions would make testing contributions easier

    Build instructions would make testing contributions easier

    After fighting for a couple of days with Go / Qt / etc it would be really helpful to have a short description of the requirements / dependencies for this project and the build steps to create a DMG. This will make testing of branches easier rather than waiting for new releases. Can't test your latest PR as I have yet to successfully build the tool through to a DMG. Apologies.

  • request: Workspace headers/metadata.

    request: Workspace headers/metadata.

    Our gRPC endpoints currently use a combination of TLS and oauth2 bearer tokens so support for additional headers without mutual TLS would allow us to authenticate with Wombat.

  • Register googleapis error details message types

    Register googleapis error details message types

    Richer error model All errdetails types are registered in init() of google.golang.org/genproto/googleapis/rpc/errdetails package. Just needed to import it.

    Before: before

    After: details

  • Bump minimatch from 3.0.4 to 3.1.2 in /frontend

    Bump minimatch from 3.0.4 to 3.1.2 in /frontend

    Bumps minimatch from 3.0.4 to 3.1.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Name workspaces

    Name workspaces

    This is a feature request, not a bug. I'd like to be able to name workspaces. I have a handful of services I run locally on different ports, so I now have a bunch of workspaces called 127.0.0.1:9003, 127.0.0.1:9004, etc. Remembering which is which is no fun.

  • Bump terser from 5.3.7 to 5.14.2 in /frontend

    Bump terser from 5.3.7 to 5.14.2 in /frontend

    Bumps terser from 5.3.7 to 5.14.2.

    Changelog

    Sourced from terser's changelog.

    v5.14.2

    • Security fix for RegExps that should not be evaluated (regexp DDOS)
    • Source maps improvements (#1211)
    • Performance improvements in long property access evaluation (#1213)

    v5.14.1

    • keep_numbers option added to TypeScript defs (#1208)
    • Fixed parsing of nested template strings (#1204)

    v5.14.0

    • Switched to @​jridgewell/source-map for sourcemap generation (#1190, #1181)
    • Fixed source maps with non-terminated segments (#1106)
    • Enabled typescript types to be imported from the package (#1194)
    • Extra DOM props have been added (#1191)
    • Delete the AST while generating code, as a means to save RAM

    v5.13.1

    • Removed self-assignments (varname=varname) (closes #1081)
    • Separated inlining code (for inlining things into references, or removing IIFEs)
    • Allow multiple identifiers with the same name in var destructuring (eg var { a, a } = x) (#1176)

    v5.13.0

    • All calls to eval() were removed (#1171, #1184)
    • source-map was updated to 0.8.0-beta.0 (#1164)
    • NavigatorUAData was added to domprops to avoid property mangling (#1166)

    v5.12.1

    • Fixed an issue with function definitions inside blocks (#1155)
    • Fixed parens of new in some situations (closes #1159)

    v5.12.0

    • TERSER_DEBUG_DIR environment variable
    • @​copyright comments are now preserved with the comments="some" option (#1153)

    v5.11.0

    • Unicode code point escapes (\u{abcde}) are not emitted inside RegExp literals anymore (#1147)
    • acorn is now a regular dependency

    v5.10.0

    • Massive optimization to max_line_len (#1109)
    • Basic support for import assertions
    • Marked ES2022 Object.hasOwn as a pure function
    • Fix delete optional?.property
    • New CI/CD pipeline with github actions (#1057)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump svelte from 3.29.0 to 3.49.0 in /frontend

    Bump svelte from 3.29.0 to 3.49.0 in /frontend

    Bumps svelte from 3.29.0 to 3.49.0.

    Changelog

    Sourced from svelte's changelog.

    3.49.0

    • Improve performance of string escaping during SSR (#5701)
    • Add ComponentType and ComponentProps convenience types (#6770)
    • Add support for CSS @layer (#7504)
    • Export CompileOptions from svelte/compiler (#7658)
    • Fix DOM-less components not being properly destroyed (#7488)
    • Fix class: directive updates with <svelte:element> (#7521, #7571)
    • Harden attribute escaping during SSR (#7530)

    3.48.0

    • Allow creating cancelable custom events with createEventDispatcher (#4623)
    • Support {@const} tag in {#if} blocks #7241
    • Return the context object in setContext #7427
    • Allow comments inside {#each} blocks when using animate: (#3999)
    • Fix |local transitions in {#key} blocks (#5950)
    • Support svg namespace for {@html} (#7002, #7450)
    • Fix {@const} tag not working inside a component when there's no let: #7189
    • Remove extraneous leading newline inside <pre> and <textarea> (#7264)
    • Fix erroneous setting of textContent for \<template> elements (#7297)
    • Fix value of let: bindings not updating in certain cases (#7440)
    • Fix handling of void tags in <svelte:element> (#7449)
    • Fix handling of boolean attributes in <svelte:element> (#7478)
    • Add special style scoping handling of [open] selectors on <dialog> elements (#7495)

    3.47.0

    • Add support for dynamic elements through <svelte:element> (#2324)
    • Miscellaneous variable context fixes in {@const} (#7222)
    • Fix {#key} block not being reactive when the key variable is not otherwise used (#7408)
    • Add Symbol as a known global (#7418)

    3.46.6

    • Actually include action TypeScript interface in published package (#7407)

    3.46.5

    • Add TypeScript interfaces for typing actions (#6538)
    • Do not generate unused-export-let warning inside <script context="module"> blocks (#7055)
    • Do not collapse whitespace-only CSS vars (#7152)
    • Add aria-description to the list of allowed ARIA attributes (#7301)
    • Fix attribute escaping during SSR (#7327)
    • Prevent .innerHTML optimization from being used when style: directive is present (#7386)

    3.46.4

    • Avoid maximum call stack size exceeded errors on large components (#4694)
    • Preserve leading space with preserveWhitespace: true (#4731)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Bump postcss from 8.2.10 to 8.2.13 in /frontend

    Bump postcss from 8.2.10 to 8.2.13 in /frontend

    Bumps postcss from 8.2.10 to 8.2.13.

    Release notes

    Sourced from postcss's releases.

    8.2.13

    • Fixed ReDoS vulnerabilities in source map parsing (by @​yetingli).

    8.2.12

    • Fixed package.json exports.

    8.2.11

    • Fixed DEP0148 warning in Node.js 16.
    • Fixed docs (by @​semiromid).
    Changelog

    Sourced from postcss's changelog.

    8.2.13

    • Fixed ReDoS vulnerabilities in source map parsing (by Yeting Li).

    8.2.12

    • Fixed package.json exports.

    8.2.11

    • Fixed DEP0148 warning in Node.js 16.
    • Fixed docs (by @​semiromid).
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

Server and client implementation of the grpc go libraries to perform unary, client streaming, server streaming and full duplex RPCs from gRPC go introduction

Description This is an implementation of a gRPC client and server that provides route guidance from gRPC Basics: Go tutorial. It demonstrates how to u

Nov 24, 2021
Go-grpc-template - A small template for quickly bootstrapping a, developer platform independent gRPC golang application
Go-grpc-template - A small template for quickly bootstrapping a, developer platform independent gRPC golang application

go-grpc-template A small template for quickly bootstrapping a developer platform

Jan 20, 2022
GRPC - A client-server mockup, using gRPC to expose functionality.

gRPC This is a mockup application that I built to help me visualise and understand the basic concepts of gRPC. In this exchange, the client can use a

Jan 4, 2022
Go-grpc-tutorial - Simple gRPC server/client using go

Simple gRPC server/client using go Run server go run usermgmt_server/usermgmt_

Feb 14, 2022
🖥️ Fast, modern and cross-platform SSH client
🖥️ Fast, modern and cross-platform SSH client

??️ Fast, modern and cross-platform SSH client Installation Build from source Requirements for building the project from source: Node 16 Go >= 1.17 Wa

Mar 20, 2022
Cross-poster - A cross-posting tool for golang
Cross-poster - A cross-posting tool for golang

How to start cp config.example.json config.json update config in config.json Bui

Feb 19, 2022
A suite of gRPC debugging tools. Like Fiddler/Charles but for gRPC.

grpc-tools A suite of tools for gRPC debugging and development. Like Fiddler/Charles but for gRPC! The main tool is grpc-dump which transparently inte

Dec 22, 2022
grpc-http1: A gRPC via HTTP/1 Enabling Library for Go

grpc-http1: A gRPC via HTTP/1 Enabling Library for Go This library enables using all the functionality of a gRPC server even if it is exposed behind a

Dec 17, 2022
Go based grpc - grpc gateway micro service example

go-grpc-gateway-server This repository provides an example for go based microservice. Go micro services developed based on gRPC protobuf's and also us

Dec 8, 2021
Simple grpc web and grpc transcoding with Envoy
Simple grpc web and grpc transcoding with Envoy

gRPC Web and gRPC Transcoding with Envoy This is a simple stand-alone set of con

Dec 25, 2021
Go-grpc - This is grpc server for golang.

go-grpc This is grpc server for golang. protocのインストール brew install protoc Golang用のプラグインのインストール go install google.golang.org/protobuf/cmd/protoc-gen-go

Jan 2, 2022
GRPC - Creating a gRPC service from scratch

#Go gRPC services course Creating a gRPC service from scratch Command line colle

Jan 2, 2022
Totem - A Go library that can turn a single gRPC stream into bidirectional unary gRPC servers

Totem is a Go library that can turn a single gRPC stream into bidirectional unar

Jan 6, 2023
Grpc-gateway-map-null - gRPC Gateway test using nullable values in map

Demonstrate gRPC gateway behavior with nullable values in maps Using grpc-gatewa

Jan 6, 2022
Todo-app-grpc - Go/GRPC codebase containing RealWorld examples (CRUD, auth, advanced patterns, etc)

Go/GRPC codebase containing RealWorld examples (CRUD, auth, advanced patterns, e

Oct 12, 2022
Raft-grpc-demo - Some example code for how to use Hashicorp's Raft implementation with gRPC

raft-grpc-example This is some example code for how to use Hashicorp's Raft impl

Jan 4, 2022
Benthos-input-grpc - gRPC custom benthos input

gRPC custom benthos input Create a custom benthos input that receives messages f

Sep 26, 2022
Grpc-train - Train booking demo using gRPC

gRPC Demo: Train Booking Service Description Usage Contributing Development Tool

Feb 6, 2022
This repo contains a sample app exposing a gRPC health endpoint to demo Kubernetes gRPC probes.

This repo contains a sample app exposing a health endpoint by implementing grpc_health_v1. Usecase is to demo the gRPC readiness and liveness probes introduced in Kubernetes 1.23.

Feb 9, 2022