private SIPRequest GetRequest(SIPMethodsEnum method)
{
try
{
SIPURI uri = SIPURI.ParseSIPURIRelaxed(m_callDescriptor.Uri);
SIPRequest request = new SIPRequest(method, uri);
SIPFromHeader fromHeader = m_callDescriptor.GetFromHeader();
fromHeader.FromTag = CallProperties.CreateNewTag();
SIPToHeader toHeader = new SIPToHeader(null, uri, null);
int cseq = Crypto.GetRandomInt(10000, 20000);
SIPHeader header = new SIPHeader(fromHeader, toHeader, cseq, CallProperties.CreateNewCallId());
header.CSeqMethod = method;
header.UserAgent = m_userAgent;
request.Header = header;
header.Vias.PushViaHeader(SIPViaHeader.GetDefaultSIPViaHeader());
try
{
if (m_callDescriptor.CustomHeaders != null && m_callDescriptor.CustomHeaders.Count > 0)
{
foreach (string customHeader in m_callDescriptor.CustomHeaders)
{
if (customHeader.IsNullOrBlank())
{
continue;
}
else if (customHeader.Trim().StartsWith(SIPHeaders.SIP_HEADER_USERAGENT))
{
request.Header.UserAgent = customHeader.Substring(customHeader.IndexOf(":") + 1).Trim();
}
else
{
request.Header.UnknownHeaders.Add(customHeader);
}
}
}
}
catch (Exception excp)
{
logger.LogError("Exception Parsing CustomHeader for SIPNonInviteClientUserAgent GetRequest. " + excp.Message + m_callDescriptor.CustomHeaders);
}
if (!m_callDescriptor.Content.IsNullOrBlank())
{
request.Body = m_callDescriptor.Content;
request.Header.ContentType = m_callDescriptor.ContentType;
request.Header.ContentLength = request.Body.Length;
}
return(request);
}
catch (Exception excp)
{
logger.LogError("Exception SIPNonInviteClientUserAgent GetRequest. " + excp.Message);
throw;
}
}