示例#1
0
        private int GetAtomFeedItems(AtomFeed feed, Subscription subscription)
        {
            var itemsAdded = 0;

            foreach (var entry in feed.Entries.Where(x => subscription.LastFeedUpdatesUTC == null ||
                                                     x.PublishedOn.ToUniversalTime() > subscription.LastFeedUpdatesUTC))
            {
                var categories       = entry.Categories.Aggregate(String.Empty, (current, category) => current + (category.Label + ",")).TrimEnd(',');
                var authors          = entry.Authors.Aggregate(String.Empty, (current, author) => current + (author.Name + ",")).TrimEnd(',');
                var subscriptionPost = new SubscriptionPost
                {
                    Authors        = authors,
                    Categories     = categories,
                    Content        = entry.Content != null ? entry.Content.Content : (entry.Summary != null) ? entry.Summary.Content : String.Empty,
                    OriginalUrl    = GetOriginalUrl(entry),
                    PublishDateUTC = GetGoodDateTime(entry.PublishedOn.ToUniversalTime()),
                    Subscription   = subscription,
                    Title          = entry.Title.Content
                };
                itemsAdded++;
                _dbContext.SubscriptionPosts.Add(subscriptionPost);
                subscription.SubscriptionPosts.Add(subscriptionPost);
            }
            return(itemsAdded);
        }
示例#2
0
        public IActionResult Post([FromBody] SubscriptionPost value)
        {
            if (value != null)
            {
                try
                {
                    _subscriptionMediator.Insert(new SubscriptionDTO
                    {
                        Name              = value.Name,
                        Price             = value.Price,
                        PriceIncVatAmount = value.PriceIncVatAmount,
                        CallMinutes       = value.CallMinutes
                    });
                }
                catch (System.Exception)
                {
                    return(BadRequest(value));
                }
            }

            return(Created("/subscriptions", value));
        }
        public async Task <SubscriptionResponse> SetSubscription()
        {
            Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationResult res = await _authContext.AcquireTokenAsync("https://graph.microsoft.com", _credential);

            string accessToken = res.AccessToken;
            var    req         = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri($"https://graph.microsoft.com/beta/subscriptions"),
            };

            req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var subscriptionSettting = new SubscriptionPost
            {
                ChangeType         = "created,updated",
                NotificationUrl    = _subscriptionUrl,
                ExpirationDateTime = DateTime.Now.AddMinutes(30),
                Resource           = $"/teams/{_teamsId}/channels/{_channelId}/messages"
            };
            string        json    = JsonSerializer.ToJsonString <SubscriptionPost>(subscriptionSettting);
            StringContent content = new StringContent(json, Encoding.UTF8, "application/json");

            req.Content = content;

            var reqRes = await _httpClient.SendAsync(req);

            if (reqRes.IsSuccessStatusCode)
            {
                string contentString = await reqRes.Content.ReadAsStringAsync();

                SubscriptionResponse retContent = JsonSerializer.Deserialize <SubscriptionResponse>(contentString);
                return(retContent);
            }
            else
            {
                throw new Exception("Failed Post Message");
            }
        }
示例#4
0
        public IActionResult Put(Guid id, [FromBody] SubscriptionPost value)
        {
            try
            {
                var subscription = _subscriptionMediator.GetById(id);

                if (subscription != null)
                {
                    subscription.CallMinutes       = value.CallMinutes;
                    subscription.Name              = value.Name;
                    subscription.Price             = value.Price;
                    subscription.PriceIncVatAmount = value.PriceIncVatAmount;

                    _subscriptionMediator.Update(subscription);
                }

                return(NoContent());
            }
            catch (System.Exception)
            {
                return(BadRequest(id));
            }
        }
示例#5
0
        private int GetRssFeedItems(RssFeed feed, Subscription subscription)
        {
            var itemsAdded = 0;

            foreach (var rssItem in feed.Channel.Items.Where(x => subscription.LastFeedUpdatesUTC == null ||
                                                             x.PublicationDate.ToUniversalTime() > subscription.LastFeedUpdatesUTC))
            {
                var categories       = rssItem.Categories.Aggregate(String.Empty, (current, category) => current + (category.Value + ",")).TrimEnd(',');
                var subscriptionPost = new SubscriptionPost
                {
                    Categories     = categories,
                    OriginalUrl    = rssItem.Link.ToString(),
                    PublishDateUTC = GetGoodDateTime(rssItem.PublicationDate.ToUniversalTime()),
                    Subscription   = subscription,
                    Title          = rssItem.Title,
                    Content        = GetRssContent(rssItem),
                    Authors        = GetRssAuthors(rssItem)
                };
                itemsAdded++;
                _dbContext.SubscriptionPosts.Add(subscriptionPost);
                subscription.SubscriptionPosts.Add(subscriptionPost);
            }
            return(itemsAdded);
        }