private async void SendMessage(string message) {
            if (string.IsNullOrWhiteSpace(message)) return;

            message = message.TrimEnd();

            var messageModel = new Message {
                Content = message.EscapeMessage(),
                Device = "desktop",
                ClientId = App.Connection.Faye.ClientId
            };

            var messageData = await JsonConvert.SerializeObjectAsync(messageModel);

            messageModel.Id = Guid.NewGuid().ToString();
            messageModel.Author = App.Connection.SessionController.CurrentSession;

            cloudController.Messages.AddToEnd(messageModel);

            var client = new HttpClient {
                DefaultRequestHeaders = {
                    { "Accept", "application/json" }, 
                    { "X-Auth-Token", App.Connection.SessionController.CurrentSession.AuthToken }
                }
            };
            var response = await client.PostAsync(Endpoints.CloudMessages.Replace("[:id]", cloudController.Cloud.Id),
                new StringContent(messageData) {
                    Headers = {
                        ContentType = new MediaTypeHeaderValue("application/json")
                    }
                }
            );

            try {
                var responseText = await response.Content.ReadAsStringAsync();
                var fullMessage = await JsonConvert.DeserializeObjectAsync<WebResponse<Message>>(responseText);

                if (fullMessage == null) return;
                if (fullMessage.Flash != null) {
                    await App.Connection.ErrorController.OnError(fullMessage);
                    return;
                }

                fullMessage.Result.PreProcess();
                fullMessage.Result.CopyTo(messageModel);
            } catch (JsonException) { }
        }
        private void SendToast(Message message) {
            if (!AppSettings.Settings.DisplayNotifications) {
                return;
            }

            if (App.Connection.MessageController.CurrentCloud == this
                && Window.Current.Visible) {
                return;
            }

            var notifier = ToastNotificationManager.CreateToastNotifier();
            var template = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText02);
            var image = (XmlElement)template.GetElementsByTagName("image")[0];
            image.SetAttribute("src", message.Author.Avatar.Normal.ToString());
            image.SetAttribute("alt", message.Author.Name);
            var textElements = template.GetElementsByTagName("text");
            textElements[0].AppendChild
                (template.CreateTextNode(Cloud.Name + " : " + message.Author.Name));
            textElements[1].AppendChild
                (template.CreateTextNode (Message.SlashMeFormat.Replace(message.Content, message.Author.Name)));
            var toastNode = (XmlElement)template.SelectSingleNode("/toast");
            toastNode.SetAttribute("launch", JObject.FromObject(new {
                type = "toast",
                cloudId = Cloud.Id
            }).ToString(Formatting.None));
            var audio = template.CreateElement("audio");
            audio.SetAttribute("silent", "true");
            toastNode.AppendChild(audio);

            var toast = new ToastNotification(template);
            notifier.Show(toast);
        }