public async Task <IEnumerable <Room> > GetRooms()
        {
            var request  = CreateAuthorizedRequest(HttpMethod.Get, new Uri($"{ServerAddress}/api/v1/rooms.get"));
            var response = await httpClient.SendAsync(request);

            var responseContent = await response.Content.ReadAsStringAsync();

            var responseJson = JsonConvert.DeserializeObject <GetRoomsReponse>(responseContent);
            var rooms        = new List <Room>();

            foreach (var room in responseJson.update)
            {
                Room newRoom;
                if (room.t == "c" && room.prid == null)
                {
                    newRoom           = new Channel(room);
                    newRoom.Avatar    = avatarsService.GetChannelAvatar(ServerAddress, newRoom.Name);
                    newRoom.AvatarUrl = avatarsService.GetChannelAvatarUrl(ServerAddress, newRoom.Name);
                }
                else if (room.t == "c" && room.prid != null)
                {
                    newRoom           = new Discussion(room);
                    newRoom.Avatar    = avatarsService.GetChannelAvatar(ServerAddress, newRoom.Name);
                    newRoom.AvatarUrl = avatarsService.GetChannelAvatarUrl(ServerAddress, newRoom.Name);
                }
                else if (room.t == "d")
                {
                    newRoom = new DirectConversation(room);
                }
                else
                {
                    newRoom           = new PrivateGroup(room);
                    newRoom.Avatar    = avatarsService.GetChannelAvatar(ServerAddress, newRoom.Name);
                    newRoom.AvatarUrl = avatarsService.GetChannelAvatarUrl(ServerAddress, newRoom.Name);
                }
                rooms.Add(newRoom);
            }
            return(rooms);
        }