inlib  1.2.0
Classes | Functions
inlib::web Namespace Reference

Classes

class  cache

Functions

bool wget_file (std::ostream &a_out, const std::string &a_url, const std::string &a_local, bool a_verbose=false)
bool ftp_file (std::ostream &a_out, const std::string &a_url, const std::string &a_local, bool a_verbose=false)
bool http_file (std::ostream &a_out, const std::string &a_url, const std::string &a_local, bool a_verbose=false)

Function Documentation

bool inlib::web::ftp_file ( std::ostream &  a_out,
const std::string &  a_url,
const std::string &  a_local,
bool  a_verbose = false 
) [inline]

Definition at line 85 of file web.

                                                                                                               {

  ::remove(a_local.c_str());

  std::string host;
  std::string path;
  if(!inlib::net::ftp::parse(a_url,host,path)) return false;

  if(a_verbose) {
    a_out << "inlib::ftp_file :"
          << " host " << inlib::sout(host) 
          << " path " << inlib::sout(path)
          << std::endl;
  }

  inlib::net::ftp ftp(a_out,a_verbose);
  if(!ftp.start(host,inlib::net::ftp::s_anonymous(),"")) return false;
  if(!ftp.fetch_file(path,a_local)) return false;

  if(a_verbose) {
    a_out << "inlib::ftp_file :"
          << " fetch " << sout(a_url) << " end."
          << std::endl;
  }

  return true;
}
bool inlib::web::http_file ( std::ostream &  a_out,
const std::string &  a_url,
const std::string &  a_local,
bool  a_verbose = false 
) [inline]

Definition at line 114 of file web.

                                                                                                                {

  ::remove(a_local.c_str());

  std::string host;
  std::string path;
  if(!inlib::net::http::parse(a_url,host,path)) return false;

  if(a_verbose) {
    a_out << "inlib::http_file :"
          << " host " << inlib::sout(host) 
          << " path " << inlib::sout(path)
          << std::endl;
  }

  inlib::net::http http(a_out,a_verbose);
  if(!http.start(host)) return false;
  if(!http.fetch(path,a_local)) return false;

  if(a_verbose) {
    a_out << "inlib::http_file :"
          << " fetch " << sout(a_url) << " end."
          << std::endl;
  }

  return true;
}
bool inlib::web::wget_file ( std::ostream &  a_out,
const std::string &  a_url,
const std::string &  a_local,
bool  a_verbose = false 
) [inline]

Definition at line 14 of file web.

                                                                                                               {
  std::string cmd;
  if(inlib::getenv("INLIB_WGET",cmd)) {
  } else {
#ifdef WIN32
    cmd = "C:\\cygwin\\bin\\curl.exe --silent --compressed --output";
#else
#ifdef __APPLE__
    cmd = "curl --silent --compressed --output";
#else  // Linux
    cmd = "wget -O";
#endif
#endif
  }
  std::string local;
  if(a_local.size()) {
    local = a_local;
  } else {
    local = base_name(a_url);
  }
  cmd += " ";
  cmd += local;
  cmd += " ";
  cmd += a_url;

  ::remove(local.c_str());

  if(a_verbose) {
    a_out << "inlib::wget_file :"
          << " call ::system(" << sout(cmd) << ") ..."
          << std::endl;
  }

  if(::system(cmd.c_str())==(-1)){
    a_out << "inlib::wget_file :"
          << " call to ::system(" << sout(cmd) << ") failed."
          << std::endl;
    return false;
  }

  //WARNING : the call to system(cmd) may be ok, but the command
  //          may have failed !

  if(!inlib::file::exists(local)) {
    a_out << "inlib::wget_file :"
          << " can't get " << sout(a_url) << "."
          << std::endl;
    return false;
  }

  std::vector<std::string> txt;
  if(!inlib::file::read_num(local,3,txt)) {
    a_out << "inlib::wget_file :"
          << " can't read head of " << sout(local) << "."
          << std::endl;
    ::remove(local.c_str());
    return false;
  }
  if((txt.size()>=3)&&(txt[2]=="<title>404 Not Found</title>")) {
    a_out << "inlib::wget_file :"
          << " url " << sout(a_url) << " not found."
          << std::endl;
    ::remove(local.c_str());
    return false;
  }

  //::printf("debug : curl_file : \"%s\" end\n",a_url.c_str());

  return true;
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines