using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Threading.Tasks; using MediaBrowser.Common.Json; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Users; namespace MediaBrowser.Common.ApiInteraction { public class ApiController { public string ApiUrl { get; set; } private WebClient WebClient { get; set; } public ApiController() { WebClient = new WebClient(); } public async Task> GetRootItem(Guid userId) { string url = ApiUrl + "/item?userId=" + userId.ToString(); using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return DeserializeBaseItemWrapper(gzipStream); } } } public async Task> GetItem(Guid id, Guid userId) { string url = ApiUrl + "/item?userId=" + userId.ToString(); if (id != Guid.Empty) { url += "&id=" + id.ToString(); } using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return DeserializeBaseItemWrapper(gzipStream); } } } public async Task> GetAllUsers() { string url = ApiUrl + "/users"; using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return JsonSerializer.DeserializeFromStream>(gzipStream); } } } public async Task> GetAllGenres(Guid userId) { string url = ApiUrl + "/genres?userId=" + userId.ToString(); using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return JsonSerializer.DeserializeFromStream>(gzipStream); } } } public async Task GetGenre(string name, Guid userId) { string url = ApiUrl + "/genre?userId=" + userId.ToString() + "&name=" + name; using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return JsonSerializer.DeserializeFromStream(gzipStream); } } } public async Task> GetAllStudios(Guid userId) { string url = ApiUrl + "/studios?userId=" + userId.ToString(); using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return JsonSerializer.DeserializeFromStream>(gzipStream); } } } public async Task GetStudio(string name, Guid userId) { string url = ApiUrl + "/studio?userId=" + userId.ToString() + "&name=" + name; using (Stream stream = await WebClient.OpenReadTaskAsync(url)) { using (GZipStream gzipStream = new GZipStream(stream, CompressionMode.Decompress, false)) { return JsonSerializer.DeserializeFromStream(gzipStream); } } } private static ApiBaseItemWrapper DeserializeBaseItemWrapper(Stream stream) { ApiBaseItemWrapper data = JsonSerializer.DeserializeFromStream>(stream); return data; } } }