Ejemplo n.º 1
0
        /// <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>());
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        private void performFetch()
        {
            request?.Cancel();

            request          = new GetNewsRequest(lastCursor);
            request.Success += response => Schedule(() => onSuccess(response));
            api.PerformAsync(request);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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();
        }
Ejemplo n.º 9
0
 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));
     }
 }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
        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();
            }
        }
Ejemplo n.º 12
0
        public async Task <IActionResult> Get(GetNewsRequest request)
        {
            var result = await _newsService.GetNewsAsync(request);

            return(Ok(result));
        }