Exemplo n.º 1
0
        public async Task <bool> SaveToCache(IBus bus, CacheRetentionCategory retentionCategory, string file)
        {
            if (!File.Exists(file))
            {
                throw new FileNotFoundException("Unable to upload file to cache because file was not found", file);
            }

            var cacheConnectionInfoRequest = new CacheConnectionInfoRequest();
            var requestClient =
                CreateRequestClient <CacheConnectionInfoRequest, CacheConnectionInfoResponse>(bus, BusConstants.CacheConnectionInfoRequestQueue);

            var response = await requestClient.Request(cacheConnectionInfoRequest);


            try
            {
                using (var client = new Sftp())
                {
                    client.Connect(response.Machine, (int)response.Port);
                    Log.Information("connected to {host}:{port}", response.Machine, response.Port);

                    client.Login(retentionCategory.ToString(), response.Password);

                    Log.Information("{username} logged in successfully ", retentionCategory);
                    client.Upload(file, "/", TraversalMode.NonRecursive, TransferMethod.Copy, ActionOnExistingFiles.OverwriteAll);
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Unexpexted error while uploading to cache");
            }

            return(false);
        }
        public async Task <string> GetFtpUrl(IBus bus, CacheRetentionCategory retentionCategory, string id)
        {
            Log.Information("GetDownloadLink started");
            var cacheConnectionInfoRequest = new CacheConnectionInfoRequest();
            var requestClient = CreateRequestClient <CacheConnectionInfoRequest>(bus, BusConstants.CacheConnectionInfoRequestQueue);

            var response = (await requestClient.GetResponse <CacheConnectionInfoResponse>(cacheConnectionInfoRequest)).Message;

            Log.Information("GetDownloadLink finished");
            return($"sftp://{retentionCategory}:{response.Password}@{response.Machine}:{response.Port}/{id}");
        }