Exemple #1
0
        public async Task <string> GetOptionDailyCsvByTaifexAsync(OptionDailyQuery optionDailyQuery)
        {
            using (var client = _clientFactory.CreateClient())
            {
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));
                var response = await client.PostAsync(
                    "https://www.taifex.com.tw/cht/3/dlFutDataDown",
                    new FormUrlEncodedContent(
                        new [] {
                    new KeyValuePair <string, string>("down_type", "1"),
                    new KeyValuePair <string, string>("commodity_id", optionDailyQuery.optionType.ToString()),
                    new KeyValuePair <string, string>("commodity_id2", ""),
                    new KeyValuePair <string, string>("queryStartDate", optionDailyQuery.queryStartDate.ToString("yyyy/MM/dd")),
                    new KeyValuePair <string, string>("queryEndDate", optionDailyQuery.queryEndDate.ToString("yyyy/MM/dd")),
                }
                        )
                    );

                var bytes = await response.Content.ReadAsByteArrayAsync();

                var result = Encoding.GetEncoding(950).GetString(bytes);
                if (response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    throw new PlatformNotSupportedException($"目前無法爬取期貨資料...,{response.StatusCode},{result}");
                }
                return(result);
            }
        }
Exemple #2
0
        public async Task ExecuteAsync(OptionDailyQuery optionDailyQuery)
        {
            try
            {
                var csvString = await GetOptionDailyCsvByTaifexAsync(optionDailyQuery);

                var csvList = ReadCsv(csvString).ToList().Where(csv => !_optionDailyRepository.IsExist(csv));
                _optionDailyRepository.Insert(csvList);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
            }
        }
        public IActionResult RunOptionDailyClawer([FromBody] OptionDailyQuery optionDailyQuery)
        {
            Task clawerTask = _reportFcatory.GetOptionDailyClawer().ExecuteAsync(optionDailyQuery);

            return(new JsonResult(new { Success = true }));
        }