public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) { var readerSettings = new ODataMessageReaderSettings(); // TODO ODataLib7 if (_session.Settings.IgnoreUnmappedProperties) { readerSettings.Validations &= ~ValidationKinds.ThrowOnUndeclaredPropertyForNonOpenType; } readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; readerSettings.ShouldIncludeAnnotation = x => _session.Settings.IncludeAnnotationsInResults; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(responseMessage.StatusCode)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { return(ODataResponse.FromValueStream(await responseMessage.GetStreamAsync().ConfigureAwait(false), responseMessage is ODataBatchOperationResponseMessage)); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader()).ConfigureAwait(false)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.ResourceSet)) { return(ReadResponse(messageReader.CreateODataResourceSetReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Resource)) { return(ODataResponse.FromValueStream(await responseMessage.GetStreamAsync().ConfigureAwait(false), responseMessage is ODataBatchOperationResponseMessage)); } else { var property = messageReader.ReadProperty(); return(ODataResponse.FromProperty(property.Name, GetPropertyValue(property.Value))); } } else { return(ReadResponse(messageReader.CreateODataResourceReader())); } } }
public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage, bool includeResourceTypeInEntryProperties = false) #endif { var readerSettings = new ODataMessageReaderSettings(); readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(responseMessage.StatusCode)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { #if SILVERLIGHT var text = Utils.StreamToString(responseMessage.GetStream()); #else var text = Client.Utils.StreamToString(await responseMessage.GetStreamAsync()); #endif return(ODataResponse.FromFeed(new[] { new Dictionary <string, object>() { { FluentCommand.ResultLiteral, text } } })); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader(), includeResourceTypeInEntryProperties)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return(ReadResponse(messageReader.CreateODataFeedReader(), includeResourceTypeInEntryProperties)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader(), includeResourceTypeInEntryProperties)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); return(ODataResponse.FromFeed(new[] { new Dictionary <string, object>() { { property.Name ?? FluentCommand.ResultLiteral, GetPropertyValue(property.Value) } } })); } else { return(ReadResponse(messageReader.CreateODataEntryReader(), includeResourceTypeInEntryProperties)); } } }
public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) { if (responseMessage.StatusCode == (int)HttpStatusCode.NoContent) { return(ODataResponse.FromStatusCode(TypeCache, responseMessage.StatusCode, responseMessage.Headers)); } var readerSettings = _session.ToReaderSettings(); using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind().ToList(); if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(TypeCache, responseMessage.StatusCode, responseMessage.Headers)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { return(ODataResponse.FromValueStream(TypeCache, await responseMessage.GetStreamAsync().ConfigureAwait(false), responseMessage is ODataBatchOperationResponseMessage)); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader()).ConfigureAwait(false)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.ResourceSet)) { return(ReadResponse(messageReader.CreateODataResourceSetReader(), responseMessage)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Resource)) { return(ReadResponse(messageReader.CreateODataResourceReader(), responseMessage)); } else { var property = messageReader.ReadProperty(); return(ODataResponse.FromProperty(TypeCache, property.Name, GetPropertyValue(property.Value))); } } else { return(ReadResponse(messageReader.CreateODataResourceReader(), responseMessage)); } } }
public async Task<ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage, bool includeResourceTypeInEntryProperties = false) { var readerSettings = new ODataMessageReaderSettings(); readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return ODataResponse.FromStatusCode(responseMessage.StatusCode); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { var text = Utils.StreamToString(await responseMessage.GetStreamAsync()); return ODataResponse.FromFeed(new[] { new Dictionary<string, object>() { { FluentCommand.ResultLiteral, text } } }); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return await ReadResponse(messageReader.CreateODataBatchReader(), includeResourceTypeInEntryProperties); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return ReadResponse(messageReader.CreateODataFeedReader(), includeResourceTypeInEntryProperties); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return ReadResponse(messageReader.CreateODataCollectionReader(), includeResourceTypeInEntryProperties); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); return ODataResponse.FromFeed(new[] { new Dictionary<string, object>() { { property.Name ?? FluentCommand.ResultLiteral, GetPropertyValue(property.Value) } } }); } else { return ReadResponse(messageReader.CreateODataEntryReader(), includeResourceTypeInEntryProperties); } } }
public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) { var readerSettings = new ODataMessageReaderSettings(); readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; readerSettings.ShouldIncludeAnnotation = x => _session.Settings.IncludeAnnotationsInResults; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(responseMessage.StatusCode)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { return(ODataResponse.FromValueStream(await responseMessage.GetStreamAsync(), responseMessage is ODataBatchOperationResponseMessage)); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return(ReadResponse(messageReader.CreateODataFeedReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); return(ODataResponse.FromProperty(property.Name, GetPropertyValue(property.Value))); } else { return(ReadResponse(messageReader.CreateODataEntryReader())); } } }
/// <summary> /// Asynchronously get the stream backing this message. /// </summary> /// <returns>The stream for this message.</returns> internal override Task <Stream> GetStreamAsync() { DebugUtils.CheckNoExternalCallers(); IODataResponseMessageAsync asyncResponseMessage = this.responseMessage as IODataResponseMessageAsync; if (asyncResponseMessage == null) { throw new ODataException(Strings.ODataResponseMessage_AsyncNotAvailable); } Task <Stream> task = asyncResponseMessage.GetStreamAsync(); if (task == null) { throw new ODataException(Strings.ODataResponseMessage_StreamTaskIsNull); } return(task.ContinueWith((streamTask) => { Stream messageStream = streamTask.Result; ValidateMessageStream(messageStream); return messageStream; })); }
public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) #endif { var readerSettings = new ODataMessageReaderSettings(); readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind != ODataPayloadKind.Property)) { _hasResponse = true; } if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(responseMessage.StatusCode)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { #if SILVERLIGHT var stream = responseMessage.GetStream(); #else var stream = await responseMessage.GetStreamAsync(); #endif return(ODataResponse.FromValueStream(stream, responseMessage is ODataBatchOperationResponseMessage)); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return(ReadResponse(messageReader.CreateODataFeedReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); if (property.Value != null && (property.Value.GetType() != typeof(string) || !string.IsNullOrEmpty(property.Value.ToString()))) { _hasResponse = true; } if (_hasResponse) { return(ODataResponse.FromProperty(property.Name, GetPropertyValue(property.Value))); } else { return(ODataResponse.EmptyFeed); } } else { return(ReadResponse(messageReader.CreateODataEntryReader())); } } }
public async Task<ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) { var readerSettings = new ODataMessageReaderSettings(); readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return ODataResponse.FromStatusCode(responseMessage.StatusCode); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { return ODataResponse.FromValueStream(await responseMessage.GetStreamAsync()); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return await ReadResponse(messageReader.CreateODataBatchReader()); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return ReadResponse(messageReader.CreateODataFeedReader()); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return ReadResponse(messageReader.CreateODataCollectionReader()); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); return ODataResponse.FromProperty(property.Name, GetPropertyValue(property.Value)); } else { return ReadResponse(messageReader.CreateODataEntryReader()); } } }
public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) { if (responseMessage.StatusCode == (int)HttpStatusCode.NoContent) { return(ODataResponse.FromStatusCode(TypeCache, responseMessage.StatusCode, responseMessage.Headers)); } var readerSettings = _session.ToReaderSettings(); using var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model); var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind != ODataPayloadKind.Property)) { _hasResponse = true; } if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(TypeCache, responseMessage.StatusCode, responseMessage.Headers)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { var stream = await responseMessage.GetStreamAsync().ConfigureAwait(false); return(ODataResponse.FromValueStream(TypeCache, stream, responseMessage is ODataBatchOperationResponseMessage)); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader()).ConfigureAwait(false)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return(ReadResponse(messageReader.CreateODataFeedReader(), responseMessage)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); if (property.Value != null && (property.Value.GetType() != typeof(string) || !string.IsNullOrEmpty(property.Value.ToString()))) { _hasResponse = true; } if (_hasResponse) { return(ODataResponse.FromProperty(TypeCache, property.Name, GetPropertyValue(property.Value))); } else { return(ODataResponse.EmptyFeeds(TypeCache)); } } else { return(ReadResponse(messageReader.CreateODataEntryReader(), responseMessage)); } }
public async Task<ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) #endif { var readerSettings = new ODataMessageReaderSettings(); readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind != ODataPayloadKind.Property)) _hasResponse = true; if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return ODataResponse.FromStatusCode(responseMessage.StatusCode); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { #if SILVERLIGHT var stream = responseMessage.GetStream(); #else var stream = await responseMessage.GetStreamAsync(); #endif return ODataResponse.FromValueStream(stream); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return await ReadResponse(messageReader.CreateODataBatchReader()); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return ReadResponse(messageReader.CreateODataFeedReader()); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return ReadResponse(messageReader.CreateODataCollectionReader()); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); if (property.Value != null && (property.Value.GetType() != typeof(string) || !string.IsNullOrEmpty(property.Value.ToString()))) _hasResponse = true; if (_hasResponse) { return ODataResponse.FromProperty(property.Name, GetPropertyValue(property.Value)); } else { return ODataResponse.EmptyFeed; } } else { return ReadResponse(messageReader.CreateODataEntryReader()); } } }
public async Task <ODataResponse> GetResponseAsync(IODataResponseMessageAsync responseMessage) { var readerSettings = new ODataMessageReaderSettings(); if (_session.Settings.IgnoreUnmappedProperties) { readerSettings.UndeclaredPropertyBehaviorKinds = ODataUndeclaredPropertyBehaviorKinds.IgnoreUndeclaredValueProperty; } readerSettings.MessageQuotas.MaxReceivedMessageSize = Int32.MaxValue; readerSettings.ShouldIncludeAnnotation = x => _session.Settings.IncludeAnnotationsInResults; using (var messageReader = new ODataMessageReader(responseMessage, readerSettings, _model)) { var payloadKind = messageReader.DetectPayloadKind(); if (payloadKind.Any(x => x.PayloadKind != ODataPayloadKind.Property)) { _hasResponse = true; } if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Error)) { return(ODataResponse.FromStatusCode(responseMessage.StatusCode)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Value)) { if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { throw new NotImplementedException(); } else { var stream = await responseMessage.GetStreamAsync().ConfigureAwait(false); return(ODataResponse.FromValueStream(stream, responseMessage is ODataBatchOperationResponseMessage)); } } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Batch)) { return(await ReadResponse(messageReader.CreateODataBatchReader()).ConfigureAwait(false)); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Feed)) { return(ReadResponse(messageReader.CreateODataFeedReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Collection)) { return(ReadResponse(messageReader.CreateODataCollectionReader())); } else if (payloadKind.Any(x => x.PayloadKind == ODataPayloadKind.Property)) { var property = messageReader.ReadProperty(); if (property.Value != null && (property.Value.GetType() != typeof(string) || !string.IsNullOrEmpty(property.Value.ToString()))) { _hasResponse = true; } if (_hasResponse) { return(ODataResponse.FromProperty(property.Name, GetPropertyValue(property.Value))); } else { return(ODataResponse.EmptyFeed); } } else { return(ReadResponse(messageReader.CreateODataEntryReader())); } } }