protoCURL is cURL for Protobuf: The command-line tool for interacting with Protobuf over HTTP REST endpoints using human-readable text formats

protoCURL

Tests Status GitHub Release (latest SemVer) DockerHub Version (latest semver)

protoCURL is cURL for Protobuf: The command-line tool for interacting with Protobuf over HTTP REST endpoints using human-readable text formats.

Install

protocurl includes and uses a bundled protoc by default. It is recommended to install curl into PATH for configurable http requests. Otherwise protocurl will use a simple non-configurable fallback http implementation.

Native CLI

Archive

  1. Download the latest release archive for your platform from https://github.com/qaware/protocurl/releases
  2. Extract the archive into a folder, e.g. /opt/protocurl.
  3. Add symlink to the binary in the folder. e.g. ln -s /opt/protocurl/bin/protocurl /usr/bin/protocurl Or add the binary folder /opt/protocurl/bin to your system-wide path.
  4. Test it via protocurl -h

Debian .deb package

  1. Download the latest release .deb for your architecture from https://github.com/qaware/protocurl/releases
  2. Install dependency curl: sudo apt install curl
  3. Install sudo dpkg -i <downloaded-release>.deb
  4. Test it via protocurl -h

Alpine .apk package

  1. Download the latest release .apk for your architecture from https://github.com/qaware/protocurl/releases
  2. Install dependencies curl and gcompat: sudo apk add curl gcompat
  3. Install sudo apk add --allow-untrusted <downloaded-release>.apk
  4. Test it via protocurl -h

Docker

Simply run docker run -v "/path/to/proto/files:/proto" qaware/protocurl <args>. See Quick Start for how to use.

Quick Start

After installing protocurl a request is as simple as:

protocurl -I test/proto -i ..HappyDayRequest -o ..HappyDayResponse \
  -u http://localhost:8080/happy-day/verify -d "includeReason: true"

where

  • -I test/proto points to the directory of protobuf files of your service
    • with docker one needs to instead mount the directory to /proto via -v $PWD/test/proto:/proto
  • -i ..HappyDayRequest and -o ..HappyDayResponse are Protobuf message types. The .. makes protocurl infer their full package paths.
  • -u http://localhost:8080/happy-day/verify is the url to the HTTP REST endpoint accepting and returning binary protobuf payloads
    • with docker one may additionally need --network host
  • -d "includeReason: true" is the protobuf payload in Protobuf Text or JSON Format

Then protocurl will

  • encode the textual Protobuf message to a binary request payload
  • send the binary request to the HTTP REST endpoint (via curl, if possible) and receive the binary response payload
  • decode the binary response payload back to text and display it

and produce the following output:

=========================== Request Text     =========================== >>>
includeReason: true
=========================== Response Text    =========================== <<<
isHappyDay: true
reason: "Thursday is a Happy Day! ⭐"
formattedDate: "Thu, 01 Jan 1970 00:00:00 GMT"

See below for usage notes and EXAMPLES.md for more information.

Usage and Example

See usage notes and EXAMPLES.md.

Protobuf JSON Format

protoCURL supports the Protobuf JSON Format. Note, that the JSON format is not a straightforward 1:1 mapping as it is in the case of the Protobuf Text Format (described below). For instance, the JSON mapping for timestamp.proto uses a human-readable string representation, whereas the payload itself and the text format use a representation with seconds and nanoseconds.

Protobuf Text Format

Aside from JSON, Protobuf primarily and natively supports a text format which represents the fields 1:1 like in the wire-format. For instance, repeated fields are condensed into an array in the JSON format - whereas they are simply ' repeated' without an array type in the text format.

This text format's syntax is hardly documented (protobuf issue), so this section will shortly describe how to write Protobuf messages in the text format.

Given the following .proto file

syntax = "proto3";

import "google/protobuf/timestamp.proto";

message HappyDayRequest {
  google.protobuf.Timestamp date = 1;
  bool includeReason = 2;

  double myDouble = 3;
  int64 myInt64 = 5;
  repeated string myString = 6;
  repeated NestedMessage messages = 9;
}

message NestedMessage {
  Foo fooEnum = 1;
  repeated int32 i = 4;
}

