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); }