/// <summary> /// Get self account information like joined date or switched to business account date /// </summary> public async Task <IResult <InstaWebAccountInfo> > GetAccountInfoAsync() { UserAuthValidator.Validate(_userAuthValidate); try { var instaUri = WebUriCreator.GetAccountsDataUri(); var request = _httpHelper.GetWebRequest(HttpMethod.Get, instaUri, _deviceInfo); var response = await _httpRequestProcessor.SendAsync(request); var html = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { return(Result.Fail($"Error! Status code: {response.StatusCode}", default(InstaWebAccountInfo))); } var json = html.GetJson(); if (json.IsEmpty()) { return(Result.Fail($"Json response isn't available.", default(InstaWebAccountInfo))); } var obj = JsonConvert.DeserializeObject <InstaWebContainerResponse>(json); if (obj.Entry?.SettingsPages != null) { var first = obj.Entry.SettingsPages.FirstOrDefault(); if (first != null) { return(Result.Success(ConvertersFabric.Instance.GetWebAccountInfoConverter(first).Convert())); } } return(Result.Fail($"Date joined isn't available.", default(InstaWebAccountInfo))); } catch (HttpRequestException httpException) { _logger?.LogException(httpException); return(Result.Fail(httpException, default(InstaWebAccountInfo), ResponseType.NetworkProblem)); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail(exception, default(InstaWebAccountInfo))); } }
private async Task <IResult <InstaWebData> > GetFormerAsync(InstaWebType type, PaginationParameters paginationParameters) { UserAuthValidator.Validate(_userAuthValidate); var webData = new InstaWebData(); try { if (paginationParameters == null) { paginationParameters = PaginationParameters.MaxPagesToLoad(1); } InstaWebData Convert(InstaWebSettingsPageResponse settingsPageResponse) { return(ConvertersFabric.Instance.GetWebDataConverter(settingsPageResponse).Convert()); } Uri CreateUri(string cursor = null) { switch (type) { case InstaWebType.FormerBioTexts: return(WebUriCreator.GetFormerBiographyTextsUri(cursor)); case InstaWebType.FormerLinksInBio: return(WebUriCreator.GetFormerBiographyLinksUri(cursor)); case InstaWebType.FormerUsernames: return(WebUriCreator.GetFormerUsernamesUri(cursor)); case InstaWebType.FormerFullNames: return(WebUriCreator.GetFormerFullNamesUri(cursor)); case InstaWebType.FormerPhones: return(WebUriCreator.GetFormerPhoneNumbersUri(cursor)); case InstaWebType.FormerEmails: return(WebUriCreator.GetFormerEmailsUri(cursor)); default: return(WebUriCreator.GetFormerBiographyLinksUri(cursor)); } } var request = await GetRequest(CreateUri(paginationParameters?.NextMaxId)); if (!request.Succeeded) { if (request.Value != null) { return(Result.Fail(request.Info, Convert(request.Value))); } else { return(Result.Fail(request.Info, webData)); } } var response = request.Value; paginationParameters.NextMaxId = response.Data.Cursor; while (!string.IsNullOrEmpty(paginationParameters.NextMaxId) && paginationParameters.PagesLoaded < paginationParameters.MaximumPagesToLoad) { var nextRequest = await GetRequest(CreateUri(paginationParameters?.NextMaxId)); if (!nextRequest.Succeeded) { return(Result.Fail(nextRequest.Info, Convert(response))); } var nextResponse = nextRequest.Value; if (nextResponse.Data != null) { response.Data.Data.AddRange(nextResponse.Data.Data); } response.Data.Cursor = paginationParameters.NextMaxId = nextResponse.Data?.Cursor; paginationParameters.PagesLoaded++; } return(Result.Success(Convert(response))); } catch (HttpRequestException httpException) { _logger?.LogException(httpException); return(Result.Fail(httpException, webData, ResponseType.NetworkProblem)); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail(exception, webData)); } }
/// <summary> /// Get self account follow requests /// </summary> /// <param name="paginationParameters">Pagination parameters: next id and max amount of pages to load</param> public async Task <IResult <InstaWebTextData> > GetFollowRequestsAsync(PaginationParameters paginationParameters) { UserAuthValidator.Validate(_userAuthValidate); var textDataList = new InstaWebTextData(); try { if (paginationParameters == null) { paginationParameters = PaginationParameters.MaxPagesToLoad(1); } InstaWebTextData Convert(InstaWebSettingsPageResponse settingsPageResponse) { return(ConvertersFabric.Instance.GetWebTextDataListConverter(settingsPageResponse).Convert()); } Uri CreateUri(string cursor = null) { return(WebUriCreator.GetCurrentFollowRequestsUri(cursor)); } var request = await GetRequest(CreateUri(paginationParameters?.NextMaxId)); if (!request.Succeeded) { if (request.Value != null) { return(Result.Fail(request.Info, Convert(request.Value))); } else { return(Result.Fail(request.Info, textDataList)); } } var response = request.Value; paginationParameters.NextMaxId = response.Data.Cursor; while (!string.IsNullOrEmpty(paginationParameters.NextMaxId) && paginationParameters.PagesLoaded < paginationParameters.MaximumPagesToLoad) { var nextRequest = await GetRequest(CreateUri(paginationParameters?.NextMaxId)); if (!nextRequest.Succeeded) { return(Result.Fail(nextRequest.Info, Convert(response))); } var nextResponse = nextRequest.Value; if (nextResponse.Data != null) { response.Data.Data.AddRange(nextResponse.Data.Data); } response.Data.Cursor = paginationParameters.NextMaxId = nextResponse.Data?.Cursor; paginationParameters.PagesLoaded++; } return(Result.Success(Convert(response))); } catch (HttpRequestException httpException) { _logger?.LogException(httpException); return(Result.Fail(httpException, textDataList, ResponseType.NetworkProblem)); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail(exception, textDataList)); } }