diff --git a/app/Telechargement.py b/app/Telechargement.py
new file mode 100644
index 0000000000000000000000000000000000000000..977bfe7a6da8db25672658566cc35a5a07ffc885
--- /dev/null
+++ b/app/Telechargement.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+import time
+import requests
+
+
+class Telechargement:
+
+    def __init__(self, serveur, ident, mdp, proxy):
+
+        # Dictionnaire contenant les informations du proxy s'il existe
+        self.proxyDict = {
+            "http": "{0}".format(proxy),
+            "https": "{0}".format(proxy),
+            "ftp": "{0}".format(proxy)
+        }
+
+        self.url_auth = "{0}/services/authenticate/".format(serveur)
+
+        # Dictionnaire contenant les informations d'authentification
+        self.payload = {
+            'ident': "{0}".format(ident),
+            'pass': "{0}".format(mdp)
+        }
+
+        self.head = None
+
+        self.session = requests.session()
+
+        try:
+            # self.jeton_acces = self.get_jeton_acces()
+            self.get_jeton_acces()
+            # if self.jeton_acces is None:
+            if self.head is None:
+                raise Exception("Erreur lors de l'authentification.")
+        except Exception as e:
+            print(e)
+        else:
+            self.temps_limite_jeton = time.time()
+
+    def get_jeton_acces(self):
+
+        try:
+            # Jeton d'acces
+            # reponse = requests.post(self.url_auth, data=self.payload, proxies=self.proxyDict)
+            reponse = self.session.post(self.url_auth, data=self.payload, proxies=self.proxyDict)
+
+            reponse.raise_for_status()
+        except Exception as e:
+            raise e
+        else:
+            if "text" in reponse.headers["Content-Type"]:
+                # return reponse.text
+                jeton = reponse.text
+            elif "json" in reponse.headers["Content-Type"]:
+                # return reponse.json()["access_token"]
+                jeton = reponse.json()["access_token"]
+            else:
+                raise BaseException('Format non traité.')
+
+            self.head = {"Authorization": "Bearer {0}".format(jeton)}
+
+    class Decorators:
+        @staticmethod
+        def refresh_jeton(decorated):
+            def wrapper(telechargement, *args, **kwargs):
+                if time.time() > telechargement.temps_limite_jeton:
+                    telechargement.get_jeton_acces()
+                return decorated(telechargement, *args, **kwargs)
+
+            return wrapper
+
+    @Decorators.refresh_jeton
+    def get_archive(self, url):
+        # Requête pour récupérer l'archive
+        # return requests.get(url, headers=self.head)
+        return self.session.get(url, headers=self.head)