public static void PrepareResponse <T>(this RestOperationCompletedEventArgs <HttpResponseMessage <DataResponse <T> > > restOperation, Action <T> success, Action <string> failure) { if (restOperation.Error != null) { failure?.Invoke(restOperation.Error.Message); return; } var responseStatusCode = restOperation.Response.StatusCode; if (responseStatusCode != HttpStatusCode.OK) { failure?.Invoke(restOperation.Response.StatusDescription); return; } var responseBody = restOperation.Response.Body; if (responseBody.Code < 0) { failure?.Invoke(responseBody.Message); return; } success?.Invoke(responseBody.Data); }
private void GetCursoredProfileListAsyncRecursive( RestOperationCompletedEventArgs<CursoredList<long>> userIdsResult, CursoredList<TwitterProfile> users, IEnumerator<List<long>> userIdChunk, Action<RestOperationCompletedEventArgs<CursoredList<TwitterProfile>>> operationCompleted) { if (userIdChunk.MoveNext()) { string joinedIds = ArrayUtils.Join(userIdChunk.Current.ToArray()); this.restTemplate.GetForObjectAsync<IList<TwitterProfile>>(this.BuildUrl("users/lookup.json", "user_id", joinedIds), r => { if (r.Error == null) { users.AddRange(r.Response); this.GetCursoredProfileListAsyncRecursive(userIdsResult, users, userIdChunk, operationCompleted); } else { operationCompleted(new RestOperationCompletedEventArgs<CursoredList<TwitterProfile>>(null, r.Error, r.Cancelled, r.UserState)); } }); } else { operationCompleted(new RestOperationCompletedEventArgs<CursoredList<TwitterProfile>>(users, userIdsResult.Error, userIdsResult.Cancelled, userIdsResult.UserState)); } }
private void GetCursoredProfileListAsync( RestOperationCompletedEventArgs<CursoredList<long>> userIdsResult, Action<RestOperationCompletedEventArgs<CursoredList<TwitterProfile>>> operationCompleted) { if (userIdsResult.Error == null) { // TODO: Would be good to figure out how to retrieve profiles in a tighter-than-cursor granularity. List<List<long>> chunks = this.ChunkList(userIdsResult.Response, 100); CursoredList<TwitterProfile> users = new CursoredList<TwitterProfile>(); users.PreviousCursor = userIdsResult.Response.PreviousCursor; users.NextCursor = userIdsResult.Response.NextCursor; IEnumerator<List<long>> chunkEnumerator = chunks.GetEnumerator(); this.GetCursoredProfileListAsyncRecursive(userIdsResult, users, chunkEnumerator, operationCompleted); } else { operationCompleted(new RestOperationCompletedEventArgs<CursoredList<TwitterProfile>>(null, userIdsResult.Error, userIdsResult.Cancelled, userIdsResult.UserState)); } }