/// <summary> /// Retrieves news data for the specified application. /// </summary> /// <param name="request">A set of parameters for request.</param> /// <param name="token">Propogates notification that operation should be cancelled.</param> /// <returns>News for specified steam application.</returns> public async Task <SteamAppNews> GetAppNewsAsync(GetNewsRequest request, CancellationToken token = default) { var queryParameters = new QueryParametersBuilder(); queryParameters.AppendParameter("format", "json"); queryParameters.AppendParameter("key", _config.ApiKey); queryParameters.AppendParameter("appid", request.AppId.ToString()); if (request.EndDate.HasValue) { queryParameters.AppendParameter( "enddate", request.EndDate.Value.ToUnixTimeSeconds().ToString() ); } if (request.Count.HasValue) { queryParameters.AppendParameter("count", request.Count.Value.ToString()); } using (var response = await GetRetryPolicy().ExecuteAsync( () => _httpClient.GetAsync(_config.SteamPoweredBaseUrl + "/ISteamNews/GetNewsForApp/v0002/" + queryParameters.ToString(), token))) { response.EnsureSuccessStatusCode(); var result = await response.Content.ReadAsStringAsync(); // The actual payload is wrapped, drill down to the third level to get to it. var jsonData = JToken.Parse(result).First.First; return(jsonData.ToObject <SteamAppNews>()); } }
protected override void OnOperationRequest(OperationRequest operationRequest, SendParameters sendParameters) { OperationResponse response; switch ((OperationCode)operationRequest.OperationCode) { default: response = new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.OperationInvalid, DebugMessage = "Unknown operation code" }; break; case OperationCode.GetServerList: { var responseObject = new GetServerListResponse { ServerList = this.application.ServerInfoCollection.GetInfo() }; response = new OperationResponse(operationRequest.OperationCode, responseObject); break; } case OperationCode.GetServerVersion: { var responseObject = new GetServerVersionResponse { serverVersion = application.appVersion.ToString() }; response = new OperationResponse(operationRequest.OperationCode, responseObject); break; } case OperationCode.GetNews: { GetNewsRequest request = new GetNewsRequest(Protocol, operationRequest); if (!request.IsValid) { response = new OperationResponse(operationRequest.OperationCode) { ReturnCode = (short)ReturnCode.InvalidOperationParameter, DebugMessage = "lang" }; } else { Hashtable newsHash = application.news.GetNews(request.lang); GetNewsResponse responseObject = new GetNewsResponse { news = newsHash }; response = new OperationResponse(operationRequest.OperationCode, responseObject); } break; } } if (response != null) { this.SendOperationResponse(response, sendParameters); } }
private void performFetch() { request?.Cancel(); request = new GetNewsRequest(lastCursor); request.Success += response => Schedule(() => onSuccess(response)); api.PerformAsync(request); }
public async Task GetNewsById_NotFound_ReturnsEmpty(Mock <INewsRepository> newsRepository, GetNewsRequest getRequest) { newsRepository.Setup(x => x.GetAsync(It.IsAny <long>())).ReturnsAsync((News)null); var service = new NewsService(newsRepository.Object, _mapper); var result = await service.GetNewsAsync(getRequest); result.Should().BeNull(); newsRepository.Verify(x => x.GetAsync(It.IsAny <long>()), Times.Once); newsRepository.VerifyNoOtherCalls(); }
public async Task <NewsResponse> GetNewsAsync(GetNewsRequest request) { if (request == null) { throw new ArgumentNullException(); } var news = await _newsRepository.GetAsync(request.Id); var response = _mapper.Map <NewsResponse>(news); return(response); }
public override Task <GetNewsResponse> GetNews(GetNewsRequest request, ServerCallContext context) { var basePageFilter = new BasicPageFilter() { PageIndex = request.PageIndex, PageSize = request.PageSize, }; var news = _newsService.GetNews(basePageFilter).Select(n => NewsGrpcConverter.ToMessage(n)).ToList(); var response = new GetNewsResponse(); response.News.AddRange(news); return(Task.FromResult(response)); }
private void getMorePosts() { beginLoading(false); request = new GetNewsRequest(displayedYear, lastCursor); request.Success += response => Schedule(() => { lastCursor = response.Cursor; if (content.Child is ArticleListing listing) { listing.AddPosts(response.NewsPosts, response.Cursor != null); } }); API.PerformAsync(request); }
public async Task GetNewsById_FoundItem_ReturnsTheObject(Mock <INewsRepository> newsRepository, GetNewsRequest getRequest, News news) { newsRepository.Setup(x => x.GetAsync(It.IsAny <long>())).ReturnsAsync(news); var service = new NewsService(newsRepository.Object, _mapper); var actual = await service.GetNewsAsync(getRequest); actual.Category.Should().NotBeNull(); actual.EncodedText.Should().NotBeNullOrEmpty(); actual.Slug.Should().NotBeNullOrEmpty(); actual.Title.Should().NotBeNullOrEmpty(); newsRepository.Verify(x => x.GetAsync(It.IsAny <long>()), Times.Once); newsRepository.VerifyNoOtherCalls(); }
public GetNewsResult GetList([FromBody] GetNewsRequest getRequest) { try { if (getRequest == null) { throw new ArgumentNullException(nameof(getRequest)); } getRequest.ValidateRequest(); return(new GetNewsResult() { Items = NewsManager.GetAll(getRequest.RequestParams) }); } catch (Exception ex) { return(new GetNewsResult(ex)); } }
private void loadListing(int?year = null) { Header.SetFrontPage(); displayedYear = year; lastCursor = null; beginLoading(true); request = new GetNewsRequest(displayedYear); request.Success += response => Schedule(() => { lastCursor = response.Cursor; sidebar.Metadata.Value = response.SidebarMetadata; var listing = new ArticleListing(getMorePosts); listing.AddPosts(response.NewsPosts, response.Cursor != null); LoadDisplay(listing); }); API.PerformAsync(request); }
public async Task <List <NewsModel> > GetNewsAsync(BasicPageFilter filter) { var channel = new Channel(channelTarget, ChannelCredentials.Insecure); try { var client = new NewsGrpcService.NewsGrpcServiceClient(channel); var request = new GetNewsRequest() { PageIndex = filter.PageIndex, PageSize = filter.PageSize }; var response = await client.GetNewsAsync(request); return(response.News.Select(n => NewsGrpcConverter.ToMessage(n)).ToList()); } finally { await channel.ShutdownAsync(); } }
public async Task <IActionResult> Get(GetNewsRequest request) { var result = await _newsService.GetNewsAsync(request); return(Ok(result)); }