private async Task <AuthorizedToken> GetTokenAsync()
        {
            SecureStorageService secureStorageService = new SecureStorageService();
            AuthorizedToken      response             = await secureStorageService.GetAsync <AuthorizedToken>(Enums.SecureStorageKey.AuthorizedToken);

            return(response);
        }
        protected async Task <T> CreatHttpPOSTRequestAsync <T>(string url, Dictionary <string, string> headers = null, string body = null, Enums.Views page = Enums.Views.None)
        {
            IsCheckInternetConnectivity();

            MessagingCenter.Send <MainPage, Enums.Views>(new MainPage(), MessageCenterAuthenticator.RequestStarted.ToString(), page);

            Type temp = typeof(T);
            T    obj  = Activator.CreateInstance <T>();

            try
            {
                HttpWebRequest request = CreateRequest(url);
                request.Method      = ConfigSettings.Constant.RequestMethod.Post;
                request.ContentType = ConfigSettings.Constant.ContentType.Json;

                if (headers != null)
                {
                    foreach (var item in headers)
                    {
                        request.Headers.Add(item.Key, item.Value);
                    }
                }

                AuthorizedToken authorizedToken = await GetTokenAsync();

                if (authorizedToken != null)
                {
                    request.Headers.Add(ConfigSettings.Constant.HeaderKey.Authorization, string.Format("Bearer {0}", authorizedToken.Token));
                }

                using (StreamWriter w = new StreamWriter(request.GetRequestStream()))
                {
                    if (body != null)
                    {
                        w.Write(body);
                    }
                    w.Flush();
                }

                var httpResponse = (HttpWebResponse)await request.GetResponseAsync();

                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                    obj = JsonConvert.DeserializeObject <T>(result);
                }
            }
            catch (WebException ex)
            {
                HandleBadResponse(ex);
            }
            finally
            {
                MessagingCenter.Send <MainPage, Enums.Views>(new MainPage(), MessageCenterAuthenticator.RequestCompleted.ToString(), page);
            }

            return(obj);
        }
        protected async Task <T> CreateHttpGETRequestAsync <T>(string url, WebHeaderCollection headers = null, Enums.Views page = Enums.Views.None)
        {
            IsCheckInternetConnectivity();

            MessagingCenter.Send <MainPage, Enums.Views>(new MainPage(), MessageCenterAuthenticator.RequestStarted.ToString(), page);


            Type temp = typeof(T);
            T    obj  = Activator.CreateInstance <T>();

            HttpWebRequest request = CreateRequest(url);

            request.Method = ConfigSettings.Constant.RequestMethod.Get;

            if (headers != null)
            {
                request.Headers = headers;
            }
            AuthorizedToken authorizedToken = await GetTokenAsync();

            if (authorizedToken != null)
            {
                request.Headers.Add(ConfigSettings.Constant.HeaderKey.Authorization, string.Format("Bearer {0}", authorizedToken.Token));
            }
            try
            {
                var httpResponse = (HttpWebResponse)await request.GetResponseAsync();

                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                    obj = JsonConvert.DeserializeObject <T>(result);
                }
            }
            catch (WebException ex)
            {
                HandleBadResponse(ex);
            }
            finally
            {
                MessagingCenter.Send <MainPage, Enums.Views>(new MainPage(), MessageCenterAuthenticator.RequestCompleted.ToString(), page);
            }

            return(obj);
        }