enum Foo {
  BAR = 0;
  BAZ = 1;
}

A HappyDayRequest message in text format might look like this:

includeReason: true,
myInt64: 123123123123,
myString: "hello world"
myString: 'single quotes are also possible'
myDouble: 123.456
messages: { fooEnum: BAR, i: 0, i: 1, i: 1337 },
messages: { i: 15, fooEnum: BAZ, i: -1337 },
messages: { },
date: { seconds: 123, nanos: 321 }

In summary:

  • No encapsulating { ... } are used for the top level message (in contrast to JSON).
  • fields are comma separated and described via <fieldname>: <value>.
    • Strictly speaking, the commas are optional and whitespace is sufficient
  • repeated fields are simply repeated multiple times (instead of using an array) and they do not need to appear consecutively.
  • nested messages are described with { ... } opening a new context and describing their fields recursively
  • scalar values are describes similar to JSON. Single and double quotes are both possible for strings.
  • enum values are referenced by their name
  • built-in messages (such as google.protobuf.Timestamp are described just like user-defined custom messages via { ... } and their message fields

This page shows more details on the text format.

Development

For development it is recommended to use the a bash-like Terminal either natively (Linux, Mac) or via MinGW on Windows.

About the CI/CD tests: TESTS.md

How to make a release: RELEASE.md

Setup

  • As for script utilities, one needs bash, jq, zip, unzip and curl.
  • One also needs to download the protoc binaries for the local development via release/10-get-protoc-binaries.sh.

For development the generated-local.Dockerfile (via generate-local.Dockerfile.sh) is used. To build the image simply run source test/suite/setup.sh and then buildProtocurl

Updating Docs after changes

Generate the main docs (.md files etc.) in bash/WSL via doc/generate-docs.sh <absolute-path-to-protocurl-repository>.

Once a pull request is ready, run this to generate updated docs.

Enhancements and Bugs

See issues.

FAQ

  • How is protocurl different from grpccurl? grpccurl only works with gRPC services with corresponding endpoints. However, classic REST HTTP endpoints with binary Protobuf payloads are only possible with protocurl.
  • Why is the use of a runtime curl recommended with protocurl? curl is a simple, flexible and mature command line tool to interact with HTTP endpoints. In principle, we could simply use the HTTP implementation provided by the host programming language (Go) - and this is what we do if no curl was found in the PATH. However, as more people use protocurl, they will request for more features - leading to a feature creep in such a 'simple' tool as protocurl. We would like to avoid implementing the plentiful features which are necessary for a proper HTTP CLI tool, because HTTP can be complex. Since is essentially what curl already does, we recommend using curl and all advanced features are only possible with curl.
  • What are some nice features of protocurl?
    • The implementation is well tested with end-2-end approval tests (see TESTS.md). All features are tested based on their effect on the behavior/output. Furthermore, there are also a few cross-platform native CI tests running on Windows and MacOS runners.
    • The build and release process is optimised for minimal maintenance efforts. During release build, the latest versions of many dependencies are taken automatically (by looking up the release tags via the GitHub API).
    • The documentation and examples are generated via scripts and enable one to update the examples automatically rather than manually. The consistency of the outputs of the code with the checked in documentation is further tested in CI.
Owner
QAware GmbH
QAware ist ein Projekthaus für Softwaretechnik. Wir analysieren, renovieren, erfinden und realisieren Softwaresysteme für Kunden, deren Erfolg von IT abhängt.
QAware GmbH
Comments
  • Raw Format for Responses

    Raw Format for Responses

    If no .proto files for the response are available, then it's still possible to receive and decode messages. The decoding can happen in a way which only shows the field numbers and the field contents - without the field names; essentially protoc --decode_raw. This might be useful for users of protoCURL.

  • Quality of Life Improvements

    Quality of Life Improvements

    Avoid explicitly specifying the file via -f and instead search the message types from -i and -o. Additionally, it should be sufficient to only use the name of the message type instead of the full path, whenever the message type is unique.

    • [x] user feedback/iteration and tests
    • [x] implementation
    • [x] update documentation
  • Bump protobufjs from 7.0.0 to 7.1.0 in /test/servers

    Bump protobufjs from 7.0.0 to 7.1.0 in /test/servers

    Bumps protobufjs from 7.0.0 to 7.1.0.

    Release notes

    Sourced from protobufjs's releases.

    protobufjs: v7.1.0

    7.1.0 (2022-08-26)

    Features

    Bug Fixes

    Changelog

    Sourced from protobufjs's changelog.

    7.1.0 (2022-08-26)

    Features

    Bug Fixes

    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)
  • Bump typescript from 4.7.4 to 4.8.2 in /test/servers

    Bump typescript from 4.7.4 to 4.8.2 in /test/servers

    Bumps typescript from 4.7.4 to 4.8.2.

    Release notes

    Sourced from typescript's releases.

    TypeScript 4.8

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:

    TypeScript 4.8 RC

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:

    TypeScript 4.8 Beta

    For release notes, check out the release announcement.

    For the complete list of fixed issues, check out the

    Downloads are available on:

    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)
  • Bump google.golang.org/protobuf from 1.28.0 to 1.28.1 in /src

    Bump google.golang.org/protobuf from 1.28.0 to 1.28.1 in /src

    Bumps google.golang.org/protobuf from 1.28.0 to 1.28.1.

    Commits
    • 6875c3d all: release v1.28.1
    • 881da6e all: Add prebuild binaries for arm64
    • 2a74a0e A+C: delete AUTHORS and CONTRIBUTORS
    • de9682a internal/impl: improve MessageInfo.New performance
    • b0a9446 all: reformat with go1.19 gofmt
    • c1bbc5d all: make integration test work on darwin/arm64
    • 5f429f7 proto: fix compilation failure in tests
    • fc44d00 proto: use reflect.Ptr for backward compatibility
    • 380c339 proto: short-circuit Equal when inputs are identical
    • 784c482 all: remove shorthand import aliases
    • Additional commits viewable in compare view

    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)
  • Bump crazy-max/ghaction-chocolatey from 1 to 2

    Bump crazy-max/ghaction-chocolatey from 1 to 2

    Bumps crazy-max/ghaction-chocolatey from 1 to 2.

    Release notes

    Sourced from crazy-max/ghaction-chocolatey's releases.

    v2.0.0

    • Node 16 as default runtime (#131)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.

    v1.7.0

    • Chocolatey 1.1.0 (#130)
    • Update dev dependencies and workflow (#129)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#125)

    v1.6.0

    • Bump @​actions/exec from 1.0.4 to 1.1.0 (#122)
    • Bump @​actions/core from 1.2.7 to 1.5.0 (#123)
    • Chocolatey 0.11.1 (#124)
    • Simplify build script (#119)

    v1.5.0

    • Update dev dependencies (#118)
    • Yarn v2 (#117)
    • Pull image first (#116)
    • Review console output (#115)
    • Move to docker/metadata-action

    v1.4.2

    • Bump @​actions/core from 1.2.6 to 1.2.7 (#109)
    • Fix Docker image

    v1.4.1

    • Enhance workflow (#104)
    • Container based developer flow (#103)

    v1.4.0

    • Add image input
    • Publish image to GHCR
    • Update deps

    v1.3.1

    • Fix CVE-2020-15228

    v1.3.0

    • Update Docker image using Mono 6.8 with latest Chocolatey stable

    v1.2.2

    • Update README

    v1.2.1

    • args input required

    v1.2.0

    • Cleanup local paths from extra fields
    • Update deps

    ... (truncated)

    Changelog

    Sourced from crazy-max/ghaction-chocolatey's changelog.

    1.7.0 (2022/04/23)

    • Chocolatey 1.1.0 (#130)
    • Update dev dependencies and workflow (#129)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#125)
    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)
  • Bump docker/build-push-action from 2 to 3

    Bump docker/build-push-action from 2 to 3

    Bumps docker/build-push-action from 2 to 3.

    Release notes

    Sourced from docker/build-push-action's releases.

    v3.0.0

    • Node 16 as default runtime by @​crazy-max (#564)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • Standalone mode support by @​crazy-max (#601 #609)
    • chore: update dev dependencies and workflow by @​crazy-max (#571)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#573)
    • Bump @​actions/github from 5.0.0 to 5.0.1 (#582)
    • Bump minimist from 1.2.5 to 1.2.6 (#584)
    • Bump semver from 7.3.5 to 7.3.7 (#595)
    • Bump csv-parse from 4.16.3 to 5.0.4 (#533)

    Full Changelog: https://github.com/docker/build-push-action/compare/v2.10.0...v3.0.0

    v2.10.0

    • Add imageid output and use metadata to set digest output (#569)
    • Add build-contexts input (#563)
    • Enhance outputs display (#559)

    v2.9.0

    • add-hosts input (#553 #555)
    • Fix git context subdir example and improve README (#552)
    • Add e2e tests for ACR (#548)
    • Add description on github-token option to README (#544)
    • Bump node-fetch from 2.6.1 to 2.6.7 (#549)

    v2.8.0

    • Allow specifying subdirectory with default git context (#531)
    • Add cgroup-parent, shm-size, ulimit inputs (#501)
    • Don't set outputs if empty or nil (#470)
    • docs: example to sanitize tags with metadata-action (#476)
    • docs: wrong syntax to sanitize repo slug (#475)
    • docs: test before pushing your image (#455)
    • readme: remove v1 section (#500)
    • ci: virtual env file system info (#510)
    • dev: update workflow (#499)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#160)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#469)
    • Bump tmpl from 1.0.4 to 1.0.5 (#465)
    • Bump csv-parse from 4.16.0 to 4.16.3 (#451 #459)

    v2.7.0

    • Add metadata output (#412)
    • Bump @​actions/core from 1.4.0 to 1.5.0 (#439)
    • Add note to sanitize tags (#426)
    • Cache backend API docs (#406)
    • Git context now supports subdir (#407)
    • Bump codecov/codecov-action from 1 to 2 (#415)

    v2.6.1

    • Small typo and ensure trimmed output (#400)

    ... (truncated)

    Commits
    • e551b19 Merge pull request #564 from crazy-max/node-16
    • 3554377 Merge pull request #609 from crazy-max/ci-fix-test
    • a62bc1b ci: fix standalone test
    • c208583 Merge pull request #601 from crazy-max/standalone-mode
    • fcd9124 Merge pull request #607 from docker/dependabot/github_actions/docker/metadata...
    • 0ebe720 Bump docker/metadata-action from 3 to 4
    • 38b4580 Standalone mode support
    • ba31738 Merge pull request #533 from docker/dependabot/npm_and_yarn/csv-parse-5.0.4
    • 43721d2 Update generated content
    • 5ea21bf Fix csv-parse implementation since major update
    • Additional commits viewable in compare view

    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)
  • Bump docker/login-action from 1 to 2

    Bump docker/login-action from 1 to 2

    Bumps docker/login-action from 1 to 2.

    Release notes

    Sourced from docker/login-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#161)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • chore: update dev dependencies and workflow by @​crazy-max (#170)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#167)
    • Bump @​actions/io from 1.1.1 to 1.1.2 (#168)
    • Bump minimist from 1.2.5 to 1.2.6 (#176)
    • Bump https-proxy-agent from 5.0.0 to 5.0.1 (#182)

    Full Changelog: https://github.com/docker/login-action/compare/v1.14.1...v2.0.0

    v1.14.1

    • Revert to Node 12 as default runtime to fix issue for GHE users (#160)

    v1.14.0

    • Update to node 16 (#158)
    • Bump @​aws-sdk/client-ecr from 3.45.0 to 3.53.0 (#157)
    • Bump @​aws-sdk/client-ecr-public from 3.45.0 to 3.53.0 (#156)

    v1.13.0

    • Handle proxy settings for aws-sdk (#152)
    • Workload identity based authentication docs for GCR and GAR (#112)
    • Test login against ACR (#49)
    • Bump @​aws-sdk/client-ecr from 3.44.0 to 3.45.0 (#132)
    • Bump @​aws-sdk/client-ecr-public from 3.43.0 to 3.45.0 (#131)

    v1.12.0

    • ECR: only set credentials if username and password are specified (#128)
    • Refactor to use aws-sdk v3 (#128)

    v1.11.0

    • ECR: switch implementation to use the AWS SDK (#126)
    • ecr input to specify whether the given registry is ECR (#123)
    • Test against Windows runner (#126)
    • Update instructions for Google registry (#127)
    • Update dev workflow (#111)
    • Small changes for GHCR doc (#86)
    • Update dev dependencies (#85)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#101)
    • Bump tmpl from 1.0.4 to 1.0.5 (#100)
    • Bump @​actions/core from 1.4.0 to 1.6.0 (#94 #103)
    • Bump codecov/codecov-action from 1 to 2 (#88)
    • Bump hosted-git-info from 2.8.8 to 2.8.9 (#83)
    • Bump node-notifier from 8.0.0 to 8.0.2 (#82)
    • Bump ws from 7.3.1 to 7.5.0 (#81)
    • Bump lodash from 4.17.20 to 4.17.21 (#80)
    • Bump y18n from 4.0.0 to 4.0.3 (#79)

    v1.10.0

    • GitHub Packages Docker Registry deprecated (#78)

    ... (truncated)

    Commits
    • 49ed152 Merge pull request #161 from crazy-max/node16-runtime
    • b61a9ce Node 16 as default runtime
    • 3a136a8 Merge pull request #182 from docker/dependabot/npm_and_yarn/https-proxy-agent...
    • b312880 Update generated content
    • 795794e Bump https-proxy-agent from 5.0.0 to 5.0.1
    • 1edf618 Merge pull request #179 from docker/dependabot/github_actions/codecov/codecov...
    • 8e66ad4 Bump codecov/codecov-action from 2 to 3
    • 7c79b59 Merge pull request #176 from docker/dependabot/npm_and_yarn/minimist-1.2.6
    • 24a38e0 Bump minimist from 1.2.5 to 1.2.6
    • 70e1ff8 Merge pull request #170 from crazy-max/eslint
    • Additional commits viewable in compare view

    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)
  • Bump docker/setup-buildx-action from 1 to 2

    Bump docker/setup-buildx-action from 1 to 2

    Bumps docker/setup-buildx-action from 1 to 2.

    Release notes

    Sourced from docker/setup-buildx-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#131)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.

    Full Changelog: https://github.com/docker/setup-buildx-action/compare/v1.7.0...v2.0.0

    v1.7.0

    • Standalone mode by @​crazy-max in (#119)
    • Update dev dependencies and workflow by @​crazy-max (#114 #130)
    • Bump tmpl from 1.0.4 to 1.0.5 (#108)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#109)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#110)
    • Bump actions/checkout from 2 to 3 (#126)
    • Bump @​actions/tool-cache from 1.7.1 to 1.7.2 (#128)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#129)
    • Bump minimist from 1.2.5 to 1.2.6 (#132)
    • Bump codecov/codecov-action from 2 to 3 (#133)
    • Bump semver from 7.3.5 to 7.3.7 (#136)

    v1.6.0

    • Add config-inline input (#106)
    • Bump @​actions/core from 1.4.0 to 1.5.0 (#104)
    • Bump codecov/codecov-action from 1 to 2 (#101)

    v1.5.1

    • Explicit version spec for caching (#100)

    v1.5.0

    • Allow building buildx from source (#99)

    v1.4.1

    • Fix docker: invalid reference format (#97)

    v1.4.0

    • Update dev deps (#95)
    • Use built-in getExecOutput (#94)
    • Use core.getBooleanInput (#93)
    • Bump @​actions/exec from 1.0.4 to 1.1.0 (#85)
    • Bump y18n from 4.0.0 to 4.0.3 (#91)
    • Bump hosted-git-info from 2.8.8 to 2.8.9 (#89)
    • Bump ws from 7.3.1 to 7.5.0 (#90)
    • Bump @​actions/tool-cache from 1.6.1 to 1.7.1 (#82 #86)
    • Bump @​actions/core from 1.2.7 to 1.4.0 (#80 #87)

    v1.3.0

    • Display BuildKit version (#72)

    v1.2.0

    • Remove os limitation (#71)
    • Add test job for config input (#68)

    ... (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)
  • Bump docker/setup-qemu-action from 1 to 2

    Bump docker/setup-qemu-action from 1 to 2

    Bumps docker/setup-qemu-action from 1 to 2.

    Release notes

    Sourced from docker/setup-qemu-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#48)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • chore: update dev dependencies and workflow by @​crazy-max (#43 #47)
    • Bump @​actions/core from 1.3.0 to 1.6.0 (#37 #39 #41)
    • Bump @​actions/exec from 1.0.4 to 1.1.1 (#38 #46)

    Full Changelog: https://github.com/docker/setup-qemu-action/compare/v1.2.0...v2.0.0

    v1.2.0

    • Display image information (#36)
    • Bump @​actions/core from 1.2.7 to 1.3.0 (#35)

    v1.1.0

    • Remove os limitation (#30)
    • Bump @​actions/core from 1.2.6 to 1.2.7 (#29)

    v1.0.2

    • Enhance workflow (#26)
    • Container based developer flow (#19 #20)

    v1.0.1

    • Fix CVE-2020-15228
    Commits
    • 8b12248 Merge pull request #48 from crazy-max/node-16
    • 466d531 Merge pull request #50 from crazy-max/update-readme
    • 607c192 simplify usage example
    • d7849ec Node 16 as default runtime
    • 2d4bfe7 Merge pull request #47 from crazy-max/update-dev
    • 224b802 chore: update dev dependencies and workflow
    • 95bd865 Merge pull request #46 from docker/dependabot/npm_and_yarn/actions/exec-1.1.1
    • cfd091f Bump @​actions/exec from 1.1.0 to 1.1.1
    • d2a6030 Merge pull request #45 from docker/dependabot/github_actions/actions/checkout-3
    • 97dc484 Bump actions/checkout from 2 to 3
    • Additional commits viewable in compare view

    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)
  • 32 provide linux packages for protocurl

    32 provide linux packages for protocurl

    • [x] test linux packages after installation with native powershell based test script
    • [ ] Adapt installation documentation
    • [x] Fix bug, that failed executions of protocurl are undetected. We need to abort the test, if a protocurl invokation fails
    • [x] It seems, that protocurl does not exit with a non-zero exitcode, when it exists with an or wrong arguments: e.g. docker run -it protocurl -w d
  • Skip unnecessary workflows to save resources 🌳

    Skip unnecessary workflows to save resources 🌳

    Almost always the test workflow is run twice on the same code - once during the PR review - and a second time after the merge into master.

    This is unnecessary and puts extra costs to GitHub and other computing resources.

    I would like to add and use Skip Duplicate Actions in places, where the same code is tested multiple times.

    We are interested in the following non-exhaustive changes:

    • canceling the test workflow for all non-recent runs
    • skip tests for the same run after merge into main
      • Fortunately, the skip only happens for the same code state - and it is still run for manual invocations. This seems appropriate here.
  • Enhance command-line usage with new features from 1.5.0 Cobra minor version update

    Enhance command-line usage with new features from 1.5.0 Cobra minor version update

    The new minor version release adds the capability to group together flags (making them mandatory together or mutually eclulssive to each other). We should investigate where and to what extent this can be used in protoCURL to simplify and remove some manual tests.

  • Target and Release as WebAssembly

    Target and Release as WebAssembly

    For future purposes such as more easily integrating protocurl into other applications (ie. general purpose GUIs, Web workflows or IDEs) it would be beneficial to use WebAssembly with Standard Interface.

    Targeting Web Assembly seems to be as simple as using GOOS=js and GOARCH=wasm: Examples

    • [ ] implementation
    • [ ] extend tests to also run .wasm archive at least once
  • Programmable JSON tests configuration via Dhall

    Programmable JSON tests configuration via Dhall

    We want to have some level of programmability and structure in testcases.json to makeit DRY and solid. Dhall seems to be a stable and mature tool to achive this.

    Also it would be cool to try our that tool :smiley:

  • Split go sources into packages

    Split go sources into packages

    Due to simplicity, currently everything is in the main package. When the complexity of the code gets larger it may make sense, to split the go source into multiple packages and sub-directories. In that case, we also need to take care of the capitalization, since only objects starting uppercase will be publically visible: https://go.dev/doc/effective_go

parse-curl.js golang version. Parse curl commands, returning an object representing the request.

parse-curl.js golang version. Parse curl commands, returning an object representing the request.

Nov 1, 2022
Record App: REST API Endpoints

REST API Endpoints api/records(POST) fetch data from mongodb api/memory(POST) cr

Jan 17, 2022
Sep 23, 2022
Lightweight rest api that allows users to run Powershell commands over HTTP.

Powershell Proxy Lightweight rest api that allows users to run Powershell commands over HTTP. Requests require a valid JWT and responses are returned

Mar 18, 2022
Control your Flipper Zero over Protobuf RPC protocol.

go-flipper Control your Flipper Zero over Protobuf RPC protocol. This library is designed to be transport agnostic, though I've tested it with RPC ove

Nov 23, 2022
It's like curl -v, with colours.
It's like curl -v, with colours.

httpstat Imitation is the sincerest form of flattery. But seriously, https://github.com/reorx/httpstat is the new hotness, and this is a shameless rip

Dec 3, 2022
Command-Line chat app in Go-Lang over TCP

gochat Simple chat communication app over TCP, wrriten in Golang. How does it work? Each client starts a TCP server, in a port that is defined by the

Jan 9, 2022
The devs are over here at devzat, chat over SSH!

Devzat Where are the devs at? Devzat! Devzat is chat over SSH Try it out: ssh sshchat.hackclub.com Add this to ~/.ssh/config: Host chat HostName s

Nov 21, 2022
Provides communication with USB Human Interface Devices.

This package is discontinued This package does not work with Go1.6+. I won't be updating this package since a better alternative is already available,

Apr 8, 2022
Command-line tool and library for Windows remote command execution in Go

WinRM for Go Note: if you're looking for the winrm command-line tool, this has been splitted from this project and is available at winrm-cli This is a

Nov 29, 2022
mdmb is a tool for simulating Apple devices interacting with Apple MDM servers.

mdmb mdmb — short for MDM Benchmark, à la ab — is a tool for simulating Apple devices interacting with Apple MDM servers. mdmb creates sets of fake Ap

Nov 10, 2022
Serve traffic (HTTP/gRPC) over SSH using Domain Sockets

Serve On SSH Introduction There is often a need to offer services for administrative purposes on servers or even for microservices that are running on

Nov 10, 2022
🎥 Proxy livestreams from websockets to external RTMP endpoints.

pxy pxy is a Go server that routes incoming livestream data from websockets to an external RTMP endpoint. This project is a work in progress, I'll upd

Nov 21, 2022
A C/S Tool to Download Torrent Remotely and Retrieve Files Back Over HTTP at Full Speed without ISP Torrent Limitation.

remote-torrent Download Torrent Remotely and Retrieve Files Over HTTP at Full Speed without ISP Torrent Limitation. This repository is an extension to

Sep 30, 2022
Generate types and service clients from protobuf definitions annotated with http rules.

protoc-gen-typescript-http Generates Typescript types and service clients from protobuf definitions annotated with http rules. The generated types fol

Nov 22, 2022
Vmessping - A ping prober for vmess:// links in common seen formats

VMessPing A ping prober for vmess:// links in common seen formats. vmessping sup

Jan 9, 2022
Using Wireshark to decrypt TLS gRPC Client-Server protobuf messages
Using Wireshark to decrypt TLS gRPC Client-Server protobuf messages

Using Wireshark to decrypt TLS gRPC Client-Server protobuf messages Sample client server in golang that demonstrates how to decode protobuf messages f

Sep 8, 2022
A Go library for interacting with the Hypixel API.

gopixel gopixel is a Go library for interacting with the Hypixel API. This software is alpha software and is subject to change, including but not limi

Apr 1, 2022
Library for directly interacting and controlling an Elgato Stream Deck on Linux.

Stream Deck Library for directly interacting and controlling an Elgato Stream Deck on Linux. This library is designed to take exclusive control over a

Jan 23, 2022