protected void SendMessageWithMedia(FMessage message)
{
ProtocolTreeNode node;
if (FMessage.Type.System == message.media_wa_type)
{
throw new SystemException("Cannot send system message over the network");
}
List <KeyValue> list = new List <KeyValue>(new KeyValue[] { new KeyValue("xmlns", "urn:xmpp:whatsapp:mms"), new KeyValue("type", FMessage.GetMessage_WA_Type_StrValue(message.media_wa_type)) });
if (FMessage.Type.Location == message.media_wa_type)
{
list.AddRange(new KeyValue[] { new KeyValue("latitude", message.latitude.ToString(CultureInfo.InvariantCulture)), new KeyValue("longitude", message.longitude.ToString(CultureInfo.InvariantCulture)) });
if (message.location_details != null)
{
list.Add(new KeyValue("name", message.location_details));
}
if (message.location_url != null)
{
list.Add(new KeyValue("url", message.location_url));
}
}
else if (((FMessage.Type.Contact != message.media_wa_type) && (message.media_name != null)) && ((message.media_url != null) && (message.media_size > 0L)))
{
list.AddRange(new KeyValue[] { new KeyValue("file", message.media_name), new KeyValue("size", message.media_size.ToString(CultureInfo.InvariantCulture)), new KeyValue("url", message.media_url) });
if (message.media_duration_seconds > 0)
{
list.Add(new KeyValue("seconds", message.media_duration_seconds.ToString(CultureInfo.InvariantCulture)));
}
}
if ((FMessage.Type.Contact == message.media_wa_type) && (message.media_name != null))
{
node = new ProtocolTreeNode("media", list.ToArray(), new ProtocolTreeNode("vcard", new KeyValue[] { new KeyValue("name", message.media_name) }, WhatsApp.SYSEncoding.GetBytes(message.data)));
}
else
{
byte[] data = message.binary_data;
if ((data == null) && !string.IsNullOrEmpty(message.data))
{
try
{
data = Convert.FromBase64String(message.data);
}
catch (Exception)
{
}
}
if (data != null)
{
list.Add(new KeyValue("encoding", "raw"));
}
node = new ProtocolTreeNode("media", list.ToArray(), null, data);
}
this.SendNode(GetMessageNode(message, node));
}