Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fstab/h2c
http2client
https://github.com/fstab/h2c
Last synced: 18 days ago
JSON representation
http2client
- Host: GitHub
- URL: https://github.com/fstab/h2c
- Owner: fstab
- License: apache-2.0
- Created: 2015-05-22T15:02:25.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-03-01T13:01:30.000Z (over 7 years ago)
- Last Synced: 2024-10-14T16:00:05.286Z (about 1 month ago)
- Language: Go
- Size: 16.9 MB
- Stars: 274
- Watchers: 12
- Forks: 18
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-http2 - h2c - Simple HTTP/2 command-line client, like curl. (Categories / Command Line Tools)
- awesome - h2c - http2client (Go)
README
h2c - A Simple HTTP/2 Command-Line Client
-----------------------------------------`h2c` is a simple HTTP/2 command-line client, like `curl`.
While `curl` terminates after each request/response cycle, `h2c` runs a background process to keep connections open.
That way, `h2c` may receive asynchronous [push](https://httpwg.github.io/specs/rfc7540.html#PushResources) messages from the server.`h2c` is currently in a very early stage. The best way to learn about it is to read the blog posts on [unrestful.io](http://unrestful.io).
Screenshots
-----------![h2c dump](doc/h2c-dump.png)
![h2c command line](doc/h2c-cmdline.png)
Basic Usage
-----------```bash
h2c start &
h2c connect http2.akamai.com
h2c get /index.html
h2c stop
```Command Overview
----------------For a complete list of available commands, run `h2c --help`.
* `h2c start [options]` Start the h2c process. The h2c process must be started before running any other command.
* `h2c connect [options] :` Connect to a server using https
* `h2c disconnect` Disconnect from server
* `h2c get [options] ` Perform a GET request
* `h2c post [options] ` Perform a POST request
* `h2c set ` Set a header. The header will be valid for all subsequent requests.
* `h2c unset []` Undo 'h2c set'.
* `h2c ping` Send a ping.
* `h2c pid` Show the process id of the h2c process.
* `h2c push-list` List responses that are available as push promises.
* `h2c stream-info` List streams and their states.
* `h2c stop` Stop the h2c process
* `h2c wiretap ` Listen on localhost:port and forward all traffic to remotehost:port.How to Download and Run
-----------------------Binary releases are available on the [GitHub Releases](https://github.com/fstab/h2c/releases).
1. Download the latest release ZIP file: [h2c-v0.0.12.zip](https://github.com/fstab/h2c/releases/download/v0.0.12/h2c-v0.0.12.zip)
2. Extract the ZIP file
3. Find the executable for your system in the `bin` folder:
* Linux: `h2c_linux_amd64`
* OS X: `h2c_darwin_amd64`
* Windows: `h2c_windows_amd64.exe`
4. Rename that executable to `h2c`, or `h2c.exe` on Windows
5. Move the executable into a folder on your PATH.How to Build from Source
------------------------`h2c` is developed with [Go 1.6](https://golang.org/dl/). The external dependencies are located in the `vendor/` directory.
In Go 1.6, the `vendor/` directory will be used by default. In order to build `h2c` with Go 1.5, you must enable the [Go 1.5 vendor handling](http://engineeredweb.com/blog/2015/go-1.5-vendor-handling/) by setting the environment variable `GO15VENDOREXPERIMENT` to `1`.The following command will download, compile, and install `h2c`:
```bash
go get github.com/fstab/h2c
```Related Work
------------`h2c` uses parts of Brad Fitzpatrick's [HTTP/2 support for Go](https://github.com/bradfitz/http2). There is an HTTP/2 console debugger included in [bradfitz/http2](https://github.com/bradfitz/http2), but just like `h2c`, it is currently only a quick few hour hack, so it is hard to tell if they aim at the same kind of tool.
LICENSE
-------`h2c` is licensed under the [Apache License, Version 2.0](LICENSE).
`h2c` is implemented in [Go](https://golang.org) and uses Go's [standard library](https://golang.org/pkg/#stdlib), which is licensed under [Google's Go license](https://code.google.com/p/go/source/browse/LICENSE), which is a variant of the [BSD License](https://en.wikipedia.org/wiki/BSD_licenses).
The following 3rd party libraries are used:
* `golang.org/x/net/http2/hpack` implements the [Header Compression for HTTP/2 (HPACK)](https://httpwg.github.io/specs/rfc7541.html). The library is licensed [under the terms of Go itself](https://github.com/bradfitz/http2/blob/master/LICENSE).
* `github.com/fatih/color` implements the color output used in `h2c start --dump`. The library is licensed under an [MIT License](https://github.com/fatih/color/blob/master/LICENSE.md).