Giter Club home page Giter Club logo

bloomrpc's Introduction

BloomRPC

The missing GUI Client for gRPC services 🌸

Inspired by Postman and GraphQL Playground
BloomRPC aims to provide the simplest and most efficient developer experience for exploring and querying your GRPC services.

This project was archived in Jan 2023. Its usage is no longer recommended.

Why was this project archived?

When BloomRPC was first released in Dec 2018, there were very few GUI gRPC tools available, hence the project tagline: "The missing GUI client for gRPC services". It was a good tool for a few years. Unfortunately, the project stalled in development and issues piled up, leaving users frustrated when things weren't working. We no longer felt that BloomRPC offered a good experience, so we decided to archive it.

What should I use instead?

Check out the list of current gRPC tools at awesome-grpc.

So long, and thanks for all the fish

bloomrpc's People

Contributors

abhivaikar avatar allan2 avatar backjo avatar denislobanov avatar dependabot[bot] avatar dupinder avatar epan avatar ericsmekens avatar exfalso avatar fenos avatar george-angel avatar gunturaf avatar igorhalfeld avatar int3cd avatar jackieli-tes avatar jackielii avatar jurgentreep avatar kawarimidoll avatar lorenz avatar magnoraphael avatar mattgurney avatar mazen-embaby avatar nateshmbhat avatar redhoyasa avatar rentziass avatar simonhdickson avatar thinktainer avatar tim-bm avatar vavsab avatar xebuz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bloomrpc's Issues

Migrate CI to Travis

We used to run CircleCI before going open source without problems.
Now we should be moving to TravisCI as it offers better plans for open source repositories

Metadata Format

I cannot for the life of me find an example of how to format the metadata and am simply looking for someone to pass me a resource. Thanks!

grpc-web support

Would love to see this gets prioritised.

Do you accept contribute on this matter? We love this tool, but when it comes to grpc-web, we can't find anything easy to use.

Error parsing the request message: map with non-scalar value

Testing today with the latest release (1.1.1.88) I get this error:

"error": "Error parsing the request message, please report the problem sharing the offending protofile"

When loading this proto file:
https://github.com/cmagnuson/announcerdisplay-protobuf/blob/master/src/main/proto/SettingsMessage.proto

It appears the map on line 20 is causing the issue. If I comment it out or change it to a map<string, string> then bloomrpc handles the proto file as expected.

Blank screen after opening and selecting proto files

The screen goes blank (white screen that only displays the menu options) after opening proto files and randomly selecting the files in the left nav. The error is reproducible. The only way to "recover" seems to be to delete the config directory. Simply closing and re-running the app results in the while/ blank screen.

Reported for Debian (testing) using the v1.0.0 .deb package.

Steps to reproduce:

  1. Open bloomrpc
  2. Click the plus button to add proto files
  3. Select proto files (in my case, I selected 21 files)
  4. Click open

The files initially loaded and were displayed in the left nav, However, after randomly selecting files in left nav, the screen went blank/ white. There was no way to recover in the UI.

Results:

  1. Blank screen
  2. Only menu options are displayed: File, View, Help
  3. Closing and restarting results in blank screen (unrecoverable error)

The error/ problem is reproducible.

Support for google.rpc.Status

Adding a proto file with

import "google/rpc/status.proto";

and

google.rpc.Status error_response = 99;

givers error message

Error while importing protos
no such Type or Enum 'google.rpc.Status' in Type .xxx.xxxx.TypeName

Name resolution failure for insecure client on localhost

Windows 10 1903
BloomRPC 1.3.1
electron: 4.0.3
chrome: 69.0.3497.106
node: 10.11.0
v8: 6.9.427.24-electron.0

When I try to talk to a gRPC server running on localhost, I always get the following response. Even though other gRPC clients work:

{
  "error": "14 UNAVAILABLE: Name resolution failure"
}

Repro:

git clone https://github.com/grpc/grpc-web
cd grpc-web
docker-compose pull
docker-compose up -d node-server

Server now runs on http://localhost:9090

In BloomRPC, now load the proto file in grpc-web\packages\grpc-web\test\protos\echo.proto
And send the following request to http://localhost:9090:

{
  "message": "Hello"
}

Now the error above is written to the Response field.

Blank screen after clicking on service that does not exists

Problem

When a Rpc Service has the same name as a MessageType in a different package, but is using it via imports, the client will display two different services.

And when clicking on the second service (The one that does not exist in that package name, nor should it), bloom will display a white page.

image

Before
image

After
image

Info

Version: 1.3.0
OS: Windows

Current Workaround

Go to ...AppData\Roaming\bloom-rpc-client\editor.json and change the tabs.activeKey to a valid key.

