Skip to content

molidev/ICEFLIX-FILESERVICE

Repository files navigation

💾 Iceflix - FileService

El servicio de ficheros se encarga de enviar al usuario el fichero para que pueda visualizarlo. El servicio debe leer de un directorio en el disco duro, que será pasado al servicio a través de su configuración, los ficheros que serán compartidos.

🔹 Link repositorio -> https://github.com/molinem/ICEFLIX-FILESERVICE


🧩 Autor

🔸 Luis Molina Muñoz-Torrero


Información Útil

  • Nuestro servicio de ficheros se anuncia en Announcements cada 10 segundos.
  • Anunciamos nuestros ficheros en FileAvailability cada 20 segundos (este tiempo ha sido elegido debido a que no se menciona exáctamente cuanto debería ser)
  • Haciendo uso de setup.py se ha creado en la carpeta dist un archivo denominado iceflix_file-0.1.tar.gz para instalarlo usaremos el
    siguiente comando -> pip install dist/iceflix_file-0.1.tar.gz

¿Cómo lanzamos el servicio? ⚡️

  • Primero hacemos uso del comando pip install .

  • Para lanzar el servicio ejecutaremos ./run_service el cuál iniciará el servicio FileService con la configuración que se encuentra en el configs/fileservice.config. Por ello es necesario que previamente editemos ese fichero añadiendo el IceStorm.TopicManager que queramos.


Descripción clases

FileService

  • openFile((self, media_id, user_token, current=None) -> dado el identificador del medio devolverá un proxy al manejador del archivo (FileHandler), que permitirá descargarlo.
  • uploadFile(self, uploader, admin_token, current=None) -> dado el token de administrador y un proxy para la subida del archivo, lo guardará en el directorio y devolverá su identificador
  • removeFile(self, media_id, admin_token, current=None) -> dado un identificador y el token de administrador, borrará el archivo del directorio.

FileHandler

  • receive(self, size, userToken, current=None) -> recibe el número indicado de bytes del archivo, se comprueba el userToken.
  • close(self, userToken, current=None) -> indica al servidor que el proxy para este fichero ya no va a ser usado y puede ser eliminado, se comprueba el userToken.

FileUploader

  • receive(self, size, current=None) -> recibe el número indicado de bytes del archivo
  • close(self, current=None) -> indica al servidor que el proxy para este fichero ya no va a ser usado y puede ser eliminado

Announcements

  • announce(self, service, service_id, current=None) -> De forma constante comprueba los servicios y actualiza la lista de servicios conocidos que no han sido añadidos con anterioridad.

💭 Requisitos extras

Utilización de la librería logging de Python de manera adecuada. ✅

El proyecto es instalable con pip install (setup.py) ✅

El código obtiene de media en pylint > 9.0 ✅

DockerFile ✅

About

Práctica de laboratorio de Sistemas Distribuidos

Resources

Stars

Watchers

Forks

Packages

No packages published