Ignore local .trash, fix REST API - it mostly works

pull/40/head
Vitaliy Filippov 2015-05-17 21:05:24 +03:00
parent 2d34d7708b
commit 0bdbf87514
5 changed files with 13 additions and 12 deletions

View File

@ -42,6 +42,7 @@ Resource::Resource( const fs::path& root_folder ) :
m_name ( root_folder.string() ),
m_kind ( "folder" ),
m_id ( "folder:root" ),
m_href ( "root" ),
m_parent ( 0 ),
m_state ( sync ),
m_is_editable( true )

View File

@ -30,7 +30,7 @@ namespace gr {
using namespace details ;
ResourceTree::ResourceTree( const fs::path& rootFolder ) :
m_root( new Resource( rootFolder ) )
m_root( new Resource( rootFolder ) )
{
m_set.insert( m_root ) ;
}

View File

@ -61,7 +61,7 @@ void State::FromLocal( const fs::path& p )
bool State::IsIgnore( const std::string& filename )
{
return filename == ".grive" || filename == ".grive_state";
return filename == ".grive" || filename == ".grive_state" || filename == ".trash";
}
void State::FromLocal( const fs::path& p, Resource* folder )
@ -135,9 +135,7 @@ void State::FromRemote( const Entry& e )
FromChange( e ) ;
else if ( !Update( e ) )
{
m_unresolved.push_back( e ) ;
}
}
void State::ResolveEntry()

View File

@ -72,8 +72,8 @@ void Entry1::Update( const xml::Node& n )
for ( xml::NodeSet::iterator i = parents.begin() ; i != parents.end() ; ++i )
{
std::string href = (*i)["@href"];
if ( href == root_href ) // API-independent root href is empty!
href = "";
if ( href == root_href )
href = "root"; // API-independent root href
m_parent_hrefs.push_back( href ) ;
}

View File

@ -57,26 +57,28 @@ void Entry2::Update( const Val& item )
m_etag = file["etag"] ;
Val fn;
m_filename = file.Get( "originalFilename", fn ) ? fn.Str() : std::string();
m_content_src = file["downloadUrl"] ;
m_self_href = file["selfLink"] ;
m_mtime = DateTime( file["modifiedDate"] ) ;
m_resource_id = file["id"];
m_md5 = file["md5Checksum"] ;
m_is_dir = file["mimeType"].Str() == mime_types::folder ;
m_is_editable = file["editable"].Bool() ;
m_is_removed = file["labels"]["trashed"].Bool() ;
if ( !m_is_dir )
{
m_md5 = file["md5Checksum"] ;
m_content_src = file["downloadUrl"] ;
// convert to lower case for easy comparison
std::transform( m_md5.begin(), m_md5.end(), m_md5.begin(), tolower ) ;
}
m_parent_hrefs.clear( ) ;
Val::Array parents = file["parents"].AsArray() ;
for ( Val::Array::iterator i = parents.begin() ; i != parents.end() ; ++i )
{
m_parent_hrefs.push_back( (*i)["isRoot"].Bool() ? std::string() : (*i)["parentLink"] ) ; // maybe .id?
m_parent_hrefs.push_back( (*i)["isRoot"].Bool() ? std::string( "root" ) : (*i)["parentLink"] ) ;
}
// convert to lower case for easy comparison
std::transform( m_md5.begin(), m_md5.end(), m_md5.begin(), tolower ) ;
}
}