Metadata-Version: 2.4
Name: firecrest-streamer
Version: 0.0.21
Summary: A simple file streamer over websockets.
Project-URL: Homepage, https://github.com/eth-cscs/firecrest-v2
Project-URL: Issues, https://github.com/eth-cscs/firecrest-v2/issues
Author-email: Elia Palme <elia.palme@cscs.ch>
Maintainer-email: Elia Palme <elia.palme@cscs.ch>, Eirini Koutsaniti <eirini.koutsaniti@cscs.ch>
License-Expression: BSD-3-Clause
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Requires-Dist: asyncio
Requires-Dist: click
Requires-Dist: websockets
Description-Content-Type: text/markdown

# Firecrest Streamer

A simple command-line interface (CLI) tool to **stream files over WebSocket** connections.

---

## ✨ Features
- Send and receive files securely via WebSocket.
- Simple CLI interface for both client and server modes.
- Shared secret based authentication.

---

## 🧰 Installation

### (Optional) Create a virtual environment
```bash
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
```

### Install Firecrest Streamer
```bash
pip install firecrest-streamer
```

---

## 🚀 Usage

### Run as a Client

To send or receive files, you need the **secret coordinates** issued by the Firecrest Streamer server when a new transfer is initiated.

#### Receive a file:
```bash
streamer receive --coordinates [secret-coordinates] --path [destination-path]
```

#### Send a file:
```bash
streamer send --coordinates [secret-coordinates] --path [file-to-send]
```

> **Note:** The `--coordinates` value must match the one provided by the server.

---

### Run as a Server

You can also run your own Firecrest Streamer server to handle file transfers.

#### Start a server to send files:
```bash
streamer server --secret [your-secret-string] send --path [file-to-send]
```

#### Start a server to receive files:
```bash
streamer server --secret [your-secret-string] receive --path [destination-path]
```

> **Tip:** Use a unique `--secret` string to protect your server session.

---

## 🧑‍💻 Development

### Run from source

```bash
pip install -r requirements.txt
cd src
python -m streamer server --secret [your-secret-string] send --path [file-to-send]
python -m streamer receive --coordinates [secret-coordinates] --path [destination-path]
```

---

## 📦 Distribution

To build and publish a new version to PyPI:

```bash
python3 -m build --wheel
twine upload dist/*
```

> **Note:** Your PyPI API token should be stored in the local `.pypirc` file.

---

## 📝 License

This project is licensed under the BSD-3-Clause license. See the [LICENSE](https://github.com/eth-cscs/firecrest-v2/blob/master/LICENSE) file for details.


