/// <summary> /// Get media by its id asynchronously /// </summary> /// <param name="mediaId">Maximum count of pages to retrieve</param> /// <returns> /// <see cref="InstaMedia" /> /// </returns> public async Task <IResult <InstaMedia> > GetMediaByIdAsync(string mediaId) { UserAuthValidator.Validate(_userAuthValidate); try { var mediaUri = UriCreator.GetMediaUri(mediaId); var request = HttpHelper.GetDefaultRequest(HttpMethod.Get, mediaUri, _deviceInfo); var response = await _httpRequestProcessor.SendAsync(request); var json = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { return(Result.UnExpectedResponse <InstaMedia>(response, json)); } var mediaResponse = JsonConvert.DeserializeObject <InstaMediaListResponse>(json, new InstaMediaListDataConverter()); if (mediaResponse.Medias?.Count > 1) { var errorMessage = $"Got wrong media count for request with media id={mediaId}"; _logger?.LogInfo(errorMessage); return(Result.Fail <InstaMedia>(errorMessage)); } var converter = ConvertersFabric.Instance.GetSingleMediaConverter(mediaResponse.Medias.FirstOrDefault()); return(Result.Success(converter.Convert())); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail <InstaMedia>(exception)); } }
public async Task <IResult <InstaUser> > GetUserAsync(string username) { try { var userUri = UriCreator.GetUserUri(username); var request = HttpHelper.GetDefaultRequest(HttpMethod.Get, userUri, _deviceInfo); request.Properties.Add(new KeyValuePair <string, object>(InstaApiConstants.HEADER_TIMEZONE, InstaApiConstants.TIMEZONE_OFFSET.ToString())); request.Properties.Add(new KeyValuePair <string, object>(InstaApiConstants.HEADER_COUNT, "1")); request.Properties.Add( new KeyValuePair <string, object>(InstaApiConstants.HEADER_RANK_TOKEN, _user.RankToken)); var response = await _httpRequestProcessor.SendAsync(request); var json = await response.Content.ReadAsStringAsync(); if (response.StatusCode != HttpStatusCode.OK) { return(Result.UnExpectedResponse <InstaUser>(response, json)); } var userInfo = JsonConvert.DeserializeObject <InstaSearchUserResponse>(json); var user = userInfo.Users?.FirstOrDefault(u => u.UserName == username); if (user == null) { var errorMessage = $"Can't find this user: {username}"; _logger?.LogInfo(errorMessage); return(Result.Fail <InstaUser>(errorMessage)); } if (user.Pk < 1) { Result.Fail <InstaUser>("Pk is incorrect"); } var converter = ConvertersFabric.Instance.GetUserConverter(user); return(Result.Success(converter.Convert())); } catch (Exception exception) { _logger?.LogException(exception); return(Result.Fail <InstaUser>(exception.Message)); } }