void testAccessors()
    {
        const char* name = "xxx";
        const char* name_different_case = "XXX";
        const char* value = "xxx-value";
        const char* valueRef;

        NameValuePairInsensitive* nv = new NameValuePairInsensitive(name);
        NameValuePairInsensitive* nv_different_case =
           new NameValuePairInsensitive(name_different_case);

        valueRef = nv->getValue();
        CPPUNIT_ASSERT_MESSAGE("value should be null", NULL == valueRef);

        nv->setValue(value);
        valueRef = nv->getValue();
        ASSERT_STR_EQUAL_MESSAGE("incorrect value retrieved", value, valueRef);

        nv->setValue(name);
        valueRef = nv->getValue();
        ASSERT_STR_EQUAL_MESSAGE("incorrect value retrieved", valueRef, name);

        CPPUNIT_ASSERT_MESSAGE("nv should be == nv", nv->compareTo(nv) == 0);
        CPPUNIT_ASSERT_MESSAGE("nv should be == nv_different_case",
                               nv->compareTo(nv_different_case) == 0);

        delete nv;
    }
   void testHash()
      {
         const char* name = "eventtype";
         const char* name_different_case = "eventType";

         NameValuePairInsensitive* nv = new NameValuePairInsensitive(name);
         NameValuePairInsensitive* nv_different_case =
            new NameValuePairInsensitive(name_different_case);

         CPPUNIT_ASSERT_MESSAGE("values do not compare equal",
                                nv->isEqual(nv_different_case)
                                );
         CPPUNIT_ASSERT_MESSAGE("hash values do not match",
                                nv->hash() == nv_different_case->hash()
                                );
      }
