Git Product home page Git Product logo

atac's Introduction

ATAC โš”๐Ÿ“ฉ

Rust License: MIT GitHub Release

Demo Animation

Table Of Contents

Description

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.

How to install

Packaging status

crates.io package

Install with cargo

Important

First, make sure your rust version is at least 1.76

Simply use:

cargo install atac
Arch package

Install from AUR

You can use your favorite AUR helper to install. For example,

paru -S atac

Install with Homebrew

Simply use:

brew tap julien-cpsn/atac
brew install atac
GitHub Release

Binary

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).

Compile by yourself

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

Current

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 โŒ ๐Ÿ”œ โœ… โœ…

TODO v1.0.0

  • To add

    • Create a repo wiki
    • Document whole code
  • To improve

    • Sign binary
    • Add file to Postman import
  • To fix

    • Query parameters bug

TODO v2.0.0

  • To add

    • Command line usage (send requests, add new requests)
    • keymap configuration (via a config file)
    • Request body syntax highlighting
    • Export a request to other code formats (curl, PHP, JS, Rust, ...)
    • Pre and post-request script (javascript v8 engine)
  • To improve

    • Editing cookies
    • Insomnia import
    • Auto-completion on env file variables
    • Manage multipart Content-type header (auto-generated for now)

Ideas (will think about it later)

  • Base URL property on collections

Documentation

Note

Documentation will soon be published in the wiki section

Technical precisions

Tested on

  • Console Host
    • Windows 11 (Pro)
    • WSL2 Debian
    • Windows 10 (Pro)
    • Windows 8.1 (N)
  • Ubuntu Desktop Terminal
    • Ubuntu 17.10
    • Pop!_OS 20.04
  • (Arch, Manjaro) KDE Konsole
  • (Arch, NixOS) Kitty
  • Linux Mint
  • (OpenSuse) Alacritty
  • (Chrome OS) Crostini

(List from here)

Dependencies

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

Binary size

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.

Contributors

Maintainers

Packagers

Star history

Star History Chart

License

The MIT license for this project can be seen here

atac's People

Contributors

julien-cpsn avatar orhun avatar ccoveille avatar alecthegeek avatar airone01 avatar kalinivanov-l avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.