mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-24 17:48:30 +02: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)
|
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.
|
commands, making it easy to share, debug, and execute requests outside Yaak.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
|
|||||||
@@ -2,6 +2,11 @@
|
|||||||
"name": "@yaak/action-copy-curl",
|
"name": "@yaak/action-copy-curl",
|
||||||
"displayName": "Copy as Curl",
|
"displayName": "Copy as Curl",
|
||||||
"description": "Copy request as a curl command",
|
"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,
|
"private": true,
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"scripts": {
|
"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",
|
"name": "@yaak/action-copy-grpcurl",
|
||||||
"displayName": "Copy as gRPCurl",
|
"displayName": "Copy as gRPCurl",
|
||||||
"description": "Copy gRPC request as a grpcurl command",
|
"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,
|
"private": true,
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"scripts": {
|
"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) {
|
if (request.url) {
|
||||||
const server = request.url.replace(/^https?:\/\//, ''); // remove protocol
|
const server = request.url.replace(/^https?:\/\//, ''); // remove protocol
|
||||||
xs.push(server);
|
xs.push(server);
|
||||||
|
xs.push(NEWLINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add service + method
|
// Add service + method
|
||||||
if (request.service && request.method) {
|
if (request.service && request.method) {
|
||||||
xs.push(`${request.service}/${request.method}`);
|
xs.push(`${request.service}/${request.method}`);
|
||||||
|
xs.push(NEWLINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
xs.push(NEWLINE);
|
|
||||||
|
|
||||||
// Remove trailing newline
|
// Remove trailing newline
|
||||||
if (xs[xs.length - 1] === NEWLINE) {
|
if (xs[xs.length - 1] === NEWLINE) {
|
||||||
xs.splice(xs.length - 1, 1);
|
xs.splice(xs.length - 1, 1);
|
||||||
|
|||||||
Reference in New Issue
Block a user