Untitled

mail@pastecode.io avatar
unknown
plain_text
3 years ago
2.2 kB
2
Indexable
Never
# encoding: utf-8
# Revisión 2019 (a Python 3 y base64): Pablo Ventura
# Copyright 2014 Carlos Bederián
# $Id: connection.py 455 2011-05-01 00:32:09Z carlos $

import os
import socket
import datatime
from constants import *
from base64 import b64encode


def get_file_listing():
    """
    Devuelve una lista de archivos del directorio compartido.
    """
    files = os.listdir(DEFAULT_DIR)
    files.sort()
    return files

def get_metadata(filename):
    """
    Devuelve los metadatos del archivo filename.
    """
    size = os.path.getsize(os.path.join(DEFAULT_DIR, filename))
    return size

def get_slice(filename, offset, size):
    """
    Ni idea mi rey
    """
    return none

class Connection(object):
    """
    Conexión punto a punto entre el servidor y un cliente.
    Se encarga de satisfacer los pedidos del cliente hasta
    que termina la conexión.
    """

    def __init__(self, socket, directory):
        # FALTA: Inicializar atributos de Connection
        self.s = socket
        self.dir = directory
        dir = os.path("directory")
        if not os.path.exists(dir):
            os.mkdir(dir)

    def handle(self, data):
        # FALTA: Manejar la conexión entrante
        # FALTA: Leer y procesar los pedidos del cliente
        # FALTA: Enviar respuestas al cliente
        # FALTA: Cerrar la conexión
        x = datatime.now()
        # Procesa el pedido del cliente
        request_str = request.decode("uft-8")
        #Parseamos
        request_str = request_str.split(" ")
        #Obtenemos el comando

        command = request_str[0]
        if(command == "get_file_listing"):
            get_file_listing()
        elif(command == "get_metadata"):
            get_metadata(FILENAME)
        elif(command == "get_slice"):
            get_slice(FILENAME, OFFSET, SIZE)
        elif(command == "quit"):
            quit()
        else:
            print("Invalid command")
        # Enviamos la respuesta al cliente
        response = response.encode("utf-8")
        self.s.send(response)
        # Cerramos la conexión
        self.s.close()