//TODO: add unit tests
        public OperationResult <ListItemDataWrapper> GetListItems(DataSourceInfo dataSourceInfo)
        {
            var restQuery = new RestQueryBuilder().Build(dataSourceInfo.RestQueryData);

            var requestUri =
                $"{dataSourceInfo.SiteUri}{restQuery}";

            var getOperationResult = this._jsonWebClient.Get(requestUri, dataSourceInfo.NetworkCredentials,
                                                             dataSourceInfo.RestQueryData.MaxResults);

            if (!getOperationResult.Success)
            {
                return(new OperationResult <ListItemDataWrapper>
                {
                    Success = false,
                    ErrorMessage = getOperationResult.ErrorMessage
                });
            }

            var allItems = getOperationResult.Result.Select(x => new ListItemDataWrapper(x));

            return(new OperationResult <ListItemDataWrapper> {
                Success = true, Result = allItems
            });
        }
예제 #2
0
        public OperationResult <T> GetListItems <T>(DataSourceInfo dataSourceInfo, IListItemParser <T> listItemParser)
        {
            if (dataSourceInfo == null)
            {
                throw new ArgumentNullException(nameof(dataSourceInfo));
            }
            if (listItemParser == null)
            {
                throw new ArgumentNullException(nameof(listItemParser));
            }

            var operationResult = this._sharePointConnector.GetListItems(dataSourceInfo);

            if (!operationResult.Success)
            {
                return(new OperationResult <T> {
                    Success = false, ErrorMessage = operationResult.ErrorMessage
                });
            }

            var parsedListItems = operationResult.Result.Select(listItemParser.Parse);

            return(new OperationResult <T> {
                Success = true, Result = parsedListItems
            });
        }