From ed97d4ce275f35534389954fc67e968a82bfa752 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Agneray?= <francois.agneray@lam.fr>
Date: Thu, 3 Mar 2022 17:46:07 +0100
Subject: [PATCH] Download progress bar => WIP

---
 Makefile                                            |  8 ++++++++
 .../instance/search/services/download.service.ts    | 13 +++++++++++++
 tasks/requirements.txt                              |  3 +++
 tasks/src/anis_tasks/app.py                         |  2 ++
 4 files changed, 26 insertions(+)
 create mode 100644 client/src/app/instance/search/services/download.service.ts

diff --git a/Makefile b/Makefile
index 3dfea6a7..808b8283 100644
--- a/Makefile
+++ b/Makefile
@@ -23,6 +23,8 @@ list:
 	@echo "  phpcs            > Run php code sniffer test suite"
 	@echo "  install_services > install services dependencies (virtualenv)"
 	@echo "  shell_services   > Shell into python services"
+	@echo "  install_tasks    > install tasks dependencies (virtualenv)"
+	@echo "  shell_tasks      > Shell into python tasks"
 	@echo "  create-db        > Create a database for dev only (need token_enabled=0)"
 	@echo "  remove-pgdata    > Remove the anis-next database"
 	@echo ""
@@ -91,6 +93,12 @@ install_services:
 shell_services:
 	@docker-compose exec services bash
 
+install_tasks:
+	@docker run --init -it --rm --user $(UID):$(GID) -v $(CURDIR)/tasks:/project -w /project python:3.8 /bin/bash -c "python3 -m venv venv && source /project/venv/bin/activate && pip install -r requirements.txt"
+
+shell_tasks:
+	@docker-compose exec tasks bash
+
 create-db:
 	@docker-compose exec server sh /mnt/init-keycloak.sh
 	@docker-compose exec server sh /mnt/create-db.sh
diff --git a/client/src/app/instance/search/services/download.service.ts b/client/src/app/instance/search/services/download.service.ts
new file mode 100644
index 00000000..2fa8241d
--- /dev/null
+++ b/client/src/app/instance/search/services/download.service.ts
@@ -0,0 +1,13 @@
+import { HttpClient } from "@angular/common/http";
+import { Observable } from "rxjs";
+
+export class DownloadService {
+    constructor(private http: HttpClient) { }
+
+    download(url: string): Observable<Blob> {
+        return this.http.get(url, {
+            reportProgress: true,
+            responseType: 'blob'
+        });
+    }
+}
diff --git a/tasks/requirements.txt b/tasks/requirements.txt
index 8d953796..1bb63938 100644
--- a/tasks/requirements.txt
+++ b/tasks/requirements.txt
@@ -1,6 +1,9 @@
 certifi==2021.10.8
 charset-normalizer==2.0.12
+decorator==5.1.1
 idna==3.3
 pika==1.2.0
+py==1.11.0
 requests==2.27.1
+retry==0.9.2
 urllib3==1.26.8
diff --git a/tasks/src/anis_tasks/app.py b/tasks/src/anis_tasks/app.py
index bc365abb..810e581c 100644
--- a/tasks/src/anis_tasks/app.py
+++ b/tasks/src/anis_tasks/app.py
@@ -3,10 +3,12 @@ import logging, sys
 
 # Third party imports
 import pika
+from retry import retry
 
 # Local application imports
 from anis_tasks import utils, archive
 
+@retry(pika.exceptions.AMQPConnectionError, delay=5, jitter=(1, 3))
 def run():
     try:
         # Check config variables
-- 
GitLab