예제 #1
0
        private async void declineInvite(string lobbyInvitedTo)
        {
            string requestPath = Constants.SERVER_PATH + Constants.GAME_REFUSE_INVITE_PATH;

            try
            {
                dynamic values = new JObject();
                values.username  = ServerService.instance.username;
                values.lobbyName = lobbyInvitedTo;
                var content     = JsonConvert.SerializeObject(values);
                var buffer      = System.Text.Encoding.UTF8.GetBytes(content);
                var byteContent = new ByteArrayContent(buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var response = await ServerService.instance.client.PostAsync(requestPath, byteContent);

                if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #2
0
        private async void GenerateQuickDraw(object x)
        {
            IsReqActive = false;
            var requestPath = Constants.SERVER_PATH + Constants.SUGGESTION_PATH;
            var response    = await ServerService.instance.client.GetAsync(requestPath);

            if (!response.IsSuccessStatusCode)
            {
                var message = await response.Content.ReadAsStringAsync();

                ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                ShowMessageBox(serverMessage.message);
                return;
            }

            JObject responseJson = JObject.Parse(await response.Content.ReadAsStringAsync());

            if (!(responseJson.ContainsKey("drawPng") && responseJson.ContainsKey("drawPxl") && responseJson.ContainsKey("object")))
            {
                ShowMessageBox("Error parsing server response");
                return;
            }
            GeneratedImageStrokes = (JArray)responseJson.GetValue("drawPxl");
            Base64ImageData       = responseJson.GetValue("drawPng").ToString().Split(',')[1];
            ObjectName            = responseJson.GetValue("object").ToString();
            IsReqActive           = true;
        }
예제 #3
0
        private async void ProcessChannelRequest(HttpResponseMessage response, ObservableCollection <MessageChannel> list, bool isSubbed)
        {
            Application.Current.Dispatcher.Invoke(delegate
            {
                list.Clear();
            });
            if (response.IsSuccessStatusCode)
            {
                JArray responseJson = JArray.Parse(await response.Content.ReadAsStringAsync());
                foreach (JObject item in responseJson)
                {
                    if (item.ContainsKey("id"))
                    {
                        Application.Current.Dispatcher.Invoke(delegate
                        {
                            list.Add(new MessageChannel(item.GetValue("id").ToString(), isSubbed, false));
                        });
                    }
                }
            }
            else if (!response.IsSuccessStatusCode)
            {
                var message = await response.Content.ReadAsStringAsync();

                ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                ShowMessageBox(serverMessage.message);
            }
        }
예제 #4
0
        private async Task processBotRequest()
        {
            string requestPath = Constants.SERVER_PATH + Constants.GAME_JOIN_PATH;

            try
            {
                dynamic values = new JObject();
                values.username = SelectedBot;
                values.Add("isPrivate", false);
                values.lobbyName = this.LobbyName;
                values.password  = "";
                var content     = JsonConvert.SerializeObject(values);
                var buffer      = System.Text.Encoding.UTF8.GetBytes(content);
                var byteContent = new ByteArrayContent(buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var response = await ServerService.instance.client.PostAsync(requestPath, byteContent);

                if (response.IsSuccessStatusCode)
                {
                    Bots.Remove(SelectedBot);
                }
                if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #5
0
        private async void UnsubChannel(object id)
        {
            string channelId   = (string)id;
            string requestPath = Constants.SERVER_PATH + Constants.LEAVE_CHANNEL_PATH + "/" + ServerService.instance.username + "/" + channelId;

            try
            {
                var response = await ServerService.instance.client.DeleteAsync(requestPath);

                if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                    return;
                }

                JObject responseJson = JObject.Parse(await response.Content.ReadAsStringAsync());

                if (!(responseJson.ContainsKey("status") && responseJson.ContainsKey("message")))
                {
                    ShowMessageBox("Error parsing server response");
                    return;
                }

                if (responseJson.GetValue("status").ToString() == "200")
                {
                    if (_selectedChannel.ID == channelId)
                    {
                        ChangeChannel(Constants.DEFAULT_CHANNEL);
                    }

                    MessageChannel leftChannel = new MessageChannel(channelId, false, false);
                    _subChannels.Remove(_subChannels.SingleOrDefault(i => i.id == channelId));

                    await Application.Current.Dispatcher.Invoke(async delegate
                    {
                        NotSubChannels.Clear();
                        var notSubChannelReq = await ServerService.instance.client.GetAsync(Constants.SERVER_PATH + Constants.NOT_SUB_CHANNELS_PATH + "/" + ServerService.instance.username);
                        ProcessChannelRequest(notSubChannelReq, NotSubChannels, false);
                    });
                }
                else
                {
                    ShowMessageBox(responseJson.GetValue("message").ToString());
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #6
0
        private async void fetchUsername()
        {
            App.Current.Dispatcher.Invoke(delegate
            {
                Usernames.Clear();
            });
            ObservableCollection <UserLobby> usernames = new ObservableCollection <UserLobby>();

            try
            {
                var response = await ServerService.instance.client.GetAsync(Constants.SERVER_PATH + Constants.USERS_LOBBY_PATH + LobbyName);

                if (response.IsSuccessStatusCode)
                {
                    StreamReader streamReader = new StreamReader(await response.Content.ReadAsStreamAsync());
                    String       responseData = streamReader.ReadToEnd();

                    var myData = JsonConvert.DeserializeObject <List <String> >(responseData);
                    foreach (var item in myData)
                    {
                        App.Current.Dispatcher.Invoke(delegate
                        {
                            usernames.Add(new UserLobby(item, item == ServerService.instance.username));
                            if (Bots.Contains(item))
                            {
                                Bots.Remove(item);
                            }
                        });
                    }
                    Usernames = usernames;
                    string firstUser = findFirstNotBot(Usernames);
                    IsGameMaster = ServerService.instance.username == firstUser;
                }
                else if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #7
0
        private async void SubToChannel(object id)
        {
            string channelId   = (string)id;
            string requestPath = Constants.SERVER_PATH + Constants.JOIN_CHANNEL_PATH + "/" + ServerService.instance.username + "/" + channelId;

            try
            {
                var response = await ServerService.instance.client.PutAsync(requestPath, new StringContent(""));

                if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                    return;
                }

                JObject responseJson = JObject.Parse(await response.Content.ReadAsStringAsync());

                if (!(responseJson.ContainsKey("status") && responseJson.ContainsKey("message")))
                {
                    ShowMessageBox("Error parsing server response");
                    return;
                }

                if (responseJson.GetValue("status").ToString() == "200")
                {
                    Application.Current.Dispatcher.Invoke(delegate
                    {
                        _notSubChannels.Remove(_notSubChannels.SingleOrDefault(i => i.id == channelId));
                        _subChannels.Add(new MessageChannel(channelId, true, false));
                        ChangeChannel(channelId);
                    });
                }
                else
                {
                    ShowMessageBox(responseJson.GetValue("message").ToString());
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #8
0
        private async void getOnlineUsers()
        {
            OnlineUsers.Clear();
            ObservableCollection <string> usernames = new ObservableCollection <string>();

            try
            {
                var response = await ServerService.instance.client.GetAsync(Constants.SERVER_PATH + Constants.ONLINE_USERS_PATH + SearchString);

                if (response.IsSuccessStatusCode)
                {
                    StreamReader streamReader = new StreamReader(await response.Content.ReadAsStreamAsync());
                    String       responseData = streamReader.ReadToEnd();

                    var myData = JsonConvert.DeserializeObject <List <String> >(responseData);
                    foreach (var item in myData)
                    {
                        App.Current.Dispatcher.Invoke(delegate
                        {
                            if (item != ServerService.instance.username)
                            {
                                usernames.Add(item);
                            }
                        });
                    }
                    OnlineUsers = usernames;
                }
                else if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #9
0
        private async Task startGame()
        {
            var response = await ServerService.instance.client.GetAsync(Constants.SERVER_PATH + Constants.START_GAME_PATH + LobbyName);

            try
            {
                if (response.IsSuccessStatusCode)
                {
                    Mediator.Notify("GoToGameScreen", Mode);
                }
                else if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }
예제 #10
0
        private async void fetchProfile()
        {
            try
            {
                var response = await ServerService.instance.client.GetAsync(Constants.SERVER_PATH + Constants.USER_INFO_PATH + ServerService.instance.username);

                string responseString = await response.Content.ReadAsStringAsync();

                if (response.IsSuccessStatusCode)
                {
                    var data = JsonConvert.DeserializeObject <User>(responseString);
                    ServerService.instance.user = data;
                }
                else if (!response.IsSuccessStatusCode)
                {
                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(responseString);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception)
            {
                ShowMessageBox("Failed to connect!");
            }
        }
예제 #11
0
        private async void joinLobbyFromInvite(string lobbyInvitedTo)
        {
            try
            {
                string  requestPath = Constants.SERVER_PATH + Constants.GAME_JOIN_PATH;
                dynamic values      = new JObject();
                values.username = ServerService.instance.username;
                values.Add("isPrivate", false);
                values.lobbyName = lobbyInvitedTo;
                values.password  = "";
                var content     = JsonConvert.SerializeObject(values);
                var buffer      = System.Text.Encoding.UTF8.GetBytes(content);
                var byteContent = new ByteArrayContent(buffer);
                byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var response = await ServerService.instance.client.PostAsync(requestPath, byteContent);

                if (response.IsSuccessStatusCode)
                {
                    Dictionary <string, string> data = new Dictionary <string, string>();
                    data.Add("lobbyName", lobbyInvitedTo);
                    data.Add("mode", Mode_Invited);
                    Mediator.Notify("GoToLobbyScreen", data);
                }
                else if (!response.IsSuccessStatusCode)
                {
                    var message = await response.Content.ReadAsStringAsync();

                    ErrorServerMessage serverMessage = JsonConvert.DeserializeObject <ErrorServerMessage>(message);
                    ShowMessageBox(serverMessage.message);
                }
            }
            catch (Exception e)
            {
                ShowMessageBox(e.Message);
            }
        }