示例#1
0
        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.");
     }
 }
示例#3
0
 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);
     }
 }