void Dialog::getBytes(UtlString& b, ssize_t& l)
{
   b.remove(0);
   b.append(BEGIN_DIALOG);
   UtlString singleLine;
   singleLine = DOUBLE_QUOTE;
   XmlEscape(singleLine, mId);
   singleLine += DOUBLE_QUOTE;
   b += singleLine;
   if (!mCallId.isNull())
   {
      b.append(CALL_ID_EQUAL);
      singleLine = DOUBLE_QUOTE;
      XmlEscape(singleLine, mCallId);
      singleLine += DOUBLE_QUOTE;
      b += singleLine;
   }

   if (!mLocalTag.isNull())
   {
      b.append(LOCAL_TAG_EQUAL);
      // mLocalTag is a token
      singleLine = DOUBLE_QUOTE + mLocalTag + DOUBLE_QUOTE;
      b += singleLine;
   }

   if (!mRemoteTag.isNull())
   {
      b.append(REMOTE_TAG_EQUAL);
      // mRemoteTag is a token
      singleLine = DOUBLE_QUOTE + mRemoteTag + DOUBLE_QUOTE;
      b += singleLine;
   }

   if (!mDirection.isNull())
   {
      b.append(DIRECTION_EQUAL);
      // mDirection is a token
      singleLine = DOUBLE_QUOTE + mDirection + DOUBLE_QUOTE;
      b += singleLine;
   }
   b.append(END_LINE);

   // State element
   b.append(BEGIN_STATE);
   if (!mEvent.isNull())
   {
      b.append(EVENT_EQUAL);
      // mEvent is a token
      singleLine = DOUBLE_QUOTE + mEvent + DOUBLE_QUOTE;
      b += singleLine;
   }

   if (!mCode.isNull())
   {
      b.append(CODE_EQUAL);
      // mCode is a token
      singleLine = DOUBLE_QUOTE + mCode + DOUBLE_QUOTE;
      b += singleLine;
   }

   // End of state element
   singleLine = END_BRACKET + mState + END_STATE;
   b += singleLine;

   // Duration element
   if (mDuration !=0)
   {
      b += BEGIN_DURATION;
      b.appendNumber((Int64) OsDateTime::getSecsSinceEpoch() - mDuration);
      b += END_DURATION;
   }

   // Local element
   b.append(BEGIN_LOCAL);
   if (!mLocalIdentity.isNull())
   {
      b.append(BEGIN_IDENTITY);
      if (!mLocalDisplay.isNull())
      {
         UtlString displayName = mLocalDisplay;
         NameValueTokenizer::frontBackTrim(&displayName, "\"");
         b.append(DISPLAY_EQUAL);
         singleLine = DOUBLE_QUOTE;
         XmlEscape(singleLine, displayName);
         singleLine += DOUBLE_QUOTE;
         b += singleLine;
      }

      singleLine = END_BRACKET;
      XmlEscape(singleLine, mLocalIdentity);
      singleLine += END_IDENTITY;
      b += singleLine;
   }

   if (!mLocalTarget.isNull() && mLocalTarget.compareTo("sip:") != 0)
   {
      singleLine = BEGIN_TARGET;
      XmlEscape(singleLine, mLocalTarget);
      singleLine += DOUBLE_QUOTE END_LINE;
      b += singleLine;
      // add optional parameters
      UtlDListIterator* iterator = getLocalParameterIterator();
      NameValuePairInsensitive* nvp;
      while ((nvp = (NameValuePairInsensitive*) (*iterator)()))
      {
         singleLine = BEGIN_DIALOG_PARAM;
         singleLine += PNAME;
         XmlEscape(singleLine, nvp->data());
         singleLine += PVALUE;
         XmlEscape(singleLine, nvp->getValue());
         singleLine += END_DIALOG_PARAM;
         b += singleLine;
      }
      delete iterator;

      singleLine = END_TARGET;
      b += singleLine;
   }

   // End of local element
   b.append(END_LOCAL);

   // Remote element
   b.append(BEGIN_REMOTE);
   if (!mRemoteIdentity.isNull())
   {
      b.append(BEGIN_IDENTITY);
      if (!mRemoteDisplay.isNull())
      {
         UtlString displayName = mRemoteDisplay;
         NameValueTokenizer::frontBackTrim(&displayName, "\"");
         b.append(DISPLAY_EQUAL);
         singleLine = DOUBLE_QUOTE;
         XmlEscape(singleLine, displayName);
         singleLine += DOUBLE_QUOTE;
         b += singleLine;
      }

      singleLine = END_BRACKET;
      XmlEscape(singleLine, mRemoteIdentity);
      singleLine += END_IDENTITY;
      b += singleLine;
   }

   if (!mRemoteTarget.isNull() && mRemoteTarget.compareTo("sip:") != 0)
   {
      singleLine = BEGIN_TARGET;
      XmlEscape(singleLine, mRemoteTarget);
      singleLine += DOUBLE_QUOTE END_LINE;
      b += singleLine;
      // add optional parameters
      UtlDListIterator* iterator = getRemoteParameterIterator();
      NameValuePairInsensitive* nvp;
      while ((nvp = (NameValuePairInsensitive*) (*iterator)()))
      {
         singleLine = BEGIN_DIALOG_PARAM;
         singleLine += PNAME;
         XmlEscape(singleLine, nvp->data());
         singleLine += PVALUE;
         XmlEscape(singleLine, nvp->getValue());
         singleLine += END_DIALOG_PARAM;
         b += singleLine;
      }
      delete iterator;

      singleLine = END_TARGET;
      b += singleLine;
   }

   // End of remote element
   b.append(END_REMOTE);

   // End of dialog element
   b.append(END_DIALOG);

   l = b.length();
}
Exemple #4
0
void Url::getUri(UtlString& urlString)
{
   // Insert the scheme
    urlString = schemeName(mScheme);
    urlString.append(":",1);
    
    switch(mScheme)
    {
    case FileUrlScheme:
    case FtpUrlScheme:
    case HttpUrlScheme:
    case HttpsUrlScheme:
    case RtspUrlScheme:
       urlString.append("//",2);
       break;

    case SipUrlScheme:
    case SipsUrlScheme:
    case MailtoUrlScheme:
    default:
       break;
    }

    // Add the user 
    if (FileUrlScheme != mScheme) // no user defined in a file url
    {
       if(!mUserId.isNull())
       {
          urlString.append(mUserId);
          if(!mPassword.isNull() || mPasswordSet)
          {
             urlString.append(":", 1);
             urlString.append(mPassword);
          }
          urlString.append("@", 1);
       }
    }

    // Add the host
    urlString.append(mHostAddress);
    if(mHostPort > 0)
    {
       char portBuffer[20];
       sprintf(portBuffer, ":%d", mHostPort);
       urlString.append(portBuffer);
    }

    // Add the path
    switch(mScheme)
    {
    case FileUrlScheme:
    case FtpUrlScheme:
    case HttpUrlScheme:
    case HttpsUrlScheme:
    case RtspUrlScheme:
       if(!mPath.isNull())
       {
          urlString.append(mPath);
       }
       break;

    case SipUrlScheme:
    case SipsUrlScheme:
    case MailtoUrlScheme:
    default:
       break;
    }

    // Add the URL parameters
    if (   (   mpUrlParameters
            || const_cast<Url*>(this)->parseUrlParameters()
            )
        && mpUrlParameters->entries()
        )
    {
        UtlDListIterator urlParamIterator(*mpUrlParameters);
        NameValuePair* urlParam = NULL;
        UtlString urlParamValue;

        while ((urlParam = (NameValuePair*) urlParamIterator()))
        {
            urlString.append(";", 1);
            urlString.append(*urlParam);
            urlParamValue = urlParam->getValue();
            if(!urlParamValue.isNull())
            {
                urlString.append("=", 1);
                HttpMessage::escape(urlParamValue);
                urlString.append(urlParamValue);
            }
        }
    }
    
    // Add the header parameters
    if (   (   mpHeaderOrQueryParameters
            || const_cast<Url*>(this)->parseHeaderOrQueryParameters()
            )
        && mpHeaderOrQueryParameters->entries()
        )
    {
        UtlDListIterator headerParamIterator(*mpHeaderOrQueryParameters);
        NameValuePairInsensitive* headerParam = NULL;
        UtlString headerParamValue;
        UtlBoolean firstHeader = TRUE;

        while ((headerParam = static_cast<NameValuePairInsensitive*>(headerParamIterator())))
        {
            // Add separator for first header parameter
            if(firstHeader)
            {
                urlString.append("?", 1);
                firstHeader = FALSE;
            }
            else
            {
                urlString.append("&", 1);
            }

            urlString.append(*headerParam);
            headerParamValue = headerParam->getValue();
            if(!headerParamValue.isNull())
            {
                urlString.append("=", 1);
                HttpMessage::escape(headerParamValue);
                urlString.append(headerParamValue);
            }
        }
    }
}