public async Task <IResult <InstaUserList> > GetUserFollowersAsync(string username, int maxPages = 0) { ValidateUser(); ValidateLoggedIn(); try { if (maxPages == 0) { maxPages = int.MaxValue; } var user = await GetUserAsync(username); var userFeedUri = UriCreator.GetUserFollowersUri(user.Value.Pk, _user.RankToken); var request = HttpHelper.GetDefaultRequest(HttpMethod.Get, userFeedUri, _deviceInfo); var response = await _httpClient.SendAsync(request); var json = await response.Content.ReadAsStringAsync(); var followers = new InstaUserList(); if (response.StatusCode != HttpStatusCode.OK) { return(Result.Fail("", (InstaUserList)null)); } var followersResponse = JsonConvert.DeserializeObject <InstaFollowersResponse>(json); if (!followersResponse.IsOK()) { Result.Fail(GetBadStatusFromJsonString(json).Message, (InstaUserList)null); } followers.AddRange( followersResponse.Items.Select(ConvertersFabric.GetUserConverter) .Select(converter => converter.Convert())); if (!followersResponse.IsBigList) { return(Result.Success(followers)); } var pages = 1; while (!string.IsNullOrEmpty(followersResponse.NextMaxId) && pages < maxPages) { var nextFollowers = Result.Success(followersResponse); nextFollowers = await GetUserFollowersWithMaxIdAsync(username, nextFollowers.Value.NextMaxId); if (!nextFollowers.Succeeded) { Result.Success($"Not all pages was downloaded: {nextFollowers.Info.Message}", followers); } followers.AddRange( nextFollowers.Value.Items.Select(ConvertersFabric.GetUserConverter) .Select(converter => converter.Convert())); pages++; } return(Result.Success(followers)); } catch (Exception exception) { return(Result.Fail(exception.Message, (InstaUserList)null)); } }
/// <summary> /// Method to save account details of authorize user in instagram /// </summary> /// <param name="tokens"></param> /// <param name="userId"></param> /// <param name="Email"></param> /// <returns></returns> public string SaveAccountDeatils(OAuthTokens tokens, string userId, string Email) { try { AccessDetails accessToken = new AccessDetails() { AccessToken = tokens.access_token }; var returnMessage = string.Empty; InstaUserList profile = GetUserprofile(accessToken); var checkAccountIsAvail = _socialMedia.Get().Include(x => x.AccessDetails).Where(x => x.SMId == profile.id.ToString() && x.IsDeleted == false).FirstOrDefault(); if (checkAccountIsAvail == null) { SocialMedia socialDetails = new SocialMedia() { UserId = userId, Provider = SocialMediaProviders.Instagram.ToString(), AccessDetails = new AccessDetails { AccessToken = tokens.access_token }, ProfilepicUrl = profile.profile_picture, SMId = profile.id.ToString(), Status = true, UserName = profile.username, Followers = profile.counts.followed_by, AccSettings = new AccSettings() }; socialDetails.AccSettings.UserManagement.Add(new UserManagement { Email = Email, userId = userId, Role = "Owner" }); _socialMedia.Add(socialDetails); returnMessage = "Account added successfully."; } else if (checkAccountIsAvail.UserId == userId) { checkAccountIsAvail.AccessDetails.AccessToken = tokens.access_token; checkAccountIsAvail.IsInvalid = false; checkAccountIsAvail.Status = true; returnMessage = "Already added."; } else { checkAccountIsAvail.AccessDetails.AccessToken = tokens.access_token; checkAccountIsAvail.IsInvalid = false; checkAccountIsAvail.Status = true; returnMessage = "Cannot add this account, as already added by other user."; } _unitOfWork.Commit(); return(returnMessage); } catch (Exception) { return("Something went wrong."); } }
public bool SaveAccountDeatils(OAuthTokens tokens, string userId, string Email) { try { AccessDetails accessToken = new AccessDetails() { AccessToken = tokens.access_token }; //InstaUser profile = GetUserprofile(accessToken); InstaUserList profile = GetUserprofile(accessToken); SocialMedia socialDetails = new SocialMedia() { UserId = userId, Provider = SocialMediaProviders.Instagram.ToString(), AccessDetails = new AccessDetails { AccessToken = tokens.access_token }, ProfilepicUrl = profile.profile_picture, SMId = profile.id.ToString(), Status = true, UserName = profile.username, Followers = profile.counts.followed_by, AccSettings = new AccSettings() }; socialDetails.AccSettings.UserManagement.Add(new UserManagement { Email = Email, userId = userId, Role = "Owner" }); _socialMedia.Add(socialDetails); _unitOfWork.Commit(); return(true); } catch (Exception) { return(false); } }