/// <summary>
        /// Calls a REST API, auto deserializes output
        /// </summary>
        /// <typeparam name="TOut"></typeparam>
        /// <param name="url"></param>
        /// <param name="route"></param>
        /// <param name="method"></param>
        /// <param name="queryParams"></param>
        /// <param name="data"></param>
        /// <param name="authToken"></param>
        /// <param name="customHeaders"></param>
        /// <param name="transferAuthHdr">Whether or not auth header should be automatically transferred to outgoing request; when a custom auth header is provided it will always take precedence</param>
        /// <param name="transferMhHdrs">Whether or not should auto transfer maphive request headers such as request src, lng, etc</param>
        /// <param name="transferRequestHdrs">Whether or not should auto transfer request headers so they are sent out </param>
        /// <returns></returns>
        protected internal virtual async Task <RestApi.ApiCallOutput <TOut> > RestApiCall <TOut>(string url, string route,
                                                                                                 Method method = Method.GET,
                                                                                                 Dictionary <string, object> queryParams   = null, object data          = null, string authToken = null,
                                                                                                 Dictionary <string, string> customHeaders = null, bool transferAuthHdr = true, bool transferMhHdrs = true,
                                                                                                 bool transferRequestHdrs = true)
        {
            if (transferMhHdrs)
            {
                customHeaders ??= new Dictionary <string, string>();
                foreach (var mhHdr in WebClientConfiguration.GetMhHeaders())
                {
                    if (Request.Headers.ContainsKey(mhHdr))
                    {
                        if (!customHeaders.ContainsKey(mhHdr))
                        {
                            customHeaders.Add(mhHdr, Request.Headers[mhHdr]);
                        }
                    }
                }
            }

            return(await Cartomatic.Utils.RestApi.RestApiCall <TOut>(Request, url, route, method, queryParams, data, authToken,
                                                                     customHeaders, null, transferAuthHdr,
                                                                     transferRequestHdrs));
        }
 public async Task <IHttpActionResult> GetWebClientConfiguration()
 {
     try
     {
         return(Ok(await WebClientConfiguration.ReadAsync(new MapHiveDbContext("MapHiveMeta"))));
     }
     catch (Exception ex)
     {
         return(HandleException(ex));
     }
 }