Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
                }
            }
        }