示例#1
0
    public async Task <ApiResponse <ChartResponse> > GetLogStats()
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            var request = new LogGrpcRequest
            {
                Days     = 14,
                Logger   = "all",
                MinLevel = 3
            };
            var logResponse = await _logGrpcService.GetLogsAsync(request);

            if (logResponse.IsOk)
            {
                logResponse.Logs = logResponse.Logs ?? new List <LaobianLog>();
                var groupedLogs   = logResponse.Logs.GroupBy(x => x.TimeStamp.Date).OrderBy(x => x.Key);
                var chartResponse = new ChartResponse {
                    Title = "# Warning/Error logs", Type = "bar"
                };
                foreach (var item in groupedLogs)
                {
                    chartResponse.Labels.Add(item.Key.ToRelativeDaysHuman());
                    chartResponse.Data.Add(item.Count());
                }

                response.Content = chartResponse;
            }
            else
            {
                response.IsOk    = false;
                response.Message = logResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, "Get logs stats failed.");
        }

        return(response);
    }
示例#2
0
    public async Task <ApiResponse <ChartResponse> > GetPostAccessChart([FromRoute] string postLink)
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            _blogGrpcRequest.ExtractRuntime = true;
            _blogGrpcRequest.Link           = postLink;
            var blogResponse = await _blogGrpcService.GetPostAsync(_blogGrpcRequest);

            if (blogResponse.IsOk)
            {
                var chartResponse = new ChartResponse
                {
                    Title = "当天的访问量",
                    Type  = "line"
                };

                for (var i = 14; i >= 0; i--)
                {
                    var date = DateTime.Now.Date.AddDays(-i);
                    blogResponse.PostRuntime.Accesses ??= new List <BlogAccess>();
                    var item = blogResponse.PostRuntime.Accesses.FirstOrDefault(x => x.Date == date);
                    chartResponse.Data.Add(item?.Count ?? 0);
                    chartResponse.Labels.Add(date.ToRelativeDaysHuman());
                }

                response.Content = chartResponse;
            }
            else
            {
                response.IsOk    = false;
                response.Message = blogResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, $"Get post {postLink} access stats failed.");
        }

        return(response);
    }
    public async Task <ApiResponse <ChartResponse> > GetChartForCountPerMonth()
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            var request = new DiaryGrpcRequest {
                Year = DateTime.Now.Year
            };
            var diaryResponse = await _diaryGrpcService.GetDiaryDatesAsync(request);

            if (diaryResponse.IsOk)
            {
                var chart = new ChartResponse
                {
                    Title = "当月的日记数",
                    Type  = "line"
                };

                diaryResponse.DiaryDates ??= new List <DateTime>();
                foreach (var item in diaryResponse.DiaryDates.GroupBy(x => x.Month).OrderBy(x => x.Key))
                {
                    chart.Data.Add(item.Count());
                    chart.Labels.Add($"{item.Key}月");
                }

                response.Content = chart;
            }
            else
            {
                response.IsOk    = false;
                response.Message = diaryResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, "Get chart for count per month failed.");
        }

        return(response);
    }
    public async Task <ApiResponse <ChartResponse> > GetChartForWordsPerYear()
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            var request = new DiaryGrpcRequest {
                ExtractRuntime = true
            };
            var diaryResponse = await _diaryGrpcService.GetDiariesAsync(request);

            if (diaryResponse.IsOk)
            {
                var chart = new ChartResponse
                {
                    Title = "当年的日记字数",
                    Type  = "line"
                };

                diaryResponse.DiaryRuntimeList ??= new List <DiaryRuntime>();
                foreach (var item in diaryResponse.DiaryRuntimeList.GroupBy(x => x.Raw.Date.Year).OrderBy(x => x.Key))
                {
                    chart.Data.Add(item.Sum(x => x.Raw.MarkdownContent.Length));
                    chart.Labels.Add($"{item.Key}年");
                }

                response.Content = chart;
            }
            else
            {
                response.IsOk    = false;
                response.Message = diaryResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, "Get chart for words per year failed.");
        }

        return(response);
    }
