thoom / gulp Goto Github PK
View Code? Open in Web Editor NEWGo-based HTTP REST client
License: MIT License
Go-based HTTP REST client
License: MIT License
Slowly moving away from thoomtech.com email domain to thoom.net
Broke ability to pass YAML as JSON in 0.9.
Set up a build environment that allows adding the release binaries for various formats. This should probably be done once I have added some testing.
Perhaps in the -version
flag, add a notice if there is an upgrade available.
Trying to stay up to date on Go version number
Getting error socket: too many open files
when trying to run too many --repeat-times
. On macOS this happens around 252 repeats. It happens regardless of the number of concurrent connections.
Add building the windows binary to the output.
Create a randomized load testing delay to prevent pulses during testing.
This could have some configuration, including disabling completely in case you want to try to create pulses.
Currently the user agent is thoom.Gulp/version-os-architecture
, however, maybe it should be thoom.Gulp/version (OS; architecture)
?
So instead of thoom.Gulp/1.0-darwin-amd64
it'd be thoom.Gulp/1.0 (darwin; amd64)
By default, the API has the format gulp [flags/options] url
. There are times when it would be useful to have the URL as part of the flag array instead of being required at the end.
The project is missing unit tests and travis CI integration.
Since we're building the version, may as well look at adding the OS as part of the User-Agent string.
The 3 display-related flags should be related to each other. Currently they can all be set and then behave weirdly.
Maybe just allow a single one and have an error if more than one are set? Or only use the last one?
When passing in a put, the content-length is missing
Move from Go 1.11 to 1.13 and support for modules.
When using verbose display, color code success and error responses.
At a minimum, just rebuild in 1.18. Look at additional changes in 1.18 that may make sense to incorporate.
Add how long the response took in verbose display.
Sometimes there is PII/secret data passed in a header (like an API key). If I want to copy and paste the output to someone else, I currently have to copy it into something like VS Code, remove or obfuscate the secret manually, then copy the edited data.
It'd be cool if I could define certain headers in a config file to be secret/PII/secure and have the output automatically clean the header (ie. convert X-Secret-Header: abc123456def
to X-Secret-Header: abc1xxxx6def
)
Right now, the client ignores TLS certificate errors. This should be toggle able at least in the config.
It could be cool to pass a Go template file that could be used to dynamically create payload data. Maybe even support the ability to pass in a cli variable that could be used in the template.
Provide a docker image that can be used if people don't want go installed on the system.
While the user-agent can be overridden easily in the config, set a default (i.e. thoom/gulp or something).
Found some terminals that were displaying a color block weirdly.
Update to latest version of Go - currently 1.17
Should we use docker
or alpine
?
Make the info provide in the verbose mode for the request better.
The app doesn't pick up any /etc/hosts entries added via --add-host=DOMAIN:IP
entries or with docker-compose.
Looks like this is related to this moby issue. Keep track to see if there are implementation options to handle it.
Docker version of Gulp doesn't work with --add-host
Rather than use -k
, create an -insecure
flag. This will be more intuitive.
Currently the client has a 300 second timeout. It should allow this to be customized per request as well as have a configuration value.
Add support for Basic authentication:
๐
-I
should be like -m HEAD
-v
should be like -verbose
-i
could also be like -verbose
Add the ability to pass in a client cert for handling client-cert based authorization
The client will currently follow 301
/302
responses. There should be a configuration and command line option to disable the feature.
Some terminals don't handle the output properly. Investigate if there is a way for the client to determine whether or not to use a colored output.
The verbose display setting only shows headers that were added by GULP explicitly. It does not include additional headers that may be set by the HTTP client.
Currently only support Intel Macs.
Add support for go vet
and staticcheck
as part of the pipeline to increase quality
The client assumes that all post data is JSON, so if it's not JSON/YAML then the post data will cause an error.
Create a default accept header. Probably something like application/json;q=1.0, */*;q=0.8
There should be a simple way to build form data.
For multipart/form-data, look at this example: https://stackoverflow.com/questions/20205796/golang-post-data-using-the-content-type-multipart-form-data#20397167
Add code coverage report using something like goveralls.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.