1 #include "CalendarJournal.h"
5 CalendarObjectValidResult CalendarJournalObject::ValidObject(){
7 bool ValidBegin = false;
9 bool ValidDateTimeStamp = false;
10 bool ValidUniqueID = false;
14 // Look for BEGIN:VJOURNAL.
16 for (vector<string>::iterator iter = ObjectName.begin();
17 iter != ObjectName.end(); iter++){
19 if (ObjectName[SeekCount] == "BEGIN" &&
20 ObjectData[SeekCount] == "VJOURNAL"){
22 if (ValidBegin == false){
25 return CALENDAROBJECTVALID_INVALIDFORMAT;
30 if (ObjectName[SeekCount] == "END" &&
31 ObjectData[SeekCount] == "VJOURNAL" &&
34 return CALENDAROBJECTVALID_INVALIDFORMAT;
46 for (vector<string>::iterator iter = ObjectName.begin();
47 iter != ObjectName.end(); iter++){
50 PropertyName = ObjectName[SeekCount].substr(0,7);
53 catch(const out_of_range& oor){
57 if (PropertyName == "DTSTAMP"){
59 if (ValidDateTimeStamp == false){
60 ValidDateTimeStamp = true;
62 return CALENDAROBJECTVALID_INVALIDFORMAT;
75 for (vector<string>::iterator iter = ObjectName.begin();
76 iter != ObjectName.end(); iter++){
79 PropertyName = ObjectName[SeekCount].substr(0,3);
82 catch(const out_of_range& oor){
86 if (PropertyName == "UID"){
88 if (ValidUniqueID == false){
91 return CALENDAROBJECTVALID_INVALIDFORMAT;
102 // Look for END:VJOURNAL.
104 for (vector<string>::iterator iter = ObjectName.begin();
105 iter != ObjectName.end(); iter++){
107 if (ObjectName[SeekCount] == "END" &&
108 ObjectData[SeekCount] == "VJOURNAL"){
110 if (ValidEnd == false){
113 return CALENDAROBJECTVALID_INVALIDFORMAT;
122 // Check if the VJOURNAL is valid.
124 if (ValidBegin == true &&
126 ValidDateTimeStamp == true &&
127 ValidUniqueID == true){
129 return CALENDAROBJECTVALID_OK;
133 return CALENDAROBJECTVALID_INVALIDFORMAT;
139 void CalendarJournalObject::ProcessData(){
143 multimap<string,string> DataReceived;
144 map<string,string> PropertyData;
145 string *PropertyNameData = nullptr;
146 int ObjectSeekCount = 0;
148 // Get the Date Time Stamp (DTSTAMP).
150 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "DTSTAMP");
152 // Process the data from DTSTAMP.
154 if (DataReceived.begin() != DataReceived.end()){
157 DateTimeStampTokens = DataReceived.begin()->first.substr(8);
160 catch(const out_of_range &oor){
161 // Do nothing as there is no data.
164 DateTimeStampData = DataReceived.begin()->second;
168 // Get the Unique ID (UID).
170 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "UID");
172 // Process the data from UID.
174 if (DataReceived.begin() != DataReceived.end()){
177 UniqueIDTokens = DataReceived.begin()->first.substr(4);
180 catch(const out_of_range &oor){
181 // Do nothing as there is no data.
184 UniqueID = DataReceived.begin()->second;
188 // Process the data from CLASS.
190 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "CLASS");
192 if (DataReceived.begin() != DataReceived.end()){
195 ClassDataTokens = DataReceived.begin()->first.substr(6);
198 catch(const out_of_range &oor){
199 // Do nothing as there is no data.
202 ClassData = DataReceived.begin()->second;
206 // Get the Date Time Start value.
208 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "DTSTART");
210 // Process the data from DTSTART.
212 if (DataReceived.begin() != DataReceived.end()){
214 bool TokenData = false;
215 string PropertyTokens;
217 PropertyNameData = (string*)&DataReceived.begin()->first;
219 PropertyData = SplitValues(*PropertyNameData);
221 for(map<string,string>::iterator iter = PropertyData.begin();
222 iter != PropertyData.end(); iter++){
224 if (iter->first == "VALUE"){
226 DateTimeStartDataValue = iter->second;
228 } else if (iter->first == "TZID"){
230 DateTimeStartDataTimeZoneID = iter->second;
234 if (TokenData == false){
237 PropertyTokens += ";";
240 PropertyTokens += iter->first;
241 PropertyTokens += "=";
242 PropertyTokens += iter->second;
248 if (PropertyTokens.size() > 0){
249 DateTimeStartDataTokens = PropertyTokens;
252 DateTimeStartData = DataReceived.begin()->second;
256 // Process the data from LAST-MODIFIED.
258 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "LAST-MODIFIED");
260 if (DataReceived.begin() != DataReceived.end()){
263 LastModifiedTokens = DataReceived.begin()->first.substr(14);
266 catch(const out_of_range &oor){
267 // Do nothing as there is no data.
270 LastModifiedData = DataReceived.begin()->second;
274 // Process the data from ORGANIZER.
276 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "ORGANIZER");
278 if (DataReceived.begin() != DataReceived.end()){
280 bool TokenData = false;
281 string PropertyTokens;
283 PropertyNameData = (string*)&DataReceived.begin()->first;
285 PropertyData = SplitValues(*PropertyNameData);
287 for(map<string,string>::iterator iter = PropertyData.begin();
288 iter != PropertyData.end(); iter++){
290 if (iter->first == "CN"){
292 OrganiserDataCommonName = iter->second;
294 } else if (iter->first == "DIR"){
296 OrganiserDataDirectoryEntry = iter->second;
298 } else if (iter->first == "SENT-BY"){
300 OrganiserDataSentByParam = iter->second;
302 } else if (iter->first == "LANGUAGE"){
304 OrganiserDataLanguage = iter->second;
308 if (TokenData == false){
311 PropertyTokens += ";";
314 PropertyTokens += iter->first;
315 PropertyTokens += "=";
316 PropertyTokens += iter->second;
322 if (PropertyTokens.size() > 0){
324 OrganiserDataTokens = PropertyTokens;
328 OrganiserData = DataReceived.begin()->second;
332 // Process the data from RECURRENCE-ID.
334 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "RECURRENCE-ID");
336 if (DataReceived.begin() != DataReceived.end()){
338 bool TokenData = false;
339 string PropertyTokens;
341 PropertyNameData = (string*)&DataReceived.begin()->first;
343 PropertyData = SplitValues(*PropertyNameData);
345 for(map<string,string>::iterator iter = PropertyData.begin();
346 iter != PropertyData.end(); iter++){
348 if (iter->first == "TZID"){
350 RecurranceIDDataTimeZoneParam = iter->second;
352 } else if (iter->first == "VALUE"){
354 RecurranceIDDataValue = iter->second;
356 } else if (iter->first == "RANGE"){
358 RecurranceIDDataRangeParam = iter->second;
362 if (TokenData == false){
365 PropertyTokens += ";";
368 PropertyTokens += iter->first;
369 PropertyTokens += "=";
370 PropertyTokens += iter->second;
376 if (PropertyTokens.size() > 0){
378 RecurranceIDDataTokens = PropertyTokens;
382 RecurranceIDData = DataReceived.begin()->second;
386 // Process the data from SEQUENCE.
388 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "SEQUENCE");
390 if (DataReceived.begin() != DataReceived.end()){
393 SequenceTokens = DataReceived.begin()->first.substr(9);
396 catch(const out_of_range &oor){
397 // Do nothing as there is no data.
401 SequenceData = stoi(DataReceived.begin()->second);
404 catch(const invalid_argument &oor){
405 SequenceTokens.clear();
410 // Process the data from STATUS.
412 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "STATUS");
414 if (DataReceived.begin() != DataReceived.end()){
416 bool TokenData = false;
417 string PropertyTokens;
419 PropertyNameData = (string*)&DataReceived.begin()->first;
421 PropertyData = SplitValues(*PropertyNameData);
423 for(map<string,string>::iterator iter = PropertyData.begin();
424 iter != PropertyData.end(); iter++){
426 if (iter->first == "LANGUAGE"){
428 StatusLanguage = iter->second;
432 if (TokenData == false){
435 PropertyTokens += ";";
438 PropertyTokens += iter->first;
439 PropertyTokens += "=";
440 PropertyTokens += iter->second;
446 if (PropertyTokens.size() > 0){
448 StatusTokens = PropertyTokens;
452 StatusData = DataReceived.begin()->second;
456 // Process the data from SUMMARY.
458 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "SUMMARY");
460 if (DataReceived.begin() != DataReceived.end()){
462 bool TokenData = false;
463 string PropertyTokens;
465 PropertyNameData = (string*)&DataReceived.begin()->first;
467 PropertyData = SplitValues(*PropertyNameData);
469 for(map<string,string>::iterator iter = PropertyData.begin();
470 iter != PropertyData.end(); iter++){
472 if (iter->first == "ALTREP"){
474 SummaryDataAltRep = iter->second;
476 } else if (iter->first == "LANGUAGE"){
478 SummaryDataLanguage = iter->second;
482 if (TokenData == false){
485 PropertyTokens += ";";
488 PropertyTokens += iter->first;
489 PropertyTokens += "=";
490 PropertyTokens += iter->second;
496 if (PropertyTokens.size() > 0){
498 SummaryDataTokens = PropertyTokens;
502 SummaryData = DataReceived.begin()->second;
506 // Process the data from URL.
508 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "URL");
510 if (DataReceived.begin() != DataReceived.end()){
513 URLDataTokens = DataReceived.begin()->first.substr(4);
516 catch(const out_of_range &oor){
517 // Do nothing as there is no data.
520 URLData = DataReceived.begin()->second;
524 // Process the data from RRULE.
526 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, false, "RRULE");
528 if (DataReceived.begin() != DataReceived.end()){
531 RecurranceRuleDataTokens = DataReceived.begin()->first.substr(6);
534 catch(const out_of_range &oor){
535 // Do nothing as there is no data.
538 RecurranceRuleData = DataReceived.begin()->second;
542 // Process the data from ATTACH.
544 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "ATTACH");
546 for(multimap<string,string>::iterator iter = DataReceived.begin();
547 iter != DataReceived.end();
550 AttachListEncoding.push_back("");
551 AttachListValue.push_back("");
552 AttachListFormatType.push_back("");
553 AttachListTokens.push_back("");
554 AttachList.push_back("");
556 bool TokenData = false;
557 string PropertyTokens;
559 PropertyNameData = (string*)&iter->first;
561 PropertyData = SplitValues(*PropertyNameData);
563 for(map<string,string>::iterator dataiter = PropertyData.begin();
564 dataiter != PropertyData.end(); dataiter++){
566 if (dataiter->first == "ENCODING"){
568 AttachListEncoding[ObjectSeekCount] = dataiter->second;
570 } else if (dataiter->first == "VALUE"){
572 AttachListValue[ObjectSeekCount] = dataiter->second;
574 } else if (dataiter->first == "FMTTYPE"){
576 AttachListFormatType[ObjectSeekCount] = dataiter->second;
580 if (TokenData == false){
583 PropertyTokens += ";";
586 PropertyTokens += dataiter->first;
587 PropertyTokens += "=";
588 PropertyTokens += dataiter->second;
594 if (PropertyTokens.size() > 0){
595 AttachListTokens[ObjectSeekCount] = PropertyTokens;
598 AttachList[ObjectSeekCount] = iter->second;
604 // Process the data from ATTENDEE.
606 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "ATTENDEE");
610 for(multimap<string,string>::iterator iter = DataReceived.begin();
611 iter != DataReceived.end();
614 AttendeeListMember.push_back("");
615 AttendeeListDelegatedFrom.push_back("");
616 AttendeeListDelegatedTo.push_back("");
617 AttendeeListRole.push_back("");
618 AttendeeListRSVP.push_back("");
619 AttendeeListDirectoryEntry.push_back("");
620 AttendeeListSentBy.push_back("");
621 AttendeeListCommonName.push_back("");
622 AttendeeListCalendarUserType.push_back("");
623 AttendeeListParticipationStatus.push_back("");
624 AttendeeListLanguage.push_back("");
625 AttendeeListTokens.push_back("");
626 AttendeeList.push_back("");
628 bool TokenData = false;
629 string PropertyTokens;
631 PropertyNameData = (string*)&iter->first;
633 PropertyData = SplitValues(*PropertyNameData);
635 for(map<string,string>::iterator dataiter = PropertyData.begin();
636 dataiter != PropertyData.end(); dataiter++){
638 if (dataiter->first == "CUTYPE"){
640 AttendeeListCalendarUserType[ObjectSeekCount] = dataiter->second;
642 } else if (dataiter->first == "MEMBER"){
644 AttendeeListMember[ObjectSeekCount] = dataiter->second;
646 } else if (dataiter->first == "ROLE"){
648 AttendeeListRole[ObjectSeekCount] = dataiter->second;
650 } else if (dataiter->first == "PARTSTAT"){
652 AttendeeListParticipationStatus[ObjectSeekCount] = dataiter->second;
654 } else if (dataiter->first == "RSVP"){
656 AttendeeListRSVP[ObjectSeekCount] = dataiter->second;
658 } else if (dataiter->first == "DELEGATED-TO"){
660 AttendeeListDelegatedTo[ObjectSeekCount] = dataiter->second;
662 } else if (dataiter->first == "DELEGATED-FROM"){
664 AttendeeListDelegatedFrom[ObjectSeekCount] = dataiter->second;
666 } else if (dataiter->first == "SENT-BY"){
668 AttendeeListSentBy[ObjectSeekCount] = dataiter->second;
670 } else if (dataiter->first == "CN"){
672 AttendeeListCommonName[ObjectSeekCount] = dataiter->second;
674 } else if (dataiter->first == "DIR"){
676 AttendeeListDirectoryEntry[ObjectSeekCount] = dataiter->second;
678 } else if (dataiter->first == "LANGUAGE"){
680 AttendeeListLanguage[ObjectSeekCount] = dataiter->second;
684 if (TokenData == false){
687 PropertyTokens += ";";
690 PropertyTokens += dataiter->first;
691 PropertyTokens += "=";
692 PropertyTokens += dataiter->second;
698 if (PropertyTokens.size() > 0){
699 AttendeeListTokens[ObjectSeekCount] = PropertyTokens;
702 AttendeeList[ObjectSeekCount] = iter->second;
708 // Process the data from CATEGORIES.
710 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "CATEGORIES");
714 for(multimap<string,string>::iterator iter = DataReceived.begin();
715 iter != DataReceived.end();
718 CategoriesListTokens.push_back("");
719 CategoriesListLanguage.push_back("");
720 CategoriesList.push_back("");
722 bool TokenData = false;
723 string PropertyTokens;
725 PropertyNameData = (string*)&iter->first;
727 PropertyData = SplitValues(*PropertyNameData);
729 for(map<string,string>::iterator dataiter = PropertyData.begin();
730 dataiter != PropertyData.end(); dataiter++){
732 if (dataiter->first == "LANGUAGE"){
734 CategoriesListLanguage[ObjectSeekCount] = dataiter->second;
738 if (TokenData == false){
741 PropertyTokens += ";";
744 PropertyTokens += dataiter->first;
745 PropertyTokens += "=";
746 PropertyTokens += dataiter->second;
752 if (PropertyTokens.size() > 0){
753 CategoriesListTokens[ObjectSeekCount] = PropertyTokens;
756 CategoriesList[ObjectSeekCount] = iter->second;
762 // Process the data from COMMENT.
764 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "COMMENT");
768 for(multimap<string,string>::iterator iter = DataReceived.begin();
769 iter != DataReceived.end();
772 CommentListTokens.push_back("");
773 CommentListAltRep.push_back("");
774 CommentListLanguage.push_back("");
775 CommentList.push_back("");
777 bool TokenData = false;
778 string PropertyTokens;
780 PropertyNameData = (string*)&iter->first;
782 PropertyData = SplitValues(*PropertyNameData);
784 for(map<string,string>::iterator dataiter = PropertyData.begin();
785 dataiter != PropertyData.end(); dataiter++){
787 if (dataiter->first == "ALTREP"){
789 CommentListAltRep[ObjectSeekCount] = dataiter->second;
791 } else if (dataiter->first == "LANGUAGE"){
793 CommentListLanguage[ObjectSeekCount] = dataiter->second;
797 if (TokenData == false){
800 PropertyTokens += ";";
803 PropertyTokens += dataiter->first;
804 PropertyTokens += "=";
805 PropertyTokens += dataiter->second;
811 if (PropertyTokens.size() > 0){
812 CommentListTokens[ObjectSeekCount] = PropertyTokens;
815 CommentList[ObjectSeekCount] = iter->second;
821 // Process the data from CONTACT.
823 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "CONTACT");
827 for(multimap<string,string>::iterator iter = DataReceived.begin();
828 iter != DataReceived.end();
831 ContactListTokens.push_back("");
832 ContactListAltRep.push_back("");
833 ContactListLanguage.push_back("");
834 ContactList.push_back("");
836 bool TokenData = false;
837 string PropertyTokens;
839 PropertyNameData = (string*)&iter->first;
841 PropertyData = SplitValues(*PropertyNameData);
843 for(map<string,string>::iterator dataiter = PropertyData.begin();
844 dataiter != PropertyData.end(); dataiter++){
846 if (dataiter->first == "ALTREP"){
848 ContactListAltRep[ObjectSeekCount] = dataiter->second;
850 } else if (dataiter->first == "LANGUAGE"){
852 ContactListLanguage[ObjectSeekCount] = dataiter->second;
856 if (TokenData == false){
859 PropertyTokens += ";";
862 PropertyTokens += dataiter->first;
863 PropertyTokens += "=";
864 PropertyTokens += dataiter->second;
870 if (PropertyTokens.size() > 0){
871 ContactListTokens[ObjectSeekCount] = PropertyTokens;
874 ContactList[ObjectSeekCount] = iter->second;
880 // Process the data from Description.
882 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "DESCRIPTION");
886 for(multimap<string,string>::iterator iter = DataReceived.begin();
887 iter != DataReceived.end();
890 DescriptionListTokens.push_back("");
891 DescriptionListAltRep.push_back("");
892 DescriptionListLanguage.push_back("");
893 DescriptionList.push_back("");
895 bool TokenData = false;
896 string PropertyTokens;
898 PropertyNameData = (string*)&iter->first;
900 PropertyData = SplitValues(*PropertyNameData);
902 for(map<string,string>::iterator dataiter = PropertyData.begin();
903 dataiter != PropertyData.end(); dataiter++){
905 if (dataiter->first == "ALTREP"){
907 DescriptionListAltRep[ObjectSeekCount] = dataiter->second;
909 } else if (dataiter->first == "LANGUAGE"){
911 DescriptionListLanguage[ObjectSeekCount] = dataiter->second;
915 if (TokenData == false){
918 PropertyTokens += ";";
921 PropertyTokens += dataiter->first;
922 PropertyTokens += "=";
923 PropertyTokens += dataiter->second;
929 if (PropertyTokens.size() > 0){
930 DescriptionListTokens[ObjectSeekCount] = PropertyTokens;
933 DescriptionList[ObjectSeekCount] = iter->second;
939 // Process the data from EXDATE.
941 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "EXDATE");
945 for(multimap<string,string>::iterator iter = DataReceived.begin();
946 iter != DataReceived.end();
949 ExcludeDateDataTokens.push_back("");
950 ExcludeDateDataValue.push_back("");
951 ExcludeDateDataTimeZoneParam.push_back("");
952 ExcludeDateData.push_back("");
954 bool TokenData = false;
955 string PropertyTokens;
957 PropertyNameData = (string*)&iter->first;
959 PropertyData = SplitValues(*PropertyNameData);
961 for(map<string,string>::iterator dataiter = PropertyData.begin();
962 dataiter != PropertyData.end(); dataiter++){
964 if (dataiter->first == "VALUE"){
966 ExcludeDateDataValue[ObjectSeekCount] = dataiter->second;
968 } else if (dataiter->first == "TZID"){
970 ExcludeDateDataTimeZoneParam[ObjectSeekCount] = dataiter->second;
974 if (TokenData == false){
977 PropertyTokens += ";";
980 PropertyTokens += dataiter->first;
981 PropertyTokens += "=";
982 PropertyTokens += dataiter->second;
988 if (PropertyTokens.size() > 0){
989 ExcludeDateDataTokens[ObjectSeekCount] = PropertyTokens;
992 ExcludeDateData[ObjectSeekCount] = iter->second;
998 // Process the data from RELATED-TO.
1000 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "RELATED-TO");
1002 ObjectSeekCount = 0;
1004 for(multimap<string,string>::iterator iter = DataReceived.begin();
1005 iter != DataReceived.end();
1008 RelatedToDataTokens.push_back("");
1009 RelatedToDataRelationType.push_back("");
1010 RelatedToData.push_back("");
1012 bool TokenData = false;
1013 string PropertyTokens;
1015 PropertyNameData = (string*)&iter->first;
1017 PropertyData = SplitValues(*PropertyNameData);
1019 for(map<string,string>::iterator dataiter = PropertyData.begin();
1020 dataiter != PropertyData.end(); dataiter++){
1022 if (dataiter->first == "RELTYPE"){
1024 RelatedToDataRelationType[ObjectSeekCount] = dataiter->second;
1028 if (TokenData == false){
1031 PropertyTokens += ";";
1034 PropertyTokens += dataiter->first;
1035 PropertyTokens += "=";
1036 PropertyTokens += dataiter->second;
1042 if (PropertyTokens.size() > 0){
1043 RelatedToDataTokens[ObjectSeekCount] = PropertyTokens;
1046 RelatedToData[ObjectSeekCount] = iter->second;
1052 // Process the data from RDATE.
1054 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "RDATE");
1056 ObjectSeekCount = 0;
1058 for(multimap<string,string>::iterator iter = DataReceived.begin();
1059 iter != DataReceived.end();
1062 RecurranceDateDataTokens.push_back("");
1063 RecurranceDateDataValue.push_back("");
1064 RecurranceDateDataTimeZoneParam.push_back("");
1065 RecurranceDateData.push_back("");
1067 bool TokenData = false;
1068 string PropertyTokens;
1070 PropertyNameData = (string*)&iter->first;
1072 PropertyData = SplitValues(*PropertyNameData);
1074 for(map<string,string>::iterator dataiter = PropertyData.begin();
1075 dataiter != PropertyData.end(); dataiter++){
1077 if (dataiter->first == "VALUE"){
1079 RecurranceDateDataValue[ObjectSeekCount] = dataiter->second;
1081 } else if (dataiter->first == "TZID"){
1083 RecurranceDateDataTimeZoneParam[ObjectSeekCount] = dataiter->second;
1087 if (TokenData == false){
1090 PropertyTokens += ";";
1093 PropertyTokens += dataiter->first;
1094 PropertyTokens += "=";
1095 PropertyTokens += dataiter->second;
1101 if (PropertyTokens.size() > 0){
1102 RecurranceDateDataTokens[ObjectSeekCount] = PropertyTokens;
1105 RecurranceDateData[ObjectSeekCount] = iter->second;
1111 // Process the data from REQUEST-STATUS.
1113 DataReceived = ProcessTextVectors(&ObjectName, &ObjectData, true, "REQUEST-STATUS");
1115 ObjectSeekCount = 0;
1117 for(multimap<string,string>::iterator iter = DataReceived.begin();
1118 iter != DataReceived.end();
1121 RequestStatusTokens.push_back("");
1122 RequestStatusLanguage.push_back("");
1123 RequestStatusData.push_back("");
1125 bool TokenData = false;
1126 string PropertyTokens;
1128 PropertyNameData = (string*)&iter->first;
1130 PropertyData = SplitValues(*PropertyNameData);
1132 for(map<string,string>::iterator dataiter = PropertyData.begin();
1133 dataiter != PropertyData.end(); dataiter++){
1135 if (dataiter->first == "LANGUAGE"){
1137 RequestStatusLanguage[ObjectSeekCount] = dataiter->second;
1141 if (TokenData == false){
1144 PropertyTokens += ";";
1147 PropertyTokens += dataiter->first;
1148 PropertyTokens += "=";
1149 PropertyTokens += dataiter->second;
1155 if (PropertyTokens.size() > 0){
1156 RequestStatusTokens[ObjectSeekCount] = PropertyTokens;
1159 RequestStatusData[ObjectSeekCount] = iter->second;
1165 ObjectSeekCount = 0;
1167 // Process data from X-*
1169 for(vector<string>::iterator iter = ObjectName.begin();
1170 iter != ObjectName.end(); ++iter){
1172 bool TokenData = false;
1173 string PropertyTokens;
1175 if (iter->substr(0,2) == "X-" &&
1178 XTokensData.push_back(ObjectData[ObjectSeekCount]);
1179 XTokensDataTokens.push_back(ObjectName[ObjectSeekCount]);