示例#5
0
    public async Task <ApiResponse <ChartResponse> > GetPostsWordsCountStats()
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            _blogGrpcRequest.ExtractRuntime = true;
            var blogResponse = await _blogGrpcService.GetPostsAsync(_blogGrpcRequest);

            if (blogResponse.IsOk)
            {
                blogResponse.Posts ??= new List <BlogPostRuntime>();
                var items         = blogResponse.Posts.GroupBy(x => x.Raw.CreateTime.Year).OrderBy(x => x.Key);
                var chartResponse = new ChartResponse
                {
                    Title = "当年文章的总字数",
                    Type  = "bar"
                };
                foreach (var item in items)
                {
                    chartResponse.Data.Add(item.Sum(x => x.Raw.MdContent.Length));
                    chartResponse.Labels.Add(item.Key.ToString());
                }

                response.Content = chartResponse;
            }
            else
            {
                response.IsOk    = false;
                response.Message = blogResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, "Get posts stats for words count failed.");
        }

        return(response);
    }
示例#6
0
    public async Task <ApiResponse <ChartResponse> > GetPostsAccess([FromQuery] int days)
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            _blogGrpcRequest.ExtractRuntime = true;
            var blogResponse = await _blogGrpcService.GetPostsAsync(_blogGrpcRequest);

            if (blogResponse.IsOk)
            {
                blogResponse.Posts ??= new List <BlogPostRuntime>();
                var access = blogResponse.Posts.SelectMany(x => x.Accesses)
                             .Where(x => x.Date >= DateTime.Now.AddDays(-days) && x.Date <= DateTime.Now).GroupBy(x => x.Date)
                             .OrderBy(x => x.Key);
                var chartResponse = new ChartResponse {
                    Title = "访问量", Type = "line"
                };
                foreach (var item in access)
                {
                    chartResponse.Data.Add(item.Sum(x => x.Count));
                    chartResponse.Labels.Add(item.Key.ToRelativeDaysHuman());
                }

                response.Content = chartResponse;
            }
            else
            {
                response.IsOk    = false;
                response.Message = blogResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, $"Get posts access failed for {days} days.");
        }

        return(response);
    }
    public async Task <ApiResponse <ChartResponse> > GetWordsPerYearChart()
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            var noteResponse = await _noteGrpcService.GetStatWordsPerYearAsync(_request);

            if (noteResponse.IsOk)
            {
                noteResponse.Data ??= new Dictionary <string, int>();
                var chartResponse = new ChartResponse
                {
                    Title = "当年文章的总字数",
                    Type  = "line"
                };
                foreach (var item in noteResponse.Data)
                {
                    chartResponse.Data.Add(item.Value);
                    chartResponse.Labels.Add(item.Key);
                }

                response.Content = chartResponse;
            }
            else
            {
                response.IsOk    = false;
                response.Message = noteResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, $"{nameof(GetWordsPerYearChart)} failed.");
        }

        return(response);
    }
    public async Task <ApiResponse <ChartResponse> > GetReadStats()
    {
        var response = new ApiResponse <ChartResponse>();

        try
        {
            var request       = new ReadGrpcRequest();
            var itemsResponse = await _readGrpcService.GetReadItemsAsync(request);

            if (itemsResponse.IsOk)
            {
                itemsResponse.ReadItems ??= new List <ReadItemRuntime>();
                var chartResponse = new ChartResponse {
                    Title = "当年阅读数", Type = "bar"
                };
                foreach (var item in itemsResponse.ReadItems.GroupBy(x => x.Raw.StartTime.Year).OrderBy(x => x.Key))
                {
                    chartResponse.Data.Add(item.Count());
                    chartResponse.Labels.Add(item.Key.ToString());
                }

                response.Content = chartResponse;
            }
            else
            {
                response.IsOk    = false;
                response.Message = itemsResponse.Message;
            }
        }
        catch (Exception ex)
        {
            response.IsOk    = false;
            response.Message = ex.Message;
            _logger.LogError(ex, "Get read stats failed.");
        }

        return(response);
    }
    private IEnumerator CommunicateWithServer()
    {
        string url = BASE_URL + "debug/temperature/";

        ChartRequest chartRequest = new ChartRequest();
        string       jsonString   = JsonUtility.ToJson(chartRequest);

        UnityWebRequest request = UnityWebRequest.Post(url, jsonString);

        request.SetRequestHeader("Content-Type", "application/json");
        request.SetRequestHeader("Accept", "application/json");

        yield return(request.SendWebRequest());

        if (!request.isNetworkError && request.responseCode == 200)
        {
            Debug.Log("Success.");
            Debug.Log(request.downloadHandler.text);

            string stringResponse = request.downloadHandler.text;

            chartResponse = JsonConvert.DeserializeObject <ChartResponse>(
                stringResponse);
        }
        else
        {
            Debug.Log("Fail");
            Debug.Log(request.responseCode);
            Debug.Log(request.error);

            chartResponse = new ChartResponse
            {
                success  = false,
                errorMsg = request.error,
            };
        }
        UpdateUI();
    }
