Example #1
0
        /// <summary>
        /// Deserializes the given request's binary payload into a batch payload
        /// </summary>
        /// <param name="request">The request to deserialize</param>
        /// <returns>The deserialized batch request payload</returns>
        public BatchRequestPayload DeserializeBatchRequest(HttpRequestData request)
        {
            var encoding = request.GetEncodingFromHeadersOrDefault();

            MultipartMimeData <MimePartData <byte[]> > split;

            ExceptionUtilities.Assert(TrySplitMimePart(request, encoding, out split), "Failed to split batch response body");

            var batchRequest = new BatchRequestPayload();

            foreach (var subPart in split.ToList())
            {
                MultipartMimeData <MimePartData <byte[]> > splitChangeset;
                if (TrySplitMimePart(subPart, encoding, out splitChangeset))
                {
                    var changeset = new BatchRequestChangeset();
                    changeset.Headers.AddRange(splitChangeset.Headers);

                    foreach (var changesetPart in splitChangeset)
                    {
                        if (changesetPart.Body != null)
                        {
                            if (changesetPart.Body.Length > 0)
                            {
                                changeset.Add(this.BuildRequestFromPart(changesetPart, encoding));
                            }
                        }
                    }

                    batchRequest.Add(changeset);
                }
                else
                {
                    batchRequest.Add(this.BuildRequestFromPart(subPart, encoding));
                }
            }

            return(batchRequest);
        }
        /// <summary>
        /// Deserializes the given request's binary payload into a batch payload
        /// </summary>
        /// <param name="request">The request to deserialize</param>
        /// <returns>The deserialized batch request payload</returns>
        public BatchRequestPayload DeserializeBatchRequest(HttpRequestData request)
        {
            var encoding = request.GetEncodingFromHeadersOrDefault();

            MultipartMimeData<MimePartData<byte[]>> split;
            ExceptionUtilities.Assert(TrySplitMimePart(request, encoding, out split), "Failed to split batch response body");

            var batchRequest = new BatchRequestPayload();

            foreach (var subPart in split.ToList())
            {
                MultipartMimeData<MimePartData<byte[]>> splitChangeset;
                if (TrySplitMimePart(subPart, encoding, out splitChangeset))
                {
                    var changeset = new BatchRequestChangeset();
                    changeset.Headers.AddRange(splitChangeset.Headers);

                    foreach (var changesetPart in splitChangeset)
                    {
                        if (changesetPart.Body != null)
                        {
                            if (changesetPart.Body.Length > 0)
                            {
                                changeset.Add(this.BuildRequestFromPart(changesetPart, encoding));
                            }
                        }
                    }

                    batchRequest.Add(changeset);
                }
                else
                {
                    batchRequest.Add(this.BuildRequestFromPart(subPart, encoding));    
                }
            }

            return batchRequest;
        }