Example #1
0
        public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType)
        {
            VerifyOperationContext();

            if (contentType.ToLower().StartsWith("multipart/related"))
            {
                byte[] ContentBytes = new byte[stream.Length];
                stream.Read(ContentBytes, 0, ContentBytes.Length);
                MimeContent Content = _MimeParser.DeserializeMimeContent(contentType, ContentBytes);

                if (Content.Parts.Count >= 2)
                {
                    MemoryStream ms  = new MemoryStream(Content.Parts[0].Content);
                    Message      Msg = ReadMessage(ms, int.MaxValue, Content.Parts[0].ContentType);
                    Msg.Properties.Add(SwaEncoderConstants.AttachmentProperty, Content.Parts[1].Content);
                    return(Msg);
                }
                else
                {
                    throw new ApplicationException("Invalid mime message sent! Soap with attachments makes sense, only, with at least 2 mime message content parts!");
                }
            }
            else if (contentType.ToLower().StartsWith("text/xml"))
            {
                XmlReader Reader = XmlReader.Create(stream);
                return(Message.CreateMessage(Reader, maxSizeOfHeaders, MessageVersion));
            }
            else
            {
                throw new ApplicationException(
                          string.Format(
                              "Invalid content type for reading message: {0}! Supported content types are multipart/related and text/xml!",
                              contentType));
            }
        }
Example #2
0
        public override Message ReadMessage(System.IO.Stream stream, int maxSizeOfHeaders, string contentType)
        {
            try
            {
                VerifyOperationContext();

                if (contentType.ToLower().StartsWith("multipart/related"))
                {
                    byte[] ContentBytes = new byte[stream.Length];
                    stream.Read(ContentBytes, 0, ContentBytes.Length);
                    MimeContent Content = _MimeParser.DeserializeMimeContent(contentType, ContentBytes);

                    if (Content.Parts.Count >= 2)
                    {
                        MemoryStream ms  = new MemoryStream(Content.Parts[0].Content);
                        Message      Msg = ReadMessage(ms, int.MaxValue, Content.Parts[0].ContentType);
                        //Msg.Properties.Add(SwaEncoderConstants.AttachmentProperty, Content.Parts[1].Content);

                        List <SwaAttachment> alist = new List <SwaAttachment>();
                        for (int i = 1; i < Content.Parts.Count; i++)
                        {
                            MimePart      part        = Content.Parts[i];
                            SwaAttachment attachement = new SwaAttachment();
                            attachement.ContentBinary = part.Content;
                            attachement.ContentType   = part.ContentType;
                            attachement.ContentId     = part.ContentId;
                            alist.Add(attachement);
                        }
                        Msg.Properties.Add(SwaEncoderConstants.AttachmentProperty, alist);

                        return(Msg);
                    }
                    else
                    {
                        throw new ApplicationException("Invalid mime message sent! Soap with attachments makes sense, only, with at least 2 mime message content parts!");
                    }
                }
                else if (contentType.ToLower().StartsWith("text/xml"))
                {
                    XmlReader Reader = XmlReader.Create(stream);
                    return(Message.CreateMessage(Reader, maxSizeOfHeaders, MessageVersion));
                }
                else
                {
                    throw new ApplicationException(
                              string.Format(
                                  "Invalid content type for reading message: {0}! Supported content types are multipart/related and text/xml!",
                                  contentType));
                }
            }
            catch (Exception e)
            {
                SwaLogMgt.SetLog(this, e);
                //Console.WriteLine(e.ToString());
                return(null);
            }
        }