private void UpdateUser() { UserApiForward theNewForward = new UserApiForward() { Type = mApiSite.Type, ApiKey = this.ApiKey, ForwardToThis = this.ForwardToThis, Messages = MessagesToForward.ToList() }; UserApiForward theOldForward = null; foreach (var theUserApiForward in mUser.Forwards) { if (theUserApiForward.Type == theNewForward.Type) { theOldForward = theUserApiForward; } } if (theOldForward != null) { mUser.Forwards.Remove(theOldForward); } mUser.Forwards.Add(theNewForward); mHexApi.UpdateUser(mUser); SendAllToLeftCommand.RaiseCanExecuteChanged(); SendAllToRightCommand.RaiseCanExecuteChanged(); }
/// <summary> /// Forwards message to all supported sites. /// </summary> /// <param name="aMessage"></param> /// <param name="aMessageString"></param> /// <param name="aUser"></param> /// <returns></returns> public static async Task ForwardMessage(IMessage aMessage, string aMessageString, User aUser) { if (aMessage == null || aUser == null || aMessageString == null) { return; } foreach (var theSite in AllHexSites()) { if (theSite.Value.SupportedMessages.Contains(aMessage.Type)) { UserApiForward theApiForward = null; foreach (var theForward in aUser.Forwards) { if (theForward.Type == theSite.Value.Type) { theApiForward = theForward; } } if (theApiForward != null && theApiForward.Messages.Contains(aMessage.Type)) { await ForwardToSite(theSite.Value, theApiForward, aMessageString); } } } }
/// <summary> /// Forwards to specific site /// </summary> /// <param name="aSite"></param> /// <param name="aUserForward"></param> /// <param name="aMessageString"></param> /// <returns></returns> private static async Task <bool> ForwardToSite(ApiSite aSite, UserApiForward aUserForward, string aMessageString) { var theUri = aSite.Uri; if (aSite.RequiresKey) { if (String.IsNullOrWhiteSpace(aUserForward.ApiKey)) { return(false); } theUri = String.Format(theUri, aUserForward.ApiKey); } return(await PostMessage(theUri, aMessageString)); }