Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static readonly HttpClient httpClient = new HttpClient();
- private static readonly MeetingManager _singleton = new MeetingManager();
- private Models.Environment _currentEnv;
- public static MeetingManager SharedInstance()
- {
- return _singleton;
- }
- private MeetingManager()
- {
- //httpClient = new HttpClient();
- httpClient.BaseAddress = new Uri("http://192.168.100.5:3002/api/");
- // We want the response to be JSON.
- httpClient.DefaultRequestHeaders.Accept.Clear();
- httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
- }
- public async Task<List<Meeting>> GetAllMeetingsV2(Action<IEnumerable<Meeting>> callback = null)
- {
- var meetings = new List<Meeting>();
- var currentEnvId = UserManager.SharedInstance().GetCurrentEnvironment().Id;
- var currentUserId = UserManager.SharedInstance().GetCurrentSession().User.Id;
- int page = 1, totalPages = 0;
- do
- {
- if (CrossConnectivity.Current.IsConnected)
- {
- object data = new
- {
- idEnvironment = currentEnvId,
- idUser = currentUserId,
- page
- };
- var request = new HttpRequestMessage(HttpMethod.Post, "Meetings/getAllMeetingsV2")
- {
- Content = new StringContent(JsonConvert.SerializeObject(data), Encoding.UTF8, "application/json")
- };
- //HttpResponseMessage response = await httpClient.SendAsync(request).ConfigureAwait(false);
- using (HttpResponseMessage response = await httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false))
- {
- if (response.IsSuccessStatusCode) // response.EnsureSuccessStatusCode()
- {
- using (Stream s = await response.Content.ReadAsStreamAsync().ConfigureAwait(false))
- using (StreamReader sr = new StreamReader(s))
- using (JsonReader reader = new JsonTextReader(sr))
- {
- JsonSerializer serializer = new JsonSerializer();
- // read the json from a stream
- // json size doesn't matter because only a small piece is read at a time from the HTTP request
- var result = serializer.Deserialize<PagedResult<Meeting>>(reader);
- //}
- //if (response.IsSuccessStatusCode)
- //{
- //string jsonString = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
- //var result = JsonConvert.DeserializeObject<PagedResult<Meeting>>(jsonString);
- if (result != null)
- {
- if (result.Items != null/*result.Items.Any()*/)
- {
- //App.Database.SaveEntities(meetings, true).DoNotWait();
- // Build the full list to return later after the loop.
- meetings.AddRange(result.Items.ToList());
- // Run the callback method, passing the current page of data from the API.
- callback?.Invoke(result.Items);
- }
- // Get values for the next page
- page = result.Pagination.Page + 1;
- totalPages = result.Pagination.TotalPages;
- }
- else // result == null
- {
- // End loop if we get an error response.
- totalPages = 0;
- //TODO: Load from local DB
- }
- }
- }
- else
- {
- // End loop if we get an error response.
- totalPages = 0;
- //TODO: Load from local DB
- }
- }
- }
- else
- {
- // End loop if we get an error response.
- totalPages = 0;
- //TODO: Load from local DB
- }
- }
- while (page <= totalPages);
- return meetings;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement