Esempio n. 1
0
        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));
     }
 }