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();
        }
Beispiel #2
0
        /// <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);
                    }
                }
            }
        }
Beispiel #3
0
        /// <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));
        }