[Igarden-commit] Garden/source/Plugins PictureSearchPlugin.cp, 1.17, 1.17.2.1 PictureSearchPlugin.h
Status: Beta
Brought to you by:
jlbedell
|
From: Jeffrey B. <jlb...@us...> - 2006-12-26 02:09:58
|
Update of /cvsroot/igarden/Garden/source/Plugins In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv32250 Modified Files: Tag: Release_branch_v1 PictureSearchPlugin.cp PictureSearchPlugin.h Log Message: Add basic support for mirrors of picture data Index: PictureSearchPlugin.cp =================================================================== RCS file: /cvsroot/igarden/Garden/source/Plugins/PictureSearchPlugin.cp,v retrieving revision 1.17 retrieving revision 1.17.2.1 diff -C2 -d -r1.17 -r1.17.2.1 *** PictureSearchPlugin.cp 18 May 2006 11:20:38 -0000 1.17 --- PictureSearchPlugin.cp 26 Dec 2006 02:09:56 -0000 1.17.2.1 *************** *** 296,300 **** // char debugBuf[256]; const char *val; ! XGXMLObject *root, *supplier; XGXMLData *data; --- 296,300 ---- // char debugBuf[256]; const char *val; ! XGXMLObject *root, *supplier, *mirror; XGXMLData *data; *************** *** 349,352 **** --- 349,366 ---- } } + else if(CIstrcmp(data->GetTag(), "Mirrors") == 0) + { + mirror = data->GetChild(); + if(mirror != NULL) + { + data = dynamic_cast<XGXMLData*>(mirror); + if(data != NULL) + { + XGXMLStringData *xmlStr = dynamic_cast<XGXMLStringData*>(data->GetChild()); + if(xmlStr != NULL) + _mirrorSite = xmlStr->GetValue(); + } + } + } root = root->GetSibling(); } *************** *** 366,382 **** /// ~PictureSearchPlugin // ! pictureResult_t PictureSearchPlugin::LoadUpPicture(String & urlStr) { XGFileSpecifier spec; - char *remainder; - String host; pictureResult_t found = kPictureNotFound; ! if(GetPictureSpecifier(urlStr, host, &remainder, spec)) { if(spec.Exists() == XGFileSpecifier::kTypeNoFile) { char buf[512]; spec.GetName(buf); if(strlen(buf) < 32) --- 380,397 ---- /// ~PictureSearchPlugin // ! pictureResult_t PictureSearchPlugin::LoadUpPicture(String & urlStr, String & originalStr) { XGFileSpecifier spec; pictureResult_t found = kPictureNotFound; ! if(GetLocalPictureSpecifier(originalStr, spec)) { if(spec.Exists() == XGFileSpecifier::kTypeNoFile) { char buf[512]; + String remainder; + String host; + GetRemotePictureSpecifier(urlStr, host, remainder); spec.GetName(buf); if(strlen(buf) < 32) *************** *** 393,397 **** { req.Reset(); ! req.SetURI("GET",remainder); req.AddHeader("User-Agent", "GardensketchPicturePlugin YAAF"); req.SetKeepOpen(false); --- 408,412 ---- { req.Reset(); ! req.SetURI("GET",remainder.c_str()); req.AddHeader("User-Agent", "GardensketchPicturePlugin YAAF"); req.SetKeepOpen(false); *************** *** 430,441 **** ! bool PictureSearchPlugin::GetPictureSpecifier(String & urlStr, String &host, char **remainderPtr, XGFileSpecifier &spec) { const char *urlPtr; ! char *slash, *level, *remainder; ! String levelStr; ! const char *levelPtr; XGDirectory mkdir; - bool found = false; urlPtr = urlStr.c_str(); --- 445,454 ---- ! void PictureSearchPlugin::GetRemotePictureSpecifier(String & urlStr, String &host, String &remainder) { const char *urlPtr; ! char *slash; ! String levelStr, originalHost; XGDirectory mkdir; urlPtr = urlStr.c_str(); *************** *** 447,451 **** else host.SetCString(urlPtr); ! levelPtr = host.c_str(); mkdir = _pictSpec; if(!mkdir.ChangeDirectory(levelPtr)) --- 460,486 ---- else host.SetCString(urlPtr); ! ! remainder.SetCString(slash != NULL ? slash : ""); ! } ! ! bool PictureSearchPlugin::GetLocalPictureSpecifier(String & originalStr, XGFileSpecifier &spec) ! { ! const char *urlPtr; ! char *slash, *level; ! String levelStr, originalHost; ! const char *levelPtr; ! XGDirectory mkdir; ! bool found = false; ! ! urlPtr = originalStr.c_str(); ! if(strncmp(urlPtr, "http://", 7) == 0) ! urlPtr += 7; ! slash = strchr(urlPtr, '/'); ! if(slash != NULL) ! originalHost.SetCString(urlPtr, slash-urlPtr); ! else ! originalHost.SetCString(urlPtr); ! levelPtr = originalHost.c_str(); ! mkdir = _pictSpec; if(!mkdir.ChangeDirectory(levelPtr)) *************** *** 454,462 **** } - if(slash != NULL) - remainder = slash; - else - remainder = ""; - while(slash != NULL) { --- 489,492 ---- *************** *** 479,483 **** } } - *remainderPtr = remainder; return found; --- 509,512 ---- *************** *** 571,578 **** XGXMLData *data, *bestData; const char *namePtr; ! char *remainder; ! const char *val, *base; long picturesToDownload, n; ! String urlStr, baseStr, host, commonStr, rightStr, outStr, supplierTags; String linkStr, idListStr, idStr, groupIDStr, byStr; XGFileSpecifier spec; --- 600,606 ---- XGXMLData *data, *bestData; const char *namePtr; ! const char *val, *base, *boolVal; long picturesToDownload, n; ! String urlStr, baseStr, /* host, */ commonStr, rightStr, outStr, supplierTags; String linkStr, idListStr, idStr, groupIDStr, byStr; XGFileSpecifier spec; *************** *** 582,585 **** --- 610,614 ---- String tags, canonical; bool connectAbort = false; + bool useMirror; materialCmp_t cmp, bestCmp; *************** *** 631,634 **** --- 660,666 ---- baseStr.SetCString(""); + boolVal = data->GetArgValue("useMirror"); + useMirror = (boolVal != NULL && (*boolVal == 'Y' || *boolVal == 'y' || *boolVal == 'T' || *boolVal == 't')); + val = data->GetArgValue("tag"); if(val != NULL) *************** *** 657,661 **** urlStr = baseStr; urlStr += val; ! if(GetPictureSpecifier(urlStr, host, &remainder, spec)) if(!spec.Exists()) picturesToDownload++; --- 689,693 ---- urlStr = baseStr; urlStr += val; ! if(GetLocalPictureSpecifier(urlStr, spec)) if(!spec.Exists()) picturesToDownload++; *************** *** 665,670 **** if(picturesToDownload != 0) { ! String message("Downloading pictures"); ! _callback->StartProgressBar(message, picturesToDownload); for(inner = innerStart, n = 1; (inner != NULL) && (n <= picturesToDownload) && !connectAbort; inner = inner->GetSibling()) --- 697,705 ---- if(picturesToDownload != 0) { ! String message("Downloading pictures"); ! String httpTag("http://"); ! pictureResult_t result; ! String originalURLStr; ! _callback->StartProgressBar(message, picturesToDownload); for(inner = innerStart, n = 1; (inner != NULL) && (n <= picturesToDownload) && !connectAbort; inner = inner->GetSibling()) *************** *** 675,684 **** if(val != NULL) { ! urlStr = baseStr; ! urlStr += val; ! try { ! switch(LoadUpPicture(urlStr)) { case kPictureFound: --- 710,738 ---- if(val != NULL) { ! originalURLStr = baseStr; ! originalURLStr += val; try { ! if(useMirror) ! { ! String mirrorUrlStr = _mirrorSite; ! if(originalURLStr.left(httpTag.Length()) == httpTag) ! { ! String tmpStr; ! ! tmpStr = originalURLStr.right(originalURLStr.Length() - httpTag.Length()); ! mirrorUrlStr += tmpStr; ! } ! else ! mirrorUrlStr += originalURLStr; ! ! result = LoadUpPicture(mirrorUrlStr, originalURLStr); ! if(result != kPictureFound) ! result = LoadUpPicture(originalURLStr, originalURLStr); ! } ! else ! ! result = LoadUpPicture(originalURLStr, originalURLStr); ! switch(result) { case kPictureFound: *************** *** 817,821 **** XGXMLData *data; const char *namePtr; - char *remainder; const char *val; long picturesToDownload; --- 871,874 ---- *************** *** 849,853 **** urlStr = baseStr; urlStr += val; ! if(GetPictureSpecifier(urlStr, host, &remainder, spec)) if(!spec.Exists()) picturesToDownload++; --- 902,906 ---- urlStr = baseStr; urlStr += val; ! if(GetLocalPictureSpecifier(urlStr, spec)) if(!spec.Exists()) picturesToDownload++; Index: PictureSearchPlugin.h =================================================================== RCS file: /cvsroot/igarden/Garden/source/Plugins/PictureSearchPlugin.h,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -C2 -d -r1.6 -r1.6.2.1 *** PictureSearchPlugin.h 21 Jan 2006 12:53:06 -0000 1.6 --- PictureSearchPlugin.h 26 Dec 2006 02:09:56 -0000 1.6.2.1 *************** *** 75,80 **** protected: private: ! pictureResult_t LoadUpPicture(String & urlStr); ! bool GetPictureSpecifier(String & urlStr, String &host, char **remainderPtr, yaaf::XGFileSpecifier &spec); void AddSupplierXML(String &tag, yaaf::XGFileHandle &xmlOut, String &id); void GetLinkForTag(String &tag, String &link); --- 75,81 ---- protected: private: ! pictureResult_t LoadUpPicture(String & urlStr, String & originalStr); ! void GetRemotePictureSpecifier(String & urlStr, String &host, String &remainder); ! bool GetLocalPictureSpecifier(String & originalStr, yaaf::XGFileSpecifier &spec); void AddSupplierXML(String &tag, yaaf::XGFileHandle &xmlOut, String &id); void GetLinkForTag(String &tag, String &link); *************** *** 83,86 **** --- 84,88 ---- searchType_t _searchType; String _canonicalName; + String _mirrorSite; yaaf::XGXMLObject *_root; yaaf::XGDirectory _pictSpec; |