From 53b0edc97ac5e5e542a620723abc8169f4b7edd7 Mon Sep 17 00:00:00 2001 From: Damian Minkov Date: Thu, 10 Jul 2008 15:44:40 +0000 Subject: [PATCH] Set proper content type on received messages --- ...rationSetBasicInstantMessagingSipImpl.java | 36 ++++++++++++++++--- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicInstantMessagingSipImpl.java b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicInstantMessagingSipImpl.java index 13398ab4a..5479e9deb 100644 --- a/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicInstantMessagingSipImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/sip/OperationSetBasicInstantMessagingSipImpl.java @@ -31,6 +31,11 @@ public class OperationSetBasicInstantMessagingSipImpl { private static final Logger logger = Logger.getLogger(OperationSetBasicInstantMessagingSipImpl.class); + + /** + * HTML content type + */ + private static final String CONTENT_TYPE_HTML = "text/html"; /** * A list of listeners registered for message events. @@ -223,7 +228,8 @@ public boolean isOfflineMessagingSupported() */ public boolean isContentTypeSupported(String contentType) { - if(contentType.equals(DEFAULT_MIME_TYPE)) + if(contentType.equals(DEFAULT_MIME_TYPE) || + contentType.equals(CONTENT_TYPE_HTML)) return true; else return false; @@ -841,10 +847,10 @@ public void processRequest(RequestEvent requestEvent) // get the content String content = null; - + Request req = requestEvent.getRequest(); try { - Request req = requestEvent.getRequest(); + content = new String(req.getRawContent(), getCharset(req)); } catch (UnsupportedEncodingException ex) @@ -865,7 +871,29 @@ public void processRequest(RequestEvent requestEvent) Contact from = opSetPersPresence.resolveContactID( fromHeader.getAddress().getURI().toString()); - Message newMessage = createMessage(content); + + ContentTypeHeader ctheader = + (ContentTypeHeader)req.getHeader(ContentTypeHeader.NAME); + + String ctype = null; + String cencoding = null; + + if(ctheader == null) + { + ctype = DEFAULT_MIME_TYPE; + } + else + { + ctype = ctheader.getContentType() + "/" + + ctheader.getContentSubType(); + cencoding = ctheader.getParameter("charset"); + } + + if(cencoding == null) + cencoding = DEFAULT_MIME_ENCODING; + + Message newMessage = + createMessage(content.getBytes(), ctype, cencoding, null); if (from == null) { logger.debug("received a message from an unknown contact: "