Steps to reproduce

Imported paths

C:\Users\desktop\Desktop\somePath

Proto Files

C:\Users\desktop\Desktop\somePath\proto\example-messages.proto

syntax = "proto3";

package mypackage.common;

message Example {
}

C:\Users\desktop\Desktop\somePath\proto\service.proto

syntax = "proto3";

import "proto/example-messages.proto";

package mypackage.service;

service Example {
    rpc DoSomeThing (DoSomeThingRequest) returns (DoSomeThingResponse) {
    }
}

message DoSomeThingRequest {
}
message DoSomeThingResponse {
    mypackage.common.Example msg = 1;
}

Add the proto\service.proto and press on the second service.

Proposal: stress test

So I think that add one feature to stress test or something like that can be a great acquisition for bloomRPC, what you think about that @fenos?

Streaming Response Handling

It would be great to have streaming response tile or append to a larger log of responses. My server moves through responses so quickly that I never see the errors or responses that come through until the last one hits.

Support javascript parsing of responses.

This together with #6 would allow for request chaining. There's similar functionality in postman via 'test' tab where arbitrary JS can be run and variables can be set on environment etc.

Response Time

Hey, thanks for this awesome tool.
It would be great if you can add in some part the response time of any service method.

Thanks!

Add Error Boundaries

Adding error Boundaries to the editor, is an essential move to allow a better user experience in case of parsing errors or not handled edge cases that might happen during parsing or during input generation.

Protobuf Extensions Support

This is more of a question rather than issue. Is it planned or even possible to support protobuf extensions?

Response metadata

It would be nice to see not only response body but also response metadata.
It could be useful if server provides validation errors in gRPC status details.

Support for standard TLS serverside

Need support for standard setup with encrypted channel / TLS.

#8 adds support for using specific client certificates, but this is not the same issue.

support for custom options

Hi, we have a proto with custom options as below

extend google.protobuf.FileOptions {
     string sample = 51235;
     string demo = 512236;
}

option (sample) = "Sample Value";
option (demo) = "Demo Value";

When i try to import, i am facing issue as Error while importing protos illegal token 'option'
It would be nice if there's a way to work with these kind of protos's.

Note : I am able to generate stubs.

Save response in file.

Hello.
How i can save stream response in one large file? When u have many little page Stream 1, Stream 2 Stream N. I need find some data from response by id or by field name and check empty its or now.
If i will save all text response in one large file. I will have chance search in file =)
I'm apologize for my bad eng.
And thank you very much for the good application.

Support recursive data structures

Trying to load a protobuf with a recursive data structure in it results in the client displaying the message {"error": "Error parsing the request message, please report the problem sharing the offending protofile"}. As a minimum viable example of this behaviour, try to load the following protobuf file:

syntax = "proto3";

service Main {
    rpc Rpc(Message) returns (Message);
}

message Message {
    Message message = 1;
}

Add an About dialog box

It would be great to have an an "About" item on the Help menu. The dialog box at the very least should have the version number of BloomRPC but you could also include the same information that VS Code has:

image

And a nice to have is to check to see if an update is available.


BTW, thank you for building BloomRPC, it's super helpful and works really well. Indispensable for gRPC development.

Cannot handle big files

I have a 23Kb proto file that contains two dependencies, one with 171 bytes and the other with 9 Kb. Unfortunately I am not able to share the proto file

When I try to import this file I get the following error:
Screenshot 2019-03-18 at 17 06 51

Is it possible to increase the call stack size based on the computer?

This issue makes it really difficult to use bloomrpc in an enterprise environment.

Add ability to open a service method in multiple tabs

Currently when selecting a service method on it loads in one tab only. Please add the ability via a double click on the service method (or other mechanism sic duplicate a tab) to allow a service method to be open in multiple tabs.

Cannot read property 'root' of undefined error

I'm getting the following error when trying to import the following .proto, this is on a Mac OSX.

Error while importing protos
Cannot read property 'root' of undefined

This is my proto, which includes the service definition. It imports the file without the service definition, but I don't see any option to specify fields. I may just not be using it correctly, some usage documentation would be nice.

syntax = "proto3";

package com.someprofile;

service UserDataApi {
    rpc get(ReadRequest) returns (ReadResponse) {
    }

    rpc put(WriteRequest) returns (WriteResponse) {
    }
}

message ReadRequest {
    repeated string userIds = 1;
    repeated string fields = 2;
}

message ReadResponse {
    int64 ttl = 1;
}

message WriteRequest {
    int64 ttl = 1;
}

message WriteResponse {
    string userId = 1;
    bool status = 2;
}

Importing Protos doesn't work

