/**
* Copyright 2012 Voxbone SA/NV
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.voxbone.kelpie;
import java.io.UnsupportedEncodingException;
import javax.sip.address.SipURI;
import javax.sip.header.CallIdHeader;
import javax.sip.header.FromHeader;
import javax.sip.header.SubjectHeader;
import javax.sip.message.Request;
import org.jabberstudio.jso.Packet;
import org.jabberstudio.jso.StreamElement;
/**
* Represents an Instant Message, able to be built from either a SIP or XMPP message
*
*/
public class MessageMessage
{
public String body;
public String subject;
public String thread;
public String to;
public String from;
public MessageMessage(Packet p)
{
StreamElement firstElement = p.getFirstElement("body");
if (firstElement != null)
{
body = firstElement.normalizeText();
}
to = p.getTo().getNode();
from = UriMappings.toSipId(p.getFrom());
if (p.getFirstElement("thread") != null)
{
thread = p.getFirstElement("thread").normalizeText();
}
else
{
thread = null;
}
if (p.getFirstElement("subject") != null)
{
subject = p.getFirstElement("subject").normalizeText();
}
else
{
subject = null;
}
}
public MessageMessage(Request request)
{
to = ((SipURI) request.getRequestURI()).getUser();
FromHeader fh = (FromHeader) request.getHeader(FromHeader.NAME);
from = ((SipURI) fh.getAddress().getURI()).getUser();
thread = ((CallIdHeader) request.getHeader(CallIdHeader.NAME)).getCallId();
if (request.getHeader(SubjectHeader.NAME) != null)
{
subject = ((SubjectHeader) request.getHeader(SubjectHeader.NAME)).getSubject();
}
else
{
subject = null;
}
byte [] bMsg = request.getRawContent();
try
{
body = new String(bMsg, 0, bMsg.length, "UTF8");
}
catch (UnsupportedEncodingException e)
{
// What can't be represented in UTF8? :-)
}
}
}