mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-01-11 22:40:26 +01:00
copy grpcurl readme and fix
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
A request action plugin for Yaak that converts HTTP requests into [curl](https://curl.se)
|
||||
commands, making it easy to share, debug, and execute requests outside Yaak.
|
||||
|
||||

|
||||

|
||||
|
||||
## Overview
|
||||
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
"name": "@yaak/action-copy-curl",
|
||||
"displayName": "Copy as Curl",
|
||||
"description": "Copy request as a curl command",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/mountain-loop/yaak.git",
|
||||
"directory": "plugins/action-copy-curl"
|
||||
},
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"scripts": {
|
||||
|
||||
76
plugins/action-copy-grpcurl/README.md
Normal file
76
plugins/action-copy-grpcurl/README.md
Normal file
@@ -0,0 +1,76 @@
|
||||
# Copy as gRPCurl
|
||||
|
||||
An HTTP request action plugin that converts gRPC requests
|
||||
into [gRPCurl](https://github.com/fullstorydev/grpcurl) commands, enabling easy sharing,
|
||||
debugging, and execution of gRPC calls outside Yaak.
|
||||
|
||||

|
||||
|
||||
## Overview
|
||||
|
||||
This plugin adds a "Copy as gRPCurl" action to gRPC requests, converting any gRPC request
|
||||
into its equivalent executable command. This is useful for debugging gRPC services,
|
||||
sharing requests with team members, or executing gRPC calls in terminal environments where
|
||||
`grpcurl` is available.
|
||||
|
||||
## How It Works
|
||||
|
||||
The plugin analyzes your gRPC request configuration and generates a properly formatted
|
||||
`grpcurl` command that includes:
|
||||
|
||||
- gRPC service and method names
|
||||
- Server address and port
|
||||
- Request message data (JSON format)
|
||||
- Metadata (headers)
|
||||
- Authentication credentials
|
||||
- Protocol buffer definitions
|
||||
|
||||
## Usage
|
||||
|
||||
1. Configure a gRPC request as usual in Yaak
|
||||
2. Right-click on the request sidebar item
|
||||
3. Select "Copy as gRPCurl" from the available actions
|
||||
4. The command is copied to your clipboard
|
||||
5. Share or execute the command
|
||||
|
||||
## Generated gRPCurl Examples
|
||||
|
||||
### Simple Unary Call
|
||||
|
||||
|
||||
```bash
|
||||
grpcurl -plaintext \
|
||||
-d '{"name": "John Doe"}' \
|
||||
localhost:9090 \
|
||||
user.UserService/GetUser
|
||||
```
|
||||
|
||||
### Call with Metadata
|
||||
|
||||
```bash
|
||||
grpcurl -plaintext \
|
||||
-H "authorization: Bearer my-token" \
|
||||
-H "x-api-version: v1" \
|
||||
-d '{"user_id": "12345"}' \
|
||||
api.example.com:443 \
|
||||
user.UserService/GetUserProfile
|
||||
```
|
||||
|
||||
### Call with TLS
|
||||
|
||||
```bash
|
||||
grpcurl \
|
||||
-d '{"query": "search term"}' \
|
||||
secure-api.example.com:443 \
|
||||
search.SearchService/Search
|
||||
```
|
||||
|
||||
### Call with Proto Files
|
||||
|
||||
```bash
|
||||
grpcurl -import-path /path/to/protos \
|
||||
-proto /other/path/to/user.proto \
|
||||
-d '{"email": "user@example.com"}' \
|
||||
localhost:9090 \
|
||||
user.UserService/CreateUser
|
||||
```
|
||||
@@ -2,6 +2,11 @@
|
||||
"name": "@yaak/action-copy-grpcurl",
|
||||
"displayName": "Copy as gRPCurl",
|
||||
"description": "Copy gRPC request as a grpcurl command",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/mountain-loop/yaak.git",
|
||||
"directory": "plugins/action-copy-curl"
|
||||
},
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"scripts": {
|
||||
|
||||
BIN
plugins/action-copy-grpcurl/screenshot.png
Normal file
BIN
plugins/action-copy-grpcurl/screenshot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 492 KiB |
@@ -90,15 +90,15 @@ export async function convert(request: Partial<GrpcRequest>, allProtoFiles: stri
|
||||
if (request.url) {
|
||||
const server = request.url.replace(/^https?:\/\//, ''); // remove protocol
|
||||
xs.push(server);
|
||||
xs.push(NEWLINE);
|
||||
}
|
||||
|
||||
// Add service + method
|
||||
if (request.service && request.method) {
|
||||
xs.push(`${request.service}/${request.method}`);
|
||||
xs.push(NEWLINE);
|
||||
}
|
||||
|
||||
xs.push(NEWLINE);
|
||||
|
||||
// Remove trailing newline
|
||||
if (xs[xs.length - 1] === NEWLINE) {
|
||||
xs.splice(xs.length - 1, 1);
|
||||
|
||||
Reference in New Issue
Block a user