// FileSystemWsClient.cxx #include "dial_ws_file/FileSystemWsClient.h" #include #include #include "dataset_util/XmlElement.h" #include "dataset_util/Text.h" #include "dataset_xml/XmlParser.h" #include "../gsoap/dial_ws_fileH.h" using std::string; using std::ostream; using std::cout; using std::cerr; using std::endl; using std::auto_ptr; using dial::FileSystemWsClient; //********************************************************************** // Local definitions. //********************************************************************** namespace { XmlParser& parser() { static XmlParser psr; return psr; } } //********************************************************************** // Methods. //********************************************************************** // Constructor. FileSystemWsClient::FileSystemWsClient(string url, bool usegsi) : DialWsClient(url, usegsi) { } //********************************************************************** FileSystemWsClient::~FileSystemWsClient() { } //********************************************************************** // File existence. bool FileSystemWsClient::exists(Name fname) const { if ( client_status() ) return false; bool exist; int sstat = soap_call_dial__file_exists(psoap(), curl(), "", fname, exist); if ( sstat != SOAP_OK ) { soap_print_fault(psoap(), stderr); return false; } return exist; } //********************************************************************** // File listing. string FileSystemWsClient::listing(Name fname) const { char* clisting; string slisting; int sstat = soap_call_dial__file_listing(psoap(), curl(), "", fname, clisting); if ( sstat != SOAP_OK ) { soap_print_fault(psoap(), stderr); return ""; } if ( clisting != 0 ) { slisting = clisting; } return slisting; } //********************************************************************** // Directory listing. FileSystemWsClient::NameList FileSystemWsClient::directory_files(Name dname) const { NameList dfiles; string sxlist; int sstat = soap_call_dial__directory_listing(psoap(), curl(), "", dname, sxlist); if ( sstat != SOAP_OK ) { soap_print_fault(psoap(), stderr); return dfiles; } auto_ptr pxlist(parser().parse(sxlist)); Text tlist(*pxlist); for ( Text::size_type iline=0; iline pxtext(parser().parse(sxtext)); Text text(*pxtext); if ( text.size() == 0 ) return 2; text.write(outname); return 0; } //**********************************************************************