Exemplo n.º 1
0
        public async Task <IActionResult> Unsubscribe()
        {
            Console.WriteLine($"/pollinator/atom/unsubscribe{Request.QueryString}");

            string uriQuery = Request.Query["uri"];

            var user = await GetUserFromUriQuery(uriQuery);

            var aggregator = await GetAggregatorFromUriQuery(uriQuery);

            if (user == null && aggregator == null)
            {
                return(Ok());
            }

            var author = await _userManager.GetUserAsync(User);

            if (user != null)
            { // user subscription
                var subscription = await _userSubscriptionManager.FindAsync(author, user);

                // only remove subscription when it exists
                if (subscription != null)
                {
                    // remove subscription
                    if (!await _userSubscriptionManager.RemoveAsync(subscription))
                    {
                        return(StatusCode(500));
                    }
                }
            }
            else
            { // aggregator subscription
                var subscription = await _aggregatorSubscriptionManager.FindAsync(author, aggregator);

                // only remove subscription when it exists
                if (subscription != null)
                {
                    // remove subscription
                    if (!await _aggregatorSubscriptionManager.RemoveAsync(subscription))
                    {
                        return(StatusCode(500));
                    }
                }
            }

            return(Ok());
        }