private static async Task <InstaUserShortList> GetUnfollowers(IInstaApi api, string username) { var followersListTask = GetFollowersList(api, username); var followingListTask = GetFollowingList(api, username); await Task.WhenAll(followersListTask, followingListTask); var followersList = await followersListTask; var followingList = await followingListTask; if (followersList.Count == 0 && followingList.Count == 0) { throw new Exception("Please check your username!"); } InstaUserShortList unfollowers = new InstaUserShortList(); foreach (var user in followingList) { if (followersList.Where(x => x.UserName == user.UserName).FirstOrDefault() == null) { unfollowers.Add(user); } } return(unfollowers); }
public async Task <IResult <InstaUserShortList> > SearchUsersAsync(string searchPattern) { try { var userUri = UriCreator.GetUserUri(searchPattern); var request = HttpHelper.GetDefaultRequest(HttpMethod.Get, userUri, _deviceInfo); var response = await _httpRequestProcessor.SendAsync(request); var json = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { return(Result.UnExpectedResponse <InstaUserShortList>(response, json)); } var userInfo = JsonConvert.DeserializeObject <InstaUserListShortResponse>(json); var userList = new InstaUserShortList(); foreach (var userInfoItem in userInfo.Items) { userList.Add(ConvertersFabric.Instance.GetUserShortConverter(userInfoItem).Convert()); } return(Result.Success(userList)); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail <InstaUserShortList>(exception.Message)); } }
static public async void AllFollower() { PaginationParameters P = PaginationParameters.Empty; result = await UserWorkation.InstaApi.UserProcessor.GetUserFollowersAsync(UserWorkation.User, P); if (result.Succeeded) { Followers = result.Value; } AllFollowers = result.Succeeded; }
/// <summary> /// Get followers list by username asynchronously /// </summary> /// <param name="username">Username</param> /// <param name="paginationParameters">Pagination parameters: next id and max amount of pages to load</param> /// <param name="searchQuery">Search string to locate specific followers</param> /// <returns> /// <see cref="InstaUserShortList" /> /// </returns> public async Task <IResult <InstaUserShortList> > GetUserFollowersAsync(string username, PaginationParameters paginationParameters, string searchQuery) { UserAuthValidator.Validate(_userAuthValidate); var followers = new InstaUserShortList(); try { var user = await GetUserAsync(username); var userFollowersUri = UriCreator.GetUserFollowersUri(user.Value.Pk, _user.RankToken, searchQuery, paginationParameters.NextId); var followersResponse = await GetUserListByUriAsync(userFollowersUri); if (!followersResponse.Succeeded) { return(Result.Fail(followersResponse.Info, (InstaUserShortList)null)); } followers.AddRange( followersResponse.Value.Items?.Select(ConvertersFabric.Instance.GetUserShortConverter) .Select(converter => converter.Convert())); followers.NextId = followersResponse.Value.NextMaxId; var pagesLoaded = 1; while (!string.IsNullOrEmpty(followersResponse.Value.NextMaxId) && pagesLoaded < paginationParameters.MaximumPagesToLoad) { var nextFollowersUri = UriCreator.GetUserFollowersUri(user.Value.Pk, _user.RankToken, searchQuery, followersResponse.Value.NextMaxId); followersResponse = await GetUserListByUriAsync(nextFollowersUri); if (!followersResponse.Succeeded) { return(Result.Fail(followersResponse.Info, followers)); } followers.AddRange( followersResponse.Value.Items?.Select(ConvertersFabric.Instance.GetUserShortConverter) .Select(converter => converter.Convert())); pagesLoaded++; followers.NextId = followersResponse.Value.NextMaxId; } return(Result.Success(followers)); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail(exception, followers)); } }
private void InitData(InstaUserShortList followers, InstaUserShortList following) { foreach (var follower in followers) { AddData(follower, true); } foreach (var followed in following) { AddData(followed, false); } OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); }
public async Task <IResult <InstaUserShortList> > GetUserFollowingAsync(string username, PaginationParameters paginationParameters) { var following = new InstaUserShortList(); try { var user = await GetUserAsync(username); var uri = UriCreator.GetUserFollowingUri(user.Value.Pk, _user.RankToken, paginationParameters.NextId); var userListResponse = await GetUserListByUriAsync(uri); if (!userListResponse.Succeeded) { Result.Fail(userListResponse.Info, following); } following.AddRange( userListResponse.Value.Items.Select(ConvertersFabric.Instance.GetUserShortConverter) .Select(converter => converter.Convert())); following.NextId = userListResponse.Value.NextMaxId; var pages = 1; while (!string.IsNullOrEmpty(following.NextId) && pages < paginationParameters.MaximumPagesToLoad) { var nextUri = UriCreator.GetUserFollowingUri(user.Value.Pk, _user.RankToken, userListResponse.Value.NextMaxId); userListResponse = await GetUserListByUriAsync(nextUri); if (!userListResponse.Succeeded) { return(Result.Success($"Not all pages were downloaded: {userListResponse.Info.Message}", following)); } following.AddRange( userListResponse.Value.Items.Select(ConvertersFabric.Instance.GetUserShortConverter) .Select(converter => converter.Convert())); pages++; following.NextId = userListResponse.Value.NextMaxId; } return(Result.Success(following)); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail(exception, following)); } }
public static async Task <IDataResult <InstaUserShortList> > GetUnfollowers(string username, IConfiguration config) { try { GetUser(config); var api = await Login(); if (api != null) { InstaUserShortList result = await GetUnfollowers(api, username); return(new SuccessDataResult <InstaUserShortList>(result, "Process Succeeded.")); } else { return(new ErrorDataResult <InstaUserShortList>(message: "An Error Occured: Cannot Connect to Instagram API. Login Information May Not Be Correct!")); } } catch (Exception ex) { return(new ErrorDataResult <InstaUserShortList>(message: "An Error Occured: " + ex.Message)); } }