Beispiel #1
0
        /// <summary>
        /// Get Analytics features for Search
        /// Consult Algolia Analytics documentation for supported options
        /// </summary>
        /// <param name="options"></param>
        /// <param name="searchType"></param>
        /// <returns></returns>
        public async Task <JObject> GetAnalyticsForSearch(AnalyticsOptions options, AnalyticSearchType searchType)
        {
            var requestUrl = $"{AnalyticsApiUrl}/searches/{Indices}/{GetSearchResource(searchType)}";

            if (!string.IsNullOrWhiteSpace(options.RequestString))
            {
                requestUrl += options.RequestString;
            }

            var httpRequest = await _httpClient.GetAsync(requestUrl);

            var httpResponse = string.Empty;

            if (httpRequest.IsSuccessStatusCode)
            {
                httpResponse = await httpRequest.Content.ReadAsStringAsync();
            }
            else
            {
                switch (httpRequest.StatusCode)
                {
                case HttpStatusCode.Forbidden:
                    throw new AlgoliaException("Invalid Incredentials.");

                case HttpStatusCode.InternalServerError:
                    throw new AlgoliaException("An Internal server error occurred.");
                }
            }


            var result = JObject.Parse(httpResponse);

            return(result);
        }
        /// <summary>
        /// Gets the parameter for the resource endpoint based on the searchtype selected
        /// </summary>
        /// <param name="searchType"></param>
        /// <returns></returns>
        private static string GetSearchResource(AnalyticSearchType searchType)
        {
            switch (searchType)
            {
            case AnalyticSearchType.Popular:
                return("popular");

            case AnalyticSearchType.NoResults:
                return("noresults");

            case AnalyticSearchType.Countries:
                return("countries");

            case AnalyticSearchType.Hits:
                return("hits");

            case AnalyticSearchType.HitsWithTypo:
                return("hitswithtypo");

            case AnalyticSearchType.TopIps:
                return("ips");

            case AnalyticSearchType.Referers:
                return("referer");

            default:
                throw new AlgoliaException("Invalid Search Feature Selected");
            }
        }
Beispiel #3
0
 /// <summary>
 /// Default Method for Geting Analytics for searches
 /// </summary>
 /// <param name="searchType"></param>
 /// <returns></returns>
 public async Task <JObject> GetAnalyticsForSearch(AnalyticSearchType searchType)
 {
     return(await GetAnalyticsForSearch(new AnalyticsOptions(), searchType));
 }