public async Task SaveTickersToS3(string code, List <TickerEntity> tickerList, Boolean mergeExisting = false) { string keyName = $@"ticker/{code}/{code}_day.txt"; string content = string.Empty; List <TickerEntity> mergedList = null; if (mergeExisting) { List <TickerEntity> existingList = await this.GetExistingDayTickersFromS3(code); var comparer = new TickerComparer(); mergedList = tickerList.Union(existingList, comparer).ToList(); } else { mergedList = tickerList; } List <TickerEntity> sortedList = mergedList.OrderBy(o => o.P).ToList(); foreach (TickerEntity t in sortedList) { content = content + t.ToString() + "\n"; } S3Service.S3Service service = new S3Service.S3Service(); await service.UploadStringContentToS3Async(this.S3_Bucket_Name, keyName, content); }
public void TestUploadFileToS3Async() { S3Service.S3Service service = new S3Service.S3Service(); const string bucket = "stevenjiangnz-screen3-eod-source"; string key = "source/test.zip"; string path = "/home/steven/devlocal/screen3solution/Screen3.Test/obj/project.assets.json"; service.UploadFileToS3Async(bucket, key, path).Wait(); }
public async Task <List <TickerEntity> > GetExistingDayTickersFromS3(string code) { List <TickerEntity> tickerList = new List <TickerEntity>(); string keyName = $@"ticker/{code}/{code}_day.txt"; string content = string.Empty; S3Service.S3Service service = new S3Service.S3Service(); content = await service.DownloadContentFromS3Async(this.S3_Bucket_Name, keyName); tickerList = this.getTickerListFromString(content); return(tickerList); }
public async Task GetTickerFromEmail(string emailAccount, string emailPwd, string bucketName) { List <string> fileNames = new List <string>(); string localInboxFolder = "/tmp/screen3_temp_files/inbox/"; string localInboxZipFolder = "/tmp/screen3_temp_files/inbox_zip/"; string zipFileName = ""; FileHelper.ClearDirectory(localInboxFolder, true); FileHelper.ClearDirectory(localInboxZipFolder, true); using (var client = new ImapClient()) { client.Connect("imap.gmail.com", 993, true); client.Authenticate(emailAccount, emailPwd); // The Inbox folder is always available on all IMAP servers... var inbox = client.Inbox; inbox.Open(FolderAccess.ReadWrite); foreach (var uid in inbox.Search(SearchQuery.NotSeen)) { var message = inbox.GetMessage(uid); if (message.Subject.IndexOf("Daily Historical Data") >= 0) { foreach (MimeEntity attachment in message.Attachments) { var fileName = localInboxFolder + attachment.ContentDisposition?.FileName ?? attachment.ContentType.Name; using (var stream = File.Create(fileName)) { if (attachment is MessagePart) { var rfc822 = (MessagePart)attachment; rfc822.Message.WriteTo(stream); } else { var part = (MimePart)attachment; part.Content.DecodeTo(stream); } } fileNames.Add(fileName); } } inbox.AddFlags(uid, MessageFlags.Seen, true); } client.Disconnect(true); if (fileNames.Count > 0) { S3Service.S3Service service = new S3Service.S3Service(); zipFileName = DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".zip"; var zipFilePath = localInboxZipFolder + zipFileName; ZipFile.CreateFromDirectory(localInboxFolder, zipFilePath); await service.UploadFileToS3Async(bucketName, "source/" + zipFileName, zipFilePath); } } }