Esempio n. 1
0
        public async Task <IEnumerable <IDictionary <string, object> > > FindEntriesAsync(string commandText, ODataFeedAnnotations annotations, CancellationToken cancellationToken)
        {
            if (IsBatchResponse)
            {
                annotations.CopyFrom(_batchResponse.Annotations);
                return(_batchResponse.AsEntries());
            }

            await _session.ResolveAdapterAsync(cancellationToken);

            if (cancellationToken.IsCancellationRequested)
            {
                cancellationToken.ThrowIfCancellationRequested();
            }

            var request = await _session.Adapter.GetRequestWriter(_lazyBatchWriter)
                          .CreateGetRequestAsync(commandText, false);

            return(await ExecuteRequestWithResultAsync(request, cancellationToken, x =>
            {
                annotations.CopyFrom(x.Annotations);
                return x.Entries;
            },
                                                       () => new[] { (IDictionary <string, object>)null }));
        }
Esempio n. 2
0
        public async Task <IEnumerable <T> > ReadAsCollectionAsync(ODataFeedAnnotations annotations, CancellationToken cancellationToken)
        {
            if (_responseMessage.IsSuccessStatusCode && _responseMessage.StatusCode != HttpStatusCode.NoContent &&
                (_request.Method == RestVerbs.Get || _request.ResultRequired))
            {
                var responseReader = _session.Adapter.GetResponseReader();
                var response       = await responseReader.GetResponseAsync(_responseMessage).ConfigureAwait(false);

                if (cancellationToken.IsCancellationRequested)
                {
                    cancellationToken.ThrowIfCancellationRequested();
                }

                if (annotations != null && response.Feed != null)
                {
                    annotations.CopyFrom(response.Feed.Annotations);
                }
                var result = response.AsEntries(_session.Settings.IncludeAnnotationsInResults);
                return(result.Select(x => x.ToObject <T>(TypeCache)));
            }
            else
            {
                return(Array.Empty <T>());
            }
        }
Esempio n. 3
0
        private async Task <IEnumerable <IDictionary <string, object> > > ExecuteFunctionAsync(ResolvedCommand command, ODataFeedAnnotations annotations, CancellationToken cancellationToken)
        {
            var request = await _session.Adapter.GetRequestWriter(_lazyBatchWriter)
                          .CreateFunctionRequestAsync(command.Format(), command.Details.FunctionName, command.Details.Headers).ConfigureAwait(false);

            return(await ExecuteRequestWithResultAsync(request, cancellationToken,
                                                       x =>
            {
                var result = x.AsEntries(_session.Settings.IncludeAnnotationsInResults);
                if (annotations != null && x.Feed != null)
                {
                    annotations.CopyFrom(x.Feed.Annotations);
                }
                return result;
            },
                                                       () => Array.Empty <IDictionary <string, object> >()).ConfigureAwait(false));
        }
Esempio n. 4
0
        internal async Task <IEnumerable <IDictionary <string, object> > > FindEntriesAsync(FluentCommand command, ODataFeedAnnotations annotations, CancellationToken cancellationToken)
        {
            if (IsBatchResponse)
            {
                annotations.CopyFrom(_batchResponse.Annotations);
                return(_batchResponse.AsEntries());
            }

            await _session.ResolveAdapterAsync(cancellationToken);

            if (cancellationToken.IsCancellationRequested)
            {
                cancellationToken.ThrowIfCancellationRequested();
            }

            var commandText = await command.GetCommandTextAsync(cancellationToken);

            if (cancellationToken.IsCancellationRequested)
            {
                cancellationToken.ThrowIfCancellationRequested();
            }

            return(await FindEntriesAsync(commandText, annotations, cancellationToken));
        }