//--------------------------------------------------------------------- LockboxAccessResultPtr LockboxAccessResult::create( ElementPtr rootEl, IMessageSourcePtr messageSource ) { LockboxAccessResultPtr ret(new LockboxAccessResult); IMessageHelper::fill(*ret, rootEl, messageSource); ret->mLockboxInfo = MessageHelper::createLockbox(rootEl->findFirstChildElement("lockbox")); ret->mNamespaceGrantChallengeInfo = MessageHelper::createNamespaceGrantChallenge(rootEl->findFirstChildElement("namespaceGrantChallenge")); ElementPtr identitiesEl = rootEl->findFirstChildElement("identities"); if (identitiesEl) { ElementPtr identityEl = identitiesEl->findFirstChildElement("identity"); while (identityEl) { IdentityInfo info = MessageHelper::createIdentity(identityEl); if (info.hasData()) { ret->mIdentities.push_back(info); } identityEl = identityEl->findNextSiblingElement("identity"); } } return ret; }
//--------------------------------------------------------------------- NamespaceGrantCompleteNotifyPtr NamespaceGrantCompleteNotify::create( ElementPtr rootEl, IMessageSourcePtr messageSource ) { NamespaceGrantCompleteNotifyPtr ret(new NamespaceGrantCompleteNotify); IMessageHelper::fill(*ret, rootEl, messageSource); ElementPtr namespaceGranthallengeBundlesEl = rootEl->findFirstChildElement("namespaceGrantChallengeBundles"); if (namespaceGranthallengeBundlesEl) { ElementPtr namespaceGranthallengeBundleEl = namespaceGranthallengeBundlesEl->findFirstChildElement("namespaceGrantChallengeBundle"); while (namespaceGranthallengeBundleEl) { ret->mBundles.push_back(namespaceGranthallengeBundleEl->clone()->toElement()); namespaceGranthallengeBundleEl = namespaceGranthallengeBundleEl->findNextSiblingElement("namespaceGrantChallengeBundle"); } } return ret; }
//--------------------------------------------------------------------- LockboxIdentitiesUpdateResultPtr LockboxIdentitiesUpdateResult::create( ElementPtr root, IMessageSourcePtr messageSource ) { LockboxIdentitiesUpdateResultPtr ret(new LockboxIdentitiesUpdateResult); IMessageHelper::fill(*ret, root, messageSource); ElementPtr identitiesEl = root->findFirstChildElement("identities"); if (identitiesEl) { ElementPtr identityEl = identitiesEl->findFirstChildElement("identity"); while (identityEl) { IdentityInfo info = MessageHelper::createIdentity(identityEl); if (info.hasData()) { ret->mIdentities.push_back(info); } identityEl = identityEl->findNextSiblingElement("identity"); } } return ret; }
//--------------------------------------------------------------------- RolodexContactsGetResultPtr RolodexContactsGetResult::create( ElementPtr rootEl, IMessageSourcePtr messageSource ) { RolodexContactsGetResultPtr ret(new RolodexContactsGetResult); IMessageHelper::fill(*ret, rootEl, messageSource); ElementPtr identitiesEl = rootEl->findFirstChildElement("identities"); if (identitiesEl) { ElementPtr identityEl = identitiesEl->findFirstChildElement("identity"); while (identityEl) { IdentityInfo info = MessageHelper::createIdentity(identityEl); if (info.hasData()) { #define OPENPEER_STACK_MESSAGE_ROLODEX_IMPROPER_FACEBOOK_URL "identity://facebook/" #define OPENPEER_STACK_MESSAGE_ROLODEX_ROPER_FACEBOOK_URL "identity://facebook.com/" #define HORRIBLE_HACK_TO_PREVENT_INVALID_FORMED_FACEBOOK_URIS 1 if (info.mURI.hasData()) { if (0 == info.mURI.compare(0, strlen(OPENPEER_STACK_MESSAGE_ROLODEX_IMPROPER_FACEBOOK_URL), OPENPEER_STACK_MESSAGE_ROLODEX_IMPROPER_FACEBOOK_URL)) { ZS_LOG_WARNING(Detail, String("RolodexContactsGetResult [") + ret->mID + "] Fixed imporer facebook identity URI. Please contact rolodex admin to repair rolodex service. URI=" + info.mURI) info.mURI = OPENPEER_STACK_MESSAGE_ROLODEX_ROPER_FACEBOOK_URL + info.mURI.substr(strlen(OPENPEER_STACK_MESSAGE_ROLODEX_IMPROPER_FACEBOOK_URL)); } } #define HORRIBLE_HACK_TO_PREVENT_INVALID_FORMED_FACEBOOK_URIS 2 ret->mIdentities.push_back(info); } identityEl = identityEl->findNextSiblingElement("identity"); } } ret->mRolodexInfo = MessageHelper::createRolodex(rootEl->findFirstChildElement("rolodex")); return ret; }
//--------------------------------------------------------------------- ServicesGetResultPtr ServicesGetResult::create( ElementPtr root, IMessageSourcePtr messageSource ) { ServicesGetResultPtr ret(new ServicesGetResult); IMessageHelper::fill(*ret, root, messageSource); ElementPtr servicesEl = root->findFirstChildElement("services"); if (!servicesEl) return ret; ElementPtr serviceEl = servicesEl->findFirstChildElement("service"); while (serviceEl) { Service service = MessageHelper::createService(serviceEl); if (service.hasData()) { ret->mServices[service.mID] = service; ret->mServicesByType[service.mType] = service; } serviceEl = serviceEl->findNextSiblingElement("service"); } return ret; }