public async Task <ActionResult> CreateSubscription()
        {
            if (User.Identity.IsAuthenticated)
            {
                string       identifier          = User.FindFirst(Startup.ObjectIdentifierType)?.Value;
                var          graphClient         = _graphSdkHelper.GetAuthenticatedClient(identifier);
                Subscription createdSubscription = null;
                Subscription subscription        = new Subscription
                {
                    Resource           = "me/messages",
                    ChangeType         = "created,updated",
                    NotificationUrl    = GraphAuthProvider.GetNotificationUrl(),
                    ClientState        = Guid.NewGuid().ToString(),
                    ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 15, 0)
                };

                try
                {
                    createdSubscription = await graphClient.Subscriptions.Request().AddAsync(subscription);
                }
                catch (ServiceException e)
                {
                    string message = e.Message;
                    return(RedirectToAction("Index", "Error", new { message = e.Message, debug = e.Message }));
                }

                SubscriptionViewModel viewModel = new SubscriptionViewModel
                {
                    Subscription = JsonConvert.DeserializeObject <Models.Subscription>(JsonConvert.SerializeObject(createdSubscription))
                };

                SubscriptionStore.SaveSubscriptionInfo(viewModel.Subscription.Id,
                                                       viewModel.Subscription.ClientState,
                                                       User.FindFirst(Startup.ObjectIdentifierType)?.Value,
                                                       User.FindFirst(Startup.TenantIdType)?.Value);
                subscriptionId = viewModel.Subscription.Id;

                return(View("Subscription", createdSubscription));
            }

            return(View("Subscription", null));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> Index(GraphApiPage currentPage)
        {
            ClaimsPrincipal principal = HttpContext.User as ClaimsPrincipal;

            if (principal.Identity.IsAuthenticated)
            {
                string upn = principal.FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn")?.Value;
                upn = HttpUtility.UrlEncode(upn);

                //var graphService = ServiceLocator.Current.GetInstance<GraphService>();
                var graphProvider = new GraphAuthProvider(MemoryCache.Default);
                var graphService  = new GraphService(MemoryCache.Default, new GraphSdkHelper(graphProvider), graphProvider);
                CompositeGraphObject compositeGraphObject = await graphService.GetUserJson(upn, null);

                currentPage.CompositeGraphObject = compositeGraphObject;

                return(View(PageViewModel.Create(currentPage)));
            }

            return(View());
        }