Esempio n. 1
0
bool CDAVFile::Rename(const CURL& url, const CURL& urlnew)
{
  if (m_opened)
    return false;

  CDAVFile dav;

  CURL url2(urlnew);
  std::string strProtocol = url2.GetTranslatedProtocol();
  url2.SetProtocol(strProtocol);

  std::string strRequest = "MOVE";
  dav.SetCustomRequest(strRequest);
  dav.SetRequestHeader("Destination", url2.GetWithoutUserDetails());

  if (!dav.Execute(url))
  {
    CLog::Log(LOGERROR, "%s - Unable to rename dav resource (%s)", __FUNCTION__, url.Get().c_str());
    return false;
  }

  dav.Close();

  return true;
}
Esempio n. 2
0
bool CDAVDirectory::Remove(const CURL& url)
{
  CDAVFile dav;
  std::string strRequest = "DELETE";

  dav.SetCustomRequest(strRequest);
 
  if (!dav.Execute(url))
  {
    CLog::Log(LOGERROR, "%s - Unable to delete dav directory (%s) - %d", __FUNCTION__, url.GetRedacted().c_str(), dav.GetLastResponseCode());
    return false;
  }

  dav.Close();

  return true;
}
Esempio n. 3
0
bool CDAVDirectory::Create(const char* strPath)
{
  CDAVFile dav;
  CURL url(strPath);
  CStdString strRequest = "MKCOL";

  dav.SetCustomRequest(strRequest);
 
  if (!dav.Execute(url))
  {
    CLog::Log(LOGERROR, "%s - Unable to create dav directory (%s) - %d", __FUNCTION__, url.Get().c_str(), dav.GetLastResponseCode());
    return false;
  }

  dav.Close();

  return true;
}
Esempio n. 4
0
int CDAVFile::Stat(const CURL& url, struct __stat64* buffer)
{
  CDAVFile dav;
  std::string strRequest = "PROPFIND";
  dav.SetCustomRequest(strRequest);
  dav.SetRequestHeader("depth", 0);
  dav.SetMimeType("text/xml; charset=\"utf-8\"");

  if (buffer)
  {
    CLog::Log(LOGDEBUG, "CDAVFile::Stat - Execute STAT (%s)", url.GetRedacted().c_str());

    dav.SetPostData(
      "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"
      " <D:propfind xmlns:D=\"DAV:\">"
      "   <D:prop>"
      "     <D:resourcetype/>"
      "     <D:getcontentlength/>"
      "     <D:getlastmodified/>"
      "     <D:creationdate/>"
      "     <D:displayname/>"
      "    </D:prop>"
      "  </D:propfind>");
  }
  else
  {
    dav.SetPostData(
      "<?xml version=\"1.0\" encoding=\"utf-8\" ?>");
  }

  if (!dav.Execute(url))
  {
    if (buffer)
      CLog::Log(LOGERROR, "CDAVFile::Stat - Unable to stat resource (%s) with code %i", url.GetRedacted().c_str(), m_lastResponseCode);

    return -1;
  }

  dav.Close();

  // Iterate over all responses
  for (TiXmlNode *pChild = m_davResponse.RootElement()->FirstChild(); pChild != 0; pChild = pChild->NextSibling())
  {
    if (CDAVCommon::ValueWithoutNamespace(pChild, "response"))
    {
      if (ParseResponse(pChild->ToElement(), buffer))
        return 0;
      else
        return -1;
    }
  }

  return -1;
}
Esempio n. 5
0
bool CDAVFile::Delete(const CURL& url)
{
  if (m_opened)
    return false;

  CDAVFile dav;
  std::string strRequest = "DELETE";

  dav.SetCustomRequest(strRequest);
 
  if (!dav.Execute(url))
  {
    CLog::Log(LOGERROR, "%s - Unable to delete dav resource (%s)", __FUNCTION__, url.Get().c_str());
    return false;
  }

  dav.Close();

  return true;
}