示例#10
0
        public string ConvertCandlesPolygon(string symbol, string timeFrame, decimal utcTime)
        {
            List <GetCandlesResponse> candles = new List <GetCandlesResponse>();
            List <List <decimal?> >   hloc    = new List <List <decimal?> >();
            List <long?> v1             = new List <long?>();
            List <long?> xSeries        = new List <long?>();
            string       from           = DateTime.UtcNow.AddMinutes((long)utcTime).AddDays(-10).ToString("yyyy/MM/dd").Replace("/", "-");
            string       to             = DateTime.UtcNow.AddMinutes((long)utcTime).AddDays(1).ToString("yyyy/MM/dd").Replace("/", "-");
            var          candlesPolygon = _uow.MarketRates.GetCandlesPolygon(UtilityMethods.convertSymbolPolygon(symbol), from, to, timeFrame);

            for (var k = 0; k < candlesPolygon.results.Count; k++)
            {
                hloc.Add(new List <decimal?>
                {
                    candlesPolygon.results[k].h,
                    candlesPolygon.results[k].l,
                    candlesPolygon.results[k].o,
                    candlesPolygon.results[k].c
                });
                v1.Add((long)candlesPolygon.results[k].v);
                xSeries.Add(candlesPolygon.results[k].t / 1000);
            }

            try
            {
                var startTime = 0;
                if (xSeries.Count >= 25)
                {
                    startTime = xSeries.Count - 25;
                }
                else
                {
                    startTime = 0;
                }
                var endTime = xSeries.Count - 1;

                DateTime mFromDateTime = UnixTimeStampToDateTime(xSeries[startTime].Value).AddMinutes((-1 * (double)(utcTime)));
                DateTime mToDateTime   = UnixTimeStampToDateTime(xSeries[endTime].Value).AddMinutes(((-1 * (double)(utcTime))));

                ChartResponse chart = new ChartResponse()
                {
                    data = new Data()
                    {
                        HLOC = new HLOC()
                        {
                            LKOH = hloc
                        },
                        V1 = new V1()
                        {
                            LKOH = v1
                        },
                        XSeries = new XSeries()
                        {
                            LKOH = xSeries
                        }
                    },
                    dataSettings = new DataSetting()
                    {
                        useHash          = false,
                        dateFrom         = mFromDateTime.Day.ToString("D2") + "." + mFromDateTime.Month.ToString("D2") + "." + mFromDateTime.Year.ToString("D4") + " " + mFromDateTime.Hour.ToString("D2") + ":" + mFromDateTime.Minute.ToString("D2") + ":" + mFromDateTime.Second.ToString("D2"),
                        dateTo           = mToDateTime.Day.ToString("D2") + "." + mToDateTime.Month.ToString("D2") + "." + mToDateTime.Year.ToString("D4") + " " + mToDateTime.Hour.ToString("D2") + ":" + mToDateTime.Minute.ToString("D2") + ":" + mToDateTime.Second.ToString("D2"),
                        start            = mFromDateTime.Day.ToString("D2") + "." + mFromDateTime.Month.ToString("D2") + "." + mFromDateTime.Year.ToString("D4") + " " + mFromDateTime.Hour.ToString("D2") + ":" + mFromDateTime.Minute.ToString("D2") + ":" + mFromDateTime.Second.ToString("D2"),
                        end              = mToDateTime.Day.ToString("D2") + "." + mToDateTime.Month.ToString("D2") + "." + mToDateTime.Year.ToString("D4") + " " + mToDateTime.Hour.ToString("D2") + ":" + mToDateTime.Minute.ToString("D2") + ":" + mToDateTime.Second.ToString("D2"),
                        graphicIndicator = "",
                        hash             = "",
                        id        = "LKOH",
                        interval  = "I15",
                        timeFrame = 1440
                    }
                };

                var call  = JsonConvert.SerializeObject(chart);
                var call2 = call.Remove((call.Length - 1), 1).Remove(0, 2);
                call2 = call2.Remove(4, 1);

                for (var i = 0; i < call2.Length; i++)
                {
                    if (call2[i].Equals('d') && call2[i + 4].Equals('S'))
                    {
                        call2 = call2.Remove((i - 1), 1).Remove((i + 11), 1);
                        break;
                    }
                }
                return(call2);
            }
            catch (Exception ex) {
                return(null);
            }
        }
示例#11
0
        public string ConvertCandles(string symbol, string timeFrame, decimal utcTime)
        {
            List <GetCandlesResponse> candles = new List <GetCandlesResponse>();
            List <List <decimal?> >   hloc    = new List <List <decimal?> >();
            List <long?> v1             = new List <long?>();
            List <long?> xSeries        = new List <long?>();
            var          candlesBinance = (object[][])_uow.MarketRates.GetTestCandles(UtilityMethods.convertSymbol(symbol), timeFrame, 700);

            if (candlesBinance != null)
            {
                for (var val = 0; val < candlesBinance.Length; val++)
                {
                    hloc.Add(new List <decimal?>
                    {
                        decimal.Parse(candlesBinance[val][2].ToString()),
                        decimal.Parse(candlesBinance[val][3].ToString()),
                        decimal.Parse(candlesBinance[val][1].ToString()),
                        decimal.Parse(candlesBinance[val][4].ToString())
                    });
                    v1.Add((long)decimal.Parse(candlesBinance[val][9].ToString()));
                    xSeries.Add((long)candlesBinance[val][0] / 1000);
                }

                try
                {
                    var startTime = xSeries.Count - 25;
                    var endTime   = xSeries.Count - 1;

                    DateTime mFromDateTime = UnixTimeStampToDateTime(xSeries[startTime].Value).AddMinutes((-1 * (double)(utcTime)));
                    DateTime mToDateTime   = UnixTimeStampToDateTime(xSeries[endTime].Value).AddMinutes(((-1 * (double)(utcTime))));

                    ChartResponse chart = new ChartResponse()
                    {
                        data = new Data()
                        {
                            HLOC = new HLOC()
                            {
                                LKOH = hloc
                            },
                            V1 = new V1()
                            {
                                LKOH = v1
                            },
                            XSeries = new XSeries()
                            {
                                LKOH = xSeries
                            }
                        },
                        dataSettings = new DataSetting()
                        {
                            useHash          = false,
                            dateFrom         = mFromDateTime.Day.ToString("D2") + "." + mFromDateTime.Month.ToString("D2") + "." + mFromDateTime.Year.ToString("D4") + " " + mFromDateTime.Hour.ToString("D2") + ":" + mFromDateTime.Minute.ToString("D2") + ":" + mFromDateTime.Second.ToString("D2"),
                            dateTo           = mToDateTime.Day.ToString("D2") + "." + mToDateTime.Month.ToString("D2") + "." + mToDateTime.Year.ToString("D4") + " " + mToDateTime.Hour.ToString("D2") + ":" + mToDateTime.Minute.ToString("D2") + ":" + mToDateTime.Second.ToString("D2"),
                            start            = mFromDateTime.Day.ToString("D2") + "." + mFromDateTime.Month.ToString("D2") + "." + mFromDateTime.Year.ToString("D4") + " " + mFromDateTime.Hour.ToString("D2") + ":" + mFromDateTime.Minute.ToString("D2") + ":" + mFromDateTime.Second.ToString("D2"),
                            end              = mToDateTime.Day.ToString("D2") + "." + mToDateTime.Month.ToString("D2") + "." + mToDateTime.Year.ToString("D4") + " " + mToDateTime.Hour.ToString("D2") + ":" + mToDateTime.Minute.ToString("D2") + ":" + mToDateTime.Second.ToString("D2"),
                            graphicIndicator = "",
                            hash             = "",
                            id        = "LKOH",
                            interval  = "I15",
                            timeFrame = 1440
                        }
                    };

                    var call  = JsonConvert.SerializeObject(chart);
                    var call2 = call.Remove((call.Length - 1), 1).Remove(0, 2);
                    call2 = call2.Remove(4, 1);

                    for (var i = 0; i < call2.Length; i++)
                    {
                        if (call2[i].Equals('d') && call2[i + 4].Equals('S'))
                        {
                            call2 = call2.Remove((i - 1), 1).Remove((i + 11), 1);
                            break;
                        }
                    }
                    return(call2);
                }
                catch (Exception ex)
                {
                    return(null);
                }
            }
            return(null);
        }