Julien-cpsn / ATAC
- ΠΏΡΡΠ½ΠΈΡΠ°, 19 Π°ΠΏΡΠ΅Π»Ρ 2024β―Π³. Π² 00:00:01
A simple API client (postman like) in your terminal
ATAC is Arguably a Terminal API Client. It is based on well-known clients such as Postman, Insomnia, or even Bruno, but inside your terminal without any specific graphical environment needed.
The philosophy of ATAC is to be free, account-less, and offline for now and forever.
Important
First, make sure your rust version is at least 1.76
Simply use:
cargo install atac
You can use your favorite AUR helper to install. For example,
paru -S atac
Simply use:
brew tap julien-cpsn/atac
brew install atac
The binaries from the latest release can be found here
Important
Remember to run it from a terminal. For example, you can add the binary into your PATH. You won't be able to run it like other graphical applications since it needs CLI arguments.
Tip
Note for macOS users. After downloading the binary you may need to run the command
sudo xattr -rd com.apple.quarantine ~/bin/atac
(modify to reflect the path where atac
is located).
Important
First, make sure your rust version is at least 1.76
Simply clone the repository and use:
cargo run
cargo run -- -h
Tip
Build the latest release
cargo build --release
Features | ATAC | Postman | Insomnia |
---|---|---|---|
Manage collections & requests | β | β | β |
HTTP Client | β | β | β |
Methods | β | β | β |
- GET | β | β | β |
- POST | β | β | β |
- PUT | β | β | β |
- PATCH | β | β | β |
- DELETE | β | β | β |
- HEAD | β | β | β |
- OPTIONS | β | β | β |
Authentication | Partial | β | β |
- Basic auth | β | β | β |
- Bearer token | β | β | β |
- JWT, Digest, OAuth1-2, AWS | β π | β | β |
Headers | β | β | β |
Body | β | β | β |
- Multipart form | β | β | β |
- URL Encoded form | β | β | β |
- File | β | β | β |
- Plain text | β | β | β |
- JSON, XML, HTML | β | β | β |
Full response | β | β | β |
- Status code | β | β | β |
- Cookies | β | β | β |
- Headers | β | β | β |
- Duration | β | β | β |
Scripting | β π | Partial | β |
- Pre-request script | β π | β | β |
- Post-request script | β π | β | β |
Asynchronous requests | β | β | β |
Per-request settings | β | β | β |
- Use proxy | β | β | β |
- Allow redirects | β | β | β |
- Store cookies | β | β | β |
WebSocket Client | β π | β | β |
GraphQL | β (not planned) | β | β |
Free | β | Depends | Depends |
Lightweight, fast and efficient | β | β | β |
Data storage | Your own committable, readable and versioned files | Tied to your account | Tied to your account |
Offline | β | β | β |
Real-time collaboration | β (not planned) | β | β |
Environment files and variables | β (committable, readable and versioned) | β | β |
View options | β | β | β |
Global configuration file | β | β | β |
- HTTP/HTTPS Proxy | β | β | β |
- Disable CORS | β | β | β |
- Toggle syntax highlighting | β | β | β |
Postman v2.1.0 import | β | β | β |
OpenAPI import | β π | β | β |
To add
To improve
To fix
To add
To improve
Note
Documentation will soon be published in the wiki section
(List from here)
Library | Version | Reason |
---|---|---|
reqwest & reqwest cookie store | 0.11.27 & 0.6.0 | Send requests |
ratatui | 0.26.1 | Terminal UI framework |
crossterm | 0.27.0 | Terminal Backend |
tui-big-text | 0.4.2 | Display big texts. Only used for displaying ATAC in the homepage. |
tui-tree-widget | 0.19.0 | Display tree-like lists. Used for displaying the collections. |
tui-textarea | 0.5.0 | Text area that handle a lot of features. Used for editing request body. |
throbber-widgets-tui | 0.4.1 | Display loading UI elements. Used when request is pending. |
syntect | 5.2.0 | Syntax highlighting |
serde & serde_json | 1.0.197 & 1.0.144 | Serialize & Deserialize application data into JSON files |
jsonxf | 0.1.1 | Pretty print JSON |
toml | 0.8.11 | Serialize & Deserialize application config files |
envfile | 0.2.1 | Deserialize application environment files |
My fork of postman_collection | 0.2.1 | Deserialize Postman collection files |
clap | 4.5.0 | Command Line Argument Parser |
tokio | 1.0.0 | Handle asynchronous requests |
strum | 0.26.2 | Enum facilities |
lazy_static | 1.4.0 | Allows for more flexible constants. Mainly used for accessing CLI arguments everywhere |
regex | 1.10.3 | Regex. Using for parsing requests URL |
The binary file size goes from ~4.5 MB to ~7 MB depending on the platform. I try to keep it as small as possible.
The MIT license for this project can be seen here