screen shot 2019-01-25 at 3 17 52 pm

Importing any proto file causes this on version 1.2.1 on Mac [https://github.com/uw-labs/bloomrpc/releases/download/v1.2.1/bloomrpc-1.2.1-mac.zip]

Expose version on linux

Release version is not exposed in the UI on linux.

Ideally, both the UI and the binary would expose version, e.g. bloomrpc --version.

The workaround is to check dpkg status: dpkg -s bloomrpc | grep Version

Reported for latest release: 1.2.1-38

Int64 support

I notice if I pass an int64 number, then it will be cut due to js limit, so do we have a better solution on this.

Windows Build

FYI, should be able to get a free Azure DevOps (formerly VSTS, Visual Studio Team Services) that includes one Windows agent on Azure that should have enough time. It also supports GitHub webhooks, depending on your CI/CD process.

I'm not an MS guy so much, but do like to see things in the big 3 platforms as much as possible.

How to import dependent protos

Hi

I have two directories 1. proto 2. grpc
all the grpc services have written in grpc directory. when i try importing grpc services to bloomrpc it says Temp.proto not found. I have already added the absolute path.

Absolute path: $HOME/grpc-core/src/main/proto/com.grpc.test/proto/v0
v0 directory has all the proto which was used by grpc services.
please help me out.

Load proto file from HTTP

Instead of loading a proto definition from file, it could be really awesome to load it from a HTTP url.
This is especially helpful when this proto definition comes from a production / test server because it is always up-to-date

Support import path

Currently the UI will raise an error if the proto file contains an import that it can't resolve. Could the UI support specifying import paths similar to what grpcurl does with its -import-path option?

Editor suggestion for parsed map type is incorrect

With the following proto file and map types

syntax = "proto3";

import "google/api/annotations.proto";

package com.someprofile;

service UserDataApi {
    rpc get(ReadRequest) returns (ReadResponse) {
        option (google.api.http) = {
        get: "/v1/read"
      };
    }

    rpc put(WriteRequest) returns (WriteResponse) {
        option (google.api.http) = {
        put: "/v1/write"
        body: "*"
      };
    }
}

message ReadRequest {
    repeated string userIds = 1;
    repeated string fields = 2;
}

message ReadResponse {
    map<string, InternalData> internalData = 1;
    map<string, ThirdPartyData>  thirdPartyData = 2;
}

message WriteRequest {
    map<string, InternalData> internalData = 1;
    map<string, ThirdPartyData> thirdPartyData = 2;
    int64 ttl = 3;
}

message WriteResponse {
    string userId = 1;
    bool status = 2;
}

message InternalData {
    map<string, string> data = 1;
}

message ThirdPartyData {
    map<string, Segments> data = 1;

    message Segments {
        repeated string segments = 1;
    }
}

The initial editor suggestion looks like the following. It seems to be an additional nesting or something

{
  "internalData": {
    "data": {
      "Hello": "Hello"
    }
  },
  "thirdPartyData": {
    "data": {
      "segments": [
        "Hello"
      ]
    }
  },
  "ttl": 20
}

The working input actually looks like this:

{  
   "internalData":{  
      "user1":{  
         "data":{  
            "key1":"zak",
            "key2":"def"
         }
      }
   },
   "thirdPartyData":{
       "user1":{
           "data":{
               "key3": { "segments": [ "891", "456" ] }
           }
       }
   },
   "ttl":86400
}

Illegal id -1 for reserved -1;

Getting the following error for a proto file with reserved -1.

Error while importing protos illegal id '-1' 

my.proto

syntax = "proto3";

....

message Status {
  enum Values {
    reserved -1;
    INVALID = 0;
    OK = 1;
    OK_BUT_WARNINGS = 2;
    ...
  }
}

....

Compress the preview image

Hi,
The preview GIF image in the README file is too big (41.5MB), that make it very slow when viewing this repo without a good connection.
I used GifCompressor to compress the image and it can be compressed up to 76% (~10MB, still big but a lot better now).

Not sure if it can help but I attached the compressed image here so you can use it or can just record another one with compression on.
Also, it would be better if you can capture mouse cursor in preview.

editor-preview-min

Keep up your good work.
Thanks

Blank screen when RPC is renamed.

Steps to reproduce this issue

  1. create a proto file
  2. load it in bloomrpc
  3. play around/query a RPC
  4. rename currently selected RPC
  5. hit reload on bloomrpc
  6. 💥 Blank Screen.

Workaround.

  1. go to bloomrpc config dir
    • on Linux, it's at ~/.config/bloom-rpc-client
  2. remove editor.json
    • NOTE: you will lose all request data(from editor)
  3. profit 💰

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.