override public async Task <ResolveResultDTO <NetworkStatusData> > ResolveAsync() { var nstatus = new NetworkStatusData { networkReachability = Application.internetReachability }; if (nstatus.networkReachability == NetworkReachability.NotReachable) { return(ResolveResultDTO <NetworkStatusData> .ResolveSucceeded(nstatus)); } var req = new WebRequest(NextTestUrl()); await req.ExecuteAsyncTask(); nstatus.hasNetworkError = req.www.isNetworkError; if (nstatus.hasNetworkError) { nstatus.lastNetworkError = DateTime.Now; } else { nstatus.lastNetworkSuccess = DateTime.Now; } return(ResolveResultDTO <NetworkStatusData> .ResolveSucceeded(nstatus)); }
#pragma warning disable 1998 private async void ExecuteAsync() { ResolveResultDTO <DataType> result = default(ResolveResultDTO <DataType>); //await Task.Run(() => //{ result = this.owner.Resolve(key); //}).ConfigureAwait(false); //await new WaitForUpdate(); this.item = result; CompleteRequest(); }
override public Request <ResolveResultDTO <NetworkStatusData> > Resolve( Action <Request <ResolveResultDTO <NetworkStatusData> > > callback = null) { var nstatus = new NetworkStatusData { networkReachability = Application.internetReachability }; if (nstatus.networkReachability == NetworkReachability.NotReachable) { var res = new LocalRequest <ResolveResultDTO <NetworkStatusData> >( ResolveResultDTO <NetworkStatusData> .ResolveSucceeded(nstatus) ); res.Execute(callback); return(res); } var promise = new Promise <ResolveResultDTO <NetworkStatusData> >((resolve, reject) => { new WebRequest(NextTestUrl()).Execute(req => { nstatus.hasNetworkError = (req as WebRequest).www.isNetworkError; if (nstatus.hasNetworkError) { nstatus.lastNetworkError = DateTime.Now; } else { nstatus.lastNetworkSuccess = DateTime.Now; } resolve( ResolveResultDTO <NetworkStatusData> .ResolveSucceeded(nstatus) ); }); }); promise.Execute(callback); return(promise); }
public override async Task <ResolveResultDTO <DogData> > ResolveAsync( ResolveRequestDTO req ) { var path = DogAPI.GetDogUrl(req.key); try { // using BeatThat.Requests.WebRequest here, just an easy way // to make a one-line HTTP request and get a typed result var data = await new WebRequest <DogData>(path).ExecuteAsync(); return(ResolveResultDTO <DogData> .ResolveSucceeded( req, data.id, data )); } catch (Exception e) { return(ResolveResultDTO <DogData> .ResolveError( req, e.Message )); } }
public override Request <ResolveResultDTO <DogData> > Resolve(ResolveRequestDTO req, Action <Request <ResolveResultDTO <DogData> > > callback = null) { var key = req.key; var path = DogAPI.GetDogUrl(key); var promise = new Promise <ResolveResultDTO <DogData> >((resolve, reject) => { new WebRequest <DogData>(path).Execute(r => { if (r.hasError) { reject(ResolveResultDTO <DogData> .ResolveError(req, r.error)); return; } resolve(ResolveResultDTO <DogData> .ResolveSucceeded( req, r.item.id, r.item )); }); }); promise.Execute(callback); return(promise); }