Lista de requisitos#
Servicio principal#
Responder con una referencia válida, cuando la hubiera, el método
getAuthenticator
.Responder con una referencia válida, cuando la hubiera, el método
getCatalog
.Responder con una referencia válida, cuando la hubiera, el método
getFileService
.Lanzar la excepción correspondiente cuando no haya servicio de uno de los anteriores disponible.
Recibir los anunciamientos
newService
yannounce
de manera correcta.Ignorar los
announce
cuando vengan de un servicio no anunciado previamente connewService
.Ignorar cualquier tipo de anunciamiento de objetos que no sea de las interfaces esperadas.
Los servicios que dejen de anunciarse durante 30s son eliminados y nunca más pueden ser devueltos por ninguna de las 3 operaciones de acceso.
Comprobar que, tras eliminar un servicio “caducado”, no se puede recuperar de nuevo a través de la función de acceso.
Comprobar que si se recibe un
newService
de un servicio existente previamente, ese identificador queda invalidado (ni el servicio antiguo ni el nuevo se devuelven)
Servicio de autenticación#
El servicio se anuncia siguiendo la secuencia correcta.
El servicio identifica correctamente al administrador a través de su token.
El servicio permite crear un usuario.
El servicio permite eliminar un usuario.
El servicio guarda los datos de los usuarios de manera persistente.
El servicio permite identificar correctamente a un usuario válido, y rechaza usuarios inexistentes/incorrectos.
El servicio identifica correctamente si un token es válido a través de
isAuthorized
.El servicio identifica correctamente al usuario a través de su token usando
whois
.El servicio revoca automáticamente los token pasados 2 minutos.
El servicio revoca un token si el usuario se identifica de nuevo, aunque no hayan pasado los 2 minutos.
Servicio de catálogo#
El servicio se anuncia siguiendo la secuencia correcta.
Un usuario válido puede recuperar el objeto
Media
de una película existente y disponible.Un usuario válido puede recuperar el objeto
Media
de una película existente, aunque no esté disponible.Un usuario válido puede modificar las “tags” de un archivo existente.
Un usuario válido puede hacer búsquedas por etiquetas.
Cualquier usuario puede hacer búsquedas por nombre.
El administrador puede renombrar un archivo.
Se puede notificar la disponibilidad de un archivo a través de
newMedia
.Se puede notificar que un fichero deja de estar disponible a tavés de
removeMedia
Los archivos nuevos que no existieran previamente y los tags de usuarios se almacenan de manera persistente.
Servicio de archivos#
El servicio se anuncia siguiendo la secuencia correcta.
El servicio notifica al catálogo de todos los archivos en su directorio inicial.
El servicio permite que el administrador pueda subir un archivo.
El servicio sólo guarda el fichero subido en disco cuando llega completo. En cualquier otro caso, el fichero se descarta.
El servicio permite abrir un archivo existente a un usuario válido.
El servicio permite descargar un archivo a usuarios autenticados.
El servicio detecta cuando expira el token de un usuario y rechaza continuar la descarga hasta recibir un token nuevo y válido.
El servicio permite eliminar un archivo al administrador.
El servicio calcula los “media id” utilizando el algoritmo especificado.
El programa crea objetos de tipo
FileHandler
sólo cuando son necesarios, bajo demanda.
Cliente#
El programa reintenta conectarse en caso de fallo.
El programa permite a un usuario identificarse.
El programa permite realizar búsquedas anónimas por nombre.
El programa permite realizar búsquedas por “tags”.
El programa solicita automáticamente un nuevo token en caso de revocación del existente.
El programa permite al administrador añadir y eliminar usuarios.
El programa permite al administrador renombrar ficheros en el catálogo.
El programa permite al administrador subir archivos al servidor de archivos
El programa permite al administrador eliminar archivos del servidor de archivos.
El programa permite a un usuario válido descargar un archivo.