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); }
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"); } }
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)); } }
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); }