A .NET web application designed to efficiently stream folders as ZIP archives in Kubernetes environments.
- k3d - Lightweight Kubernetes for development
- Docker - For building and running containers
- kubectl - For managing Kubernetes resources
- Task - Task runner for development automation
- .NET 9 - For local development
This project uses Task to automate common development operations.
- Install Task from https://taskfile.dev/#/installation
List all available tasks:
task
Common tasks:
task create-cluster
- Create k3d cluster with registry and deploy applicationtask clean-resources
- Remove k3d resources (registry and cluster)task test-download
- Test the download endpointtask test-download-limited
- Test download with rate limitingtask build-image
- Build Docker image locally
The application is configured to serve files from /Users/stefan.dobrovolny/data
which is mounted
into the container as /app/Folders
. Place files in this directory to access them through the application.
Once deployed, access the application at:
http://localhost:8080/streamzip/download/{folderName}
Where {folderName}
is a folder inside your data directory.
Test a normal download:
curl -v "http://localhost:8080/streamzip/download/{folderName}" -o downloaded.zip
Test with rate limiting:
curl -v "http://localhost:8080/streamzip/download/{folderName}" --limit-rate 100k -o downloaded.zip
Content-length calculation times out after 20 seconds (returns 413 error).