Exemplo n.º 1
0
        /// <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)));
            }
        }