public string FileRequest(string jsonFileRequest)
        {
            FileRequestTO fileRequestTO = JsonConvert.DeserializeObject <FileRequestTO>(jsonFileRequest);
            string        jsonFileSharingDetailsList = null;
            User          userEntity = dbOperations.GetUserByUsername(fileRequestTO.Username);

            if (userEntity != null)                                                           //User exist
            {
                if (userEntity.Enabled && userEntity.Password.Equals(fileRequestTO.Password)) //Correct password
                {
                    List <File> files = null;
                    List <FileSharingDetailsTO> fileSharingDetailsTOs = new List <FileSharingDetailsTO>();
                    if (fileRequestTO.FileName.Equals("*"))
                    {
                        Dictionary <string, List <File> > filesClassifiedByName =
                            new Dictionary <string, List <File> >();

                        files = dbOperations.GetAllFiles();
                        foreach (File file in files)
                        {
                            List <File> filesWithSameName;
                            if (!filesClassifiedByName.ContainsKey(file.FileName))//Dictionary not contain file
                            {
                                filesWithSameName = new List <File>();
                                filesClassifiedByName.Add(file.FileName, filesWithSameName);
                            }
                            filesClassifiedByName.TryGetValue(file.FileName, out filesWithSameName);
                            filesWithSameName.Add(file);
                        }

                        foreach (List <File> filesWithSameName in filesClassifiedByName.Values)
                        {
                            FileSharingDetailsTO fileSharingDetailsTO = new FileSharingDetailsTO();
                            fileSharingDetailsTO.FileName = filesWithSameName.First().FileName;
                            fileSharingDetailsTO.Size     = filesWithSameName.First().Size;
                            fileSharingDetailsTO.Peers    = WCFServerUtils.GetFileSharingPeers(filesWithSameName);
                            fileSharingDetailsTOs.Add(fileSharingDetailsTO);
                        }
                    }
                    else
                    {
                        files = dbOperations.GetAllFileSharingReferencesByFileName(fileRequestTO.FileName);
                        FileSharingDetailsTO fileSharingDetailsTO = new FileSharingDetailsTO();
                        fileSharingDetailsTO.FileName = files.First().FileName;
                        fileSharingDetailsTO.Size     = files.First().Size;
                        fileSharingDetailsTO.Peers    = WCFServerUtils.GetFileSharingPeers(files);
                        fileSharingDetailsTOs.Add(fileSharingDetailsTO);
                    }
                    jsonFileSharingDetailsList = JsonConvert.SerializeObject(fileSharingDetailsTOs);
                    return(jsonFileSharingDetailsList);
                }
                Console.WriteLine("User is not enabled or password is incorrect");
            }
            Console.WriteLine("User with username {0} not exist.", fileRequestTO.Username);
            return(jsonFileSharingDetailsList);
        }
Esempio n. 2
0
        public static List <FileSharingDetailsTO> GetFilesByName(string fileName)
        {
            FileRequestTO fileRequestTO = new FileRequestTO();

            fileRequestTO.FileName = fileName;
            fileRequestTO.Username = clientDetails.Username;
            fileRequestTO.Password = clientDetails.Password;

            string jsonFileRequest     = JsonConvert.SerializeObject(fileRequestTO);
            string filesSharingDetails = proxy.FileRequest(jsonFileRequest);

            return(JsonConvert.DeserializeObject <List <FileSharingDetailsTO> >(filesSharingDetails));
        }
Esempio n. 3
0
        public static FileSharingDetailsTO GetFileToDownloadByName(string fileName)
        {
            //Get the requested file
            FileRequestTO fileRequestTO = new FileRequestTO();

            fileRequestTO.FileName = fileName;
            fileRequestTO.Username = clientDetails.Username;
            fileRequestTO.Password = clientDetails.Password;
            string jsonFileRequest = JsonConvert.SerializeObject(fileRequestTO);

            //Downloading only one file - Get the firs one
            FileSharingDetailsTO requestedFile =
                JsonConvert.DeserializeObject <List <FileSharingDetailsTO> >(proxy.FileRequest(jsonFileRequest))[0];

            return(requestedFile);
        }