private SubscriptionServiceResult CallSubscriber(IHubConfiguration configuration, SubscriptionModel model) { SubscriptionServiceResult result = new SubscriptionServiceResult() { Type = SubscriptionResponseResultType.Success }; var request = CreateRequest(configuration, model); try { var response = (HttpWebResponse)request.GetResponse(); _loggingService.Info("Response received: " + response.StatusCode); if (response.StatusCode != HttpStatusCode.NoContent) { result.Type = SubscriptionResponseResultType.Error; result.ErrorDescription = "The pubsubhub returned " + response.StatusDescription; } else { using (Stream receiveStream = response.GetResponseStream()) { using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8)) { string hubResponse = readStream.ReadToEnd(); _loggingService.Info("Response text received: " + hubResponse); } } } } catch (WebException we) { if (((HttpWebResponse)we.Response).StatusCode == HttpStatusCode.Unauthorized) { result.Type = SubscriptionResponseResultType.NotAuthorised; result.ErrorDescription = "The credentials provided were not accepted by the subscription hub"; } else if ((int)((HttpWebResponse)we.Response).StatusCode == 422) { result.Type = SubscriptionResponseResultType.NotFound; result.ErrorDescription = model.Mode + " error. The hub did not believe the subscription to exist or the sync callback failed."; } else { string msg = model.Mode + " error. " + we.ToString(); _loggingService.Error(msg); result.Type = SubscriptionResponseResultType.Error; result.ErrorDescription = msg; } } return(result); }
public ActionResult Create([Bind(Exclude = "Id")] SubscriptionModel model) { ActionResult view = View(); try { model.Callback = model.Callback ?? Request.Url.GetLeftPart(UriPartial.Authority) + GetAppPath() + Url.Action("HubUpdate", "HubSubscription"); model.Mode = model.Mode ?? "subscribe"; model.Verify = model.Verify ?? "sync"; model.PubSubHubUser = HubConfiguration.HubUsername; _loggingService.Info("Creating subscription for " + model + "\nModel valid: " + ViewData.ModelState.IsValid); ViewData.Model = model; if (ViewData.ModelState.IsValid) { int maxSubsForUser = _subscriptionPersistenceService.GetMaxSubscriptionsForUser(model.PubSubHubUser); int userSubCount = _subscriptionPersistenceService.GetSubscriptionCountForUser(model.PubSubHubUser); if (userSubCount >= maxSubsForUser) { string msg = string.Format("Maximum number of subscriptions reaced for user. Subscriptions in use {0}. Maximum subscriptions {1}.", userSubCount, maxSubsForUser); ViewData["ErrorDescription"] = msg; } else { _subscriptionPersistenceService.StoreSubscription(model); SubscriptionServiceResult result = _subscriptionService.Subscribe(HubConfiguration, model); if (result.Type != SubscriptionResponseResultType.Success) { ViewData["ErrorDescription"] = result.ErrorDescription; } else { view = RedirectToAction("Index"); } } } } catch (Exception ex) { string msg = "An exception occurred in Create method: " + ex.ToString(); _loggingService.Error(msg); ViewData["ErrorDescription"] = msg; } return(view); }
// // GET: /HubSubscription/Delete/5 public ActionResult Delete(int id) { ActionResult view = View("DeleteError"); _loggingService.Info("Deleting subscription Id: " + id); try { SubscriptionModel model = _subscriptionPersistenceService.GetSubscriptionById(id); model.PendingDeletion = true; model.LastUpdated = DateTime.Now; model.Mode = "unsubscribe"; _subscriptionPersistenceService.SaveChanges(model); SubscriptionServiceResult result = _subscriptionService.UnSubscribe(HubConfiguration, model); if (result.Type == SubscriptionResponseResultType.Error || result.Type == SubscriptionResponseResultType.NotAuthorised) { ViewData["ErrorDescription"] = result.ErrorDescription; } else if (result.Type == SubscriptionResponseResultType.NotFound) { _subscriptionPersistenceService.DeleteSubscriptionById(id); string msg = "The subscription could not be found in the subscription service. Deleted anyway. " + result.ErrorDescription; _loggingService.Error(msg); ViewData["ErrorDescription"] = msg; } else { view = RedirectToAction("Index"); } } catch (Exception ex) { string msg = "An exception in Delete method: " + ex.ToString(); _loggingService.Error(msg); ViewData["ErrorDescription"] = msg; } return(view); }