Example #1
0
        private async Task <IResult <InstaCollectionsResponse> > GetCollections(PaginationParameters paginationParameters)
        {
            try
            {
                var collectionUri = InstaUriCreator.GetCollectionsUri(paginationParameters?.NextMaxId);
                var request       = httpHelper.GetDefaultRequest(HttpMethod.Get, collectionUri, 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 <InstaCollectionsResponse>(response, json));
                }

                var collectionsResponse = JsonConvert.DeserializeObject <InstaCollectionsResponse>(json);
                return(Result.Success(collectionsResponse));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(InstaCollectionsResponse), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <InstaCollectionsResponse>(exception));
            }
        }
        /// <summary>
        ///     Get suggested searches
        /// </summary>
        public async Task <IResult <InstaTvSearch> > GetSuggestedSearchesAsync()
        {
            InstaUserAuthValidator.Validate(userAuthValidate);
            try
            {
                var instaUri = InstaUriCreator.GetIgtvSuggestedSearchesUri();
                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 <InstaTvSearch>(response, json));
                }

                var obj = JsonConvert.DeserializeObject <InstaTvSearchResponse>(json);

                return(Result.Success(InstaConvertersFabric.Instance.GetTvSearchConverter(obj).Convert()));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(InstaTvSearch), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <InstaTvSearch>(exception));
            }
        }
        /// <summary>
        ///     Get product info
        /// </summary>
        /// <param name="productId">Product id (get it from <see cref="InstaProduct.ProductId" /> )</param>
        /// <param name="mediaPk">Media Pk (get it from <see cref="InstaMedia.Pk" />)</param>
        /// <param name="deviceWidth">Device width (pixel)</param>
        public async Task <IResult <InstaProductInfo> > GetProductInfoAsync(
            long productId,
            string mediaPk,
            int deviceWidth = 720)
        {
            try
            {
                var instaUri = InstaUriCreator.GetProductInfoUri(productId, mediaPk, deviceWidth);
                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 <InstaProductInfo>(response, json));
                }

                var productInfoResponse = JsonConvert.DeserializeObject <InstaProductInfoResponse>(json);
                var converted           = InstaConvertersFabric.Instance.GetProductInfoConverter(productInfoResponse).Convert();

                return(Result.Success(converted));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(InstaProductInfo), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <InstaProductInfo>(exception));
            }
        }
Example #4
0
        private async Task <IResult <InstaMediaListResponse> > GetAnyFeeds(Uri instaUri)
        {
            try
            {
                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 <InstaMediaListResponse>(response, json));
                }

                var mediaResponse = JsonConvert.DeserializeObject <InstaMediaListResponse>(
                    json,
                    new InstaMediaListDataConverter());

                return(Result.Success(mediaResponse));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(InstaMediaListResponse), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <InstaMediaListResponse>(exception));
            }
        }
        /// <summary>
        ///     Get location(place) information by external id or facebook places id
        ///     <para>
        ///         Get external id from this function:
        ///         <see cref="ILocationProcessor.SearchLocationAsync(double, double, string)" />
        ///     </para>
        ///     <para>
        ///         Get facebook places id from this function:
        ///         <see cref="ILocationProcessor.SearchPlacesAsync(double, double, string)(double, double, string)" />
        ///     </para>
        /// </summary>
        /// <param name="externalIdOrFacebookPlacesId">
        ///     External id or facebook places id of an location/place
        ///     <para>
        ///         Get external id from this function:
        ///         <see cref="ILocationProcessor.SearchLocationAsync(double, double, string)" />
        ///     </para>
        ///     <para>
        ///         Get facebook places id from this function:
        ///         <see cref="ILocationProcessor.SearchPlacesAsync(double, double, string)(double, double, string)" />
        ///     </para>
        /// </param>
        public async Task <IResult <PlaceShort> > GetLocationInfoAsync(string externalIdOrFacebookPlacesId)
        {
            try
            {
                var instaUri = InstaUriCreator.GetLocationInfoUri(externalIdOrFacebookPlacesId);

                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 <PlaceShort>(response, json));
                }

                var obj = JsonConvert.DeserializeObject <PlaceResponse>(json);

                return(Result.Success(InstaConvertersFabric.Instance.GetPlaceShortConverter(obj.Location).Convert()));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(PlaceShort), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <PlaceShort>(exception));
            }
        }
Example #6
0
        /// <summary>
        ///     Get discover user chaining list
        /// </summary>
        public async Task <IResult <InstaUserChainingList> > GetChainingUsersAsync()
        {
            try
            {
                var instaUri = InstaUriCreator.GetDiscoverChainingUri(user.LoggedInUser.Pk);
                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 <InstaUserChainingList>(response, json));
                }

                var obj = JsonConvert.DeserializeObject <InstaUserChainingContainerResponse>(json);
                return(Result.Success(InstaConvertersFabric.Instance.GetUserChainingListConverter(obj).Convert()));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(InstaUserChainingList), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail <InstaUserChainingList>(exception));
            }
        }
Example #7
0
        /// <summary>
        ///     Get following hashtags information
        /// </summary>
        /// <param name="userId">User identifier (pk)</param>
        /// <returns>
        ///     List of hashtags
        /// </returns>
        public async Task <IResult <HashtagSearch> > GetFollowingHashtagsInfoAsync(long userId)
        {
            InstaUserAuthValidator.Validate(userAuthValidate);
            var tags = new HashtagSearch();

            try
            {
                var userUri  = InstaUriCreator.GetFollowingTagsInfoUri(userId);
                var request  = httpHelper.GetDefaultRequest(HttpMethod.Get, userUri, 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 <HashtagSearch>(response, json));
                }

                var tagsResponse = JsonConvert.DeserializeObject <HashtagSearchResponse>(
                    json,
                    new InstaHashtagSuggestedDataConverter());

                tags = InstaConvertersFabric.Instance.GetHashTagsSearchConverter(tagsResponse).Convert();
                return(Result.Success(tags));
            }
            catch (HttpRequestException httpException)
            {
                logger?.LogError(httpException, "Error");
                return(Result.Fail(httpException, default(HashtagSearch), ResponseType.NetworkProblem));
            }
            catch (Exception exception)
            {
                logger?.LogError(exception, "Error");
                return(Result.Fail(exception, tags));
            }
        }