public DtoActionResult Put(int id, EntityExternalDownload download)
        {
            download.Id = id;
            var result = _downloadService.Update(download);

            if (result == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }
            return(result);
        }
        public void DownloadFile(DtoFileDownload fileDownload)
        {
            var entityExternalDownload = new EntityExternalDownload();

            entityExternalDownload.FileName   = fileDownload.FileName;
            entityExternalDownload.Url        = fileDownload.Url;
            entityExternalDownload.ModuleGuid = fileDownload.ModuleGuid;
            entityExternalDownload.Status     = EnumFileDownloader.DownloadStatus.Queued;
            entityExternalDownload.Id         = fileDownload.ExternalDownloadId;

            new ServiceFileDownloader(entityExternalDownload).DownloadFile();
        }
        public DtoActionResult Add(EntityExternalDownload download)
        {
            var actionResult = new DtoActionResult();


            _uow.ExternalDownloadRepository.Insert(download);
            _uow.Save();
            actionResult.Success = true;
            actionResult.Id      = download.Id;


            return(actionResult);
        }
示例#4
0
        public bool DeleteExternalFile(EntityExternalDownload file)
        {
            if (file == null)
            {
                return(false);
            }
            if (string.IsNullOrEmpty(file.FileName) || file.FileName == Path.DirectorySeparatorChar.ToString())
            {
                return(false);
            }
            if (string.IsNullOrEmpty(file.ModuleGuid) || file.ModuleGuid == Path.DirectorySeparatorChar.ToString())
            {
                return(false);
            }
            var basePath = Path.Combine(ServiceSetting.GetSettingValue(SettingStrings.StoragePath), "software_uploads");
            var fullPath = Path.Combine(basePath, file.ModuleGuid, file.FileName);

            using (var unc = new UncServices())
            {
                if (unc.NetUseWithCredentials() || unc.LastError == 1219)
                {
                    try
                    {
                        File.Delete(fullPath);
                        return(true);
                    }
                    catch (Exception ex)
                    {
                        log.Error("Could Not Delete " + fullPath);
                        log.Error(ex.Message);
                        return(false);
                    }
                }
                else
                {
                    log.Error("Could Not Reach Storage Path");
                    return(false);
                }
            }
        }
        public DtoActionResult Update(EntityExternalDownload download)
        {
            var u = GetDownload(download.Id);

            if (u == null)
            {
                return new DtoActionResult {
                           ErrorMessage = "External Download Not Found", Id = 0
                }
            }
            ;

            var actionResult = new DtoActionResult();


            _uow.ExternalDownloadRepository.Update(download, u.Id);
            _uow.Save();
            actionResult.Success = true;
            actionResult.Id      = download.Id;

            return(actionResult);
        }
    }
        public async Task BatchDownload(List <DtoFileDownload> fileDownloads)
        {
            if (fileDownloads.Count == 0)
            {
                return;
            }
            var entityList = new List <EntityExternalDownload>();

            foreach (var fileDownload in fileDownloads)
            {
                var entityExternalDownload = new EntityExternalDownload();
                entityExternalDownload.FileName   = fileDownload.FileName;
                entityExternalDownload.Url        = fileDownload.Url;
                entityExternalDownload.ModuleGuid = fileDownload.ModuleGuid;
                entityExternalDownload.Sha256Hash = fileDownload.Sha256;
                entityExternalDownload.Status     = EnumFileDownloader.DownloadStatus.Queued;
                entityList.Add(entityExternalDownload);
            }
            _uow.ExternalDownloadRepository.InsertRange(entityList);
            _uow.Save();

            foreach (var ed in entityList)
            {
                await new ServiceFileDownloader(ed).DownloadFile();
            }

            var first = fileDownloads.FirstOrDefault();

            if (first != null)
            {
                if (first.SyncWhenDone)
                {
                    new FolderSync().RunAllServers();
                }
            }
        }
 public DtoActionResult Post(EntityExternalDownload download)
 {
     return(_downloadService.Add(download));
 }
示例#8
0
 public ServiceFileDownloader(EntityExternalDownload externalDownload)
 {
     EntityDownload           = externalDownload;
     _serviceExternalDownload = new ServiceExternalDownload();
     _progress = 0;
 }