Ejemplo n.º 1
0
        /// <summary>
        ///     Get top searches
        /// </summary>
        /// <param name="querry">querry string of the search</param>
        /// <param name="searchType">Search type(only blended and users works)</param>
        /// <param name="timezoneOffset">
        ///     Timezone offset of the search region (GMT Offset * 60 * 60 - Like Tehran GMT +3:30 = 3.5*
        ///     60*60 = 12600)
        /// </param>
        /// <returns></returns>
        public async Task <IResult <InstaDiscoverTopSearches> > GetTopSearchesAsync(
            string querry = "",
            InstaDiscoverSearchType searchType = InstaDiscoverSearchType.Users,
            int timezoneOffset = 12600)
        {
            try
            {
                var instaUri = InstaUriCreator.GetTopSearchUri(user.RankToken, querry, searchType, timezoneOffset);
                var request  = httpHelper.GetDefaultRequest(HttpMethod.Get, instaUri, deviceInfo);
                var response = await httpRequestProcessor.SendAsync(request).ConfigureAwait(false);

                var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    return(Result.UnExpectedResponse <InstaDiscoverTopSearches>(response, json));
                }

                var obj = JsonConvert.DeserializeObject <InstaDiscoverTopSearchesResponse>(json);
                return(Result.Success(InstaConvertersFabric.Instance.GetDiscoverTopSearchesConverter(obj).Convert()));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(InstaDiscoverTopSearches), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <InstaDiscoverTopSearches>(exception));
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        ///     Get suggested searches
        /// </summary>
        /// <param name="searchType">Search type(only blended and users works)</param>
        public async Task <IResult <InstaDiscoverSuggestedSearches> > GetSuggestedSearchesAsync(InstaDiscoverSearchType searchType =
                                                                                                InstaDiscoverSearchType.Users)
        {
            try
            {
                var instaUri = UriCreator.GetSuggestedSearchUri(searchType);
                var request  = _httpHelper.GetDefaultRequest(HttpMethod.Get, instaUri, _deviceInfo);
                var response = await _httpRequestProcessor.SendAsync(request);

                var json = await response.Content.ReadAsStringAsync();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    return(Result.UnExpectedResponse <InstaDiscoverSuggestedSearches>(response, json));
                }

                var obj = JsonConvert.DeserializeObject <InstaDiscoverSuggestedSearchesResponse>(json);
                return(Result.Success(ConvertersFabric.Instance.GetDiscoverSuggestedSearchesConverter(obj).Convert()));
            }
            catch (HttpRequestException httpException)
            {
                _logger?.LogException(httpException);
                return(Result.Fail(httpException, default(InstaDiscoverSuggestedSearches), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                _logger?.LogException(exception);
                return(Result.Fail <InstaDiscoverSuggestedSearches>(exception));
            }
        }