public IAsyncOperation <TData> GetAsync <TData>(Uri uri, TData obj) where TData : class { refineUri(ref uri); return(Run(async token => { var resT = this.HttpClient.GetAsync(uri); token.Register(resT.Cancel); var resp = await resT; var str = await resp.Content.ReadAsStringAsync(); try { var file = await DownloadsFolder.CreateFileAsync(uri.PathAndQuery.Replace('/', '.'), CreationCollisionOption.FailIfExists); await FileIO.WriteTextAsync(file, str); } catch (Exception) { } var res = new Response <TData>(obj); JsonConvert.PopulateObject(str, res, jsonSettings); if (!res.Success) { throw AnitamaServerException.Create(res); } return obj; })); }
public IAsyncOperation <TData> PostAsync <TData>(Uri uri, IHttpContent content) { refineUri(ref uri); return(Run(async token => { var resT = this.HttpClient.PostAsync(uri, content); token.Register(resT.Cancel); var resp = await resT; var str = await resp.Content.ReadAsStringAsync(); var res = JsonConvert.DeserializeObject <Response <TData> >(str, jsonSettings); if (!res.Success) { throw AnitamaServerException.Create(res); } return res.Data; })); }
public IAsyncOperation <TData> PostAsync <TData>(Uri uri, IHttpContent content, TData obj) where TData : class { refineUri(ref uri); return(Run(async token => { var resT = this.HttpClient.PostAsync(uri, content); token.Register(resT.Cancel); var resp = await resT; var str = await resp.Content.ReadAsStringAsync(); var res = new Response <TData>(obj); JsonConvert.PopulateObject(str, res, jsonSettings); if (!res.Success) { throw AnitamaServerException.Create(res); } return obj; })); }