Esempio n. 1
0
        public async Task <ClientValidationOutcome> ValidateSubscription(Subscription subscription, HubValidationOutcome outcome)
        {
            if (subscription == null)
            {
                throw new ArgumentNullException(nameof(subscription));
            }

            SubscriptionBase callbackParameters = null;

            if (outcome == HubValidationOutcome.Canceled)
            {
                logger.LogDebug("Simulating canceled subscription.");

                callbackParameters = new SubscriptionCancelled
                {
                    Reason = $"The subscription {subscription} was canceled for testing purposes.",
                };
            }
            else
            {
                logger.LogDebug("Verifying subscription.");

                callbackParameters = new SubscriptionVerification
                {
                    // Note that this is not necessarily cryptographically random/secure.
                    Challenge     = Guid.NewGuid().ToString("n"),
                    Lease_Seconds = subscription.Lease_Seconds
                };
            }

            // Default parametres for both cancel/verify.
            callbackParameters.Callback = subscription.Callback;
            callbackParameters.Events   = subscription.Events;
            callbackParameters.Mode     = subscription.Mode;
            callbackParameters.Topic    = subscription.Topic;

            logger.LogDebug($"Calling callback url: {subscription.Callback}");
            var callbackUri = new SubscriptionCallback().GetCallbackUri(subscription, callbackParameters);
            var response    = await new HttpClient().GetAsync(callbackUri);

            if (!response.IsSuccessStatusCode)
            {
                logger.LogInformation($"Status code was not success but instead {response.StatusCode}");
                return(ClientValidationOutcome.NotVerified);
            }
            if (outcome == HubValidationOutcome.Valid)
            {
                var challenge    = ((SubscriptionVerification)callbackParameters).Challenge;
                var responseBody = (await response.Content.ReadAsStringAsync());
                if (responseBody != challenge)
                {
                    logger.LogInformation($"Callback result for verification request was not equal to challenge. Response body: '{responseBody}', Challenge: '{challenge}'.");
                    return(ClientValidationOutcome.NotVerified);
                }

                return(ClientValidationOutcome.Verified);
            }

            return(ClientValidationOutcome.NotVerified);
        }
Esempio n. 2
0
 public void Handle(SubscriptionCancelled message)
 {
     if (this._user == null || message.UserId != this._user.id)
     {
         return;
     }
     this._user.friend_status = 0;
     this.NotifySubscribeProperties();
 }
 public void Handle(SubscriptionCancelled message)
 {
     if (message.UserId != this.UserId)
     {
         return;
     }
     this.IsHandled = false;
     this.AddToFriendsButtonIcon       = "../Resources/New/FriendAdd.png";
     this.AddToFriendsButtonForeground = new SolidColorBrush(Color.FromArgb(byte.MaxValue, (byte)81, (byte)129, (byte)184));
 }
Esempio n. 4
0
 public void Handle(SubscriptionCancelled message)
 {
     if (this._userOrGroupId != AppGlobalStateManager.Current.LoggedInUserId || this._isGroup || !this._subscriptions)
     {
         return;
     }
     Execute.ExecuteOnUIThread((Action)(() =>
     {
         UserGroupHeader userGroupHeader = this.FollowersVM.Collection.FirstOrDefault <UserGroupHeader>((Func <UserGroupHeader, bool>)(f =>
         {
             if (f.UserHeader != null)
             {
                 return(f.UserHeader.UserId == message.UserId);
             }
             return(false);
         }));
         if (userGroupHeader == null)
         {
             return;
         }
         this.FollowersVM.Delete(userGroupHeader);
     }));
 }
 public void Handle(SubscriptionCancelled message)
 {
   this.UpdateUserFriendStatus(message.UserId, 0);
 }