public async Task <bool> CreateOrUpdateUrlAnalytics(UrlAnalytics urlAnalytics)
        {
            await _urlAnalyticsTable.CreateIfNotExistsAsync();

            await _urlAnalyticsTable.ExecuteAsync(TableOperation.InsertOrReplace(urlAnalytics));

            return(true);
        }
Esempio n. 2
0
        public async Task <Result <bool> > CreateOrUpdateUrlAnalytics(UrlAnalyticsQueueMessage message)
        {
            try
            {
                if (string.IsNullOrEmpty(message?.UserAgent))
                {
                    throw new Exception("user agent is empty");
                }
                var ua           = Parser.GetDefault()?.Parse(message?.UserAgent);
                var urlAnalytics = new UrlAnalytics
                {
                    Browser      = ua?.UserAgent.Family,
                    BrowserVer   = ua?.UserAgent.Major,
                    Os           = ua?.OS?.Family,
                    OsVer        = ua?.OS?.Major,
                    Referrer     = message.Referer,
                    PartitionKey = message.ShortUrlCode.Substring(0, 3),
                    RowKey       = message.ShortUrlCode
                };

                var result = await _urlAnalyticsRepository.CreateOrUpdateUrlAnalytics(urlAnalytics);

                return(new Result <bool>
                {
                    Success = true,
                    Data = result
                });
            }
            catch (Exception ex)
            {
                _logger.LogError($"{ex.Message} - {ex}");
                return(new Result <bool>
                {
                    Success = false,
                    Error = ex.Message
                });
            }
        }