Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zahash/quaeso
python cli program to send requests
https://github.com/zahash/quaeso
cli curl http https python python3 request yaml yml
Last synced: 3 months ago
JSON representation
python cli program to send requests
- Host: GitHub
- URL: https://github.com/zahash/quaeso
- Owner: zahash
- License: mit
- Created: 2021-11-04T13:41:18.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-10-23T15:26:02.000Z (over 1 year ago)
- Last Synced: 2024-04-24T13:36:04.455Z (9 months ago)
- Topics: cli, curl, http, https, python, python3, request, yaml, yml
- Language: Python
- Homepage: https://pypi.org/project/quaeso/
- Size: 37.1 KB
- Stars: 77
- Watchers: 6
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
██████╗ ██╗ ██╗ █████╗ ███████╗███████╗ ██████╗
██╔═══██╗██║ ██║██╔══██╗██╔════╝██╔════╝██╔═══██╗
██║ ██║██║ ██║███████║█████╗ ███████╗██║ ██║
██║▄▄ ██║██║ ██║██╔══██║██╔══╝ ╚════██║██║ ██║
╚██████╔╝╚██████╔╝██║ ██║███████╗███████║╚██████╔╝
╚══▀▀═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚══════╝ ╚═════╝
---------------------------------------------------
python cli program to send requests[![PyPI](https://img.shields.io/pypi/v/quaeso.svg)](https://pypi.org/project/quaeso/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)Is it just me or is curl a little too complicated?
Want something simpler in life? something made for humans? Try quaeso -- A Python program that reads a json/yml file for request data and sends the request## Installation
pip install this repo.
(Note: Incompatible with Python 2.x)```sh
pip3 install quaeso
```(or)
```sh
pip install quaeso
```## Usage example
### To get help with commandline arguments
```sh
quaeso --help
```### Using Command-line Arguments
```sh
quaeso -f "some/folder/myrequest.yml"
```(or)
```sh
quaeso -f "some/folder/myrequest.json"
```### Colorize Output
```sh
quaeso -f "some/folder/myrequest.yml" -c
```### Disclaimer
sometimes the quaeso command doesn't work in windows if the package is installed globally.
to avoid this, install the package in a local virtual env
first, create a env
```sh
python3 -m venv env_for_quaeso
```activate that env
```sh
.\env_for_quaeso\Scripts\activate
```and then pip install. But you will have to activate that env everytime you want to use quaeso.
## IO Redirection
the response is written to stdout and headers/status are written to stderr so that users can take IO redirection to their advantage. This works on windows, linux and mac.
```sh
quaeso -f "some/folder/myrequest.yml" > res.json 2> res_headers.txt
```both stdout and stderr can be redirected to the same file
```sh
quaeso -f "some/folder/myrequest.yml" > res.txt 2>&1
```## Sample request file (`myrequest.yml`)
### GET
```yaml
url: https://cdn.animenewsnetwork.com/encyclopedia/api.xml?anime=4658
method: get
params:
offset: 2
limit: 100
headers:
accept: text/xml
accept-language: en
timeout: 5000
```#### File Download (`quaeso -f "some/folder/myrequest.yml" > book.pdf`)
```yaml
url: http://do1.dr-chuck.com/pythonlearn/EN_us/pythonlearn.pdf
method: get
```### POST
```yaml
url: https://jsonplaceholder.typicode.com/todos/
method: POST
headers:
Authorization: Basic bXl1c2VybmFtZTpteXBhc3N3b3Jk
content-type: application/json
data:
title: walk the dog
completed: false
timeout: 5000
```### PUT
```yaml
url: https://jsonplaceholder.typicode.com/todos/1
method: PUT
headers:
content-type: application/json
data:
title: walk the dog
completed: true
timeout: 5000
```### DELETE
```yaml
url: https://jsonplaceholder.typicode.com/todos/1
method: DELETE
```## Complete request file with all available fields (`myrequest.yml`)
```yaml
method: XXX # (REQUIRED) GET, OPTIONS, HEAD, POST, PUT, PATCH, or DELETE
url: XXX # (REQUIRED) must be prefixed with http:// or https://params: # url query parameters. have as many as you like
offset: 0
limit: 10data: # data for POST
name: john
age: 22
hobbies:
- running
- eating
- sleeping# you can also type data in json format instead of yaml
data: |
{
"name": "john",
"age": 22,
"hobbies": ["running", "eating", "sleeping"]
}headers: # have as many as you like
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5ccookies: # have as many as you like
mycookie: cookievalue
myothercookie: othercookievaluetimeout: 3.14 # seconds
allow_redirects: true # true or false
proxies: # have as many as you like
http: http://10.10.1.10:3128
https: https://10.10.1.11:1080
ftp: ftp://10.10.1.10:3128# EITHER verify server's TLS certificate. true or false
verify: true
# OR path to a CA bundle to use
verify: some/folder/cacert.crt# EITHER path to single ssl client cert file (*.pem)
cert: some/folder/client.pem
# OR (*.cert), (*.key) pair.
cert:
- some/folder/client.cert
- some/folder/client.key```
## Development setup
Clone this repo and install packages listed in requirements.txt
```sh
pip3 install -r requirements.txt
```## Meta
M. Zahash – [email protected]
Distributed under the MIT license. See `LICENSE` for more information.
[https://github.com/zahash/](https://github.com/zahash/)
## Contributing
1. Fork it ()
2. Create your feature branch (`git checkout -b feature/fooBar`)
3. Commit your changes (`git commit -am 'Add some fooBar'`)
4. Push to the branch (`git push origin feature/fooBar`)
5. Create a new Pull Request