Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.99 KB | None | 0 0
  1.         static readonly HttpClient httpClient = new HttpClient();
  2.         private static readonly MeetingManager _singleton = new MeetingManager();
  3.         private Models.Environment _currentEnv;
  4.  
  5.         public static MeetingManager SharedInstance()
  6.         {
  7.             return _singleton;
  8.         }
  9.  
  10.         private MeetingManager()
  11.         {
  12.             //httpClient = new HttpClient();
  13.             httpClient.BaseAddress = new Uri("http://192.168.100.5:3002/api/");
  14.             // We want the response to be JSON.
  15.             httpClient.DefaultRequestHeaders.Accept.Clear();
  16.             httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
  17.         }
  18.  
  19.         public async Task<List<Meeting>> GetAllMeetingsV2(Action<IEnumerable<Meeting>> callback = null)
  20.         {
  21.             var meetings = new List<Meeting>();
  22.             var currentEnvId = UserManager.SharedInstance().GetCurrentEnvironment().Id;
  23.             var currentUserId = UserManager.SharedInstance().GetCurrentSession().User.Id;
  24.             int page = 1, totalPages = 0;
  25.             do
  26.             {
  27.                 if (CrossConnectivity.Current.IsConnected)
  28.                 {
  29.                     object data = new
  30.                     {
  31.                         idEnvironment = currentEnvId,
  32.                         idUser = currentUserId,
  33.                         page
  34.                     };
  35.                     var request = new HttpRequestMessage(HttpMethod.Post, "Meetings/getAllMeetingsV2")
  36.                     {
  37.                         Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json")
  38.                     };
  39.                     //HttpResponseMessage response = await httpClient.SendAsync(request).ConfigureAwait(false);
  40.                     using (HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false))
  41.                     {
  42.                         if (response.IsSuccessStatusCode) // response.EnsureSuccessStatusCode()
  43.                         {
  44.                             using (Stream s = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
  45.                             using (StreamReader sr = new StreamReader(s))
  46.                             using (JsonReader reader = new JsonTextReader(sr))
  47.                             {
  48.                                 JsonSerializer serializer = new JsonSerializer();
  49.  
  50.                                 // read the json from a stream
  51.                                 // json size doesn't matter because only a small piece is read at a time from the HTTP request
  52.                                 var result = serializer.Deserialize<PagedResult<Meeting>>(reader);
  53.                                 //}
  54.  
  55.                                 //if (response.IsSuccessStatusCode)
  56.                                 //{
  57.                                 //string jsonString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
  58.                                 //var result = JsonConvert.DeserializeObject<PagedResult<Meeting>>(jsonString);
  59.                                 if (result != null)
  60.                                 {
  61.                                     if (result.Items != null/*result.Items.Any()*/)
  62.                                     {
  63.                                         //App.Database.SaveEntities(meetings, true).DoNotWait();
  64.  
  65.                                         // Build the full list to return later after the loop.
  66.                                         meetings.AddRange(result.Items.ToList());
  67.  
  68.                                         // Run the callback method, passing the current page of data from the API.
  69.                                         callback?.Invoke(result.Items);
  70.                                     }
  71.  
  72.                                     // Get values for the next page
  73.                                     page = result.Pagination.Page + 1;
  74.                                     totalPages = result.Pagination.TotalPages;
  75.                                 }
  76.                                 else // result == null
  77.                                 {
  78.                                     // End loop if we get an error response.
  79.                                     totalPages = 0;
  80.                                     //TODO: Load from local DB
  81.                                 }
  82.                             }
  83.                         }
  84.                         else
  85.                         {
  86.                             // End loop if we get an error response.
  87.                             totalPages = 0;
  88.                             //TODO: Load from local DB
  89.                         }
  90.                     }
  91.                 }
  92.                 else
  93.                 {
  94.                     // End loop if we get an error response.
  95.                     totalPages = 0;
  96.                     //TODO: Load from local DB
  97.                 }
  98.             }
  99.             while (page <= totalPages);
  100.             return meetings;
  101.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement