diff --git a/grive/src/main.cc b/grive/src/main.cc index d791190..c8ccf0e 100644 --- a/grive/src/main.cc +++ b/grive/src/main.cc @@ -52,7 +52,6 @@ const std::string default_id = APP_ID ; const std::string default_secret = APP_SECRET ; -const std::string default_redirect_uri = "http://localhost:9898" ; using namespace gr ; namespace po = boost::program_options; @@ -110,7 +109,7 @@ void InitLog( const po::variables_map& vm ) } // AuthCode reads an authorization code from the "code" query parameter passed -// via client-side redirect to the redirect_uri specified in uri +// via client-side redirect to the redirect uri specified in uri std::string AuthCode( std::string uri ) { // Set up an HTTP listener that is waiting for Google @@ -249,9 +248,7 @@ int Main( int argc, char **argv ) std::string secret = vm.count( "secret" ) > 0 ? vm["secret"].as() : default_secret ; - std::string redirect_uri = vm.count( "redirect-uri" ) > 0 - ? vm["redirect-uri"].as() - : default_redirect_uri ; + std::string redirect_uri = config.Get("redirect-uri").Str(); OAuth2 token( http.get(), id, secret, redirect_uri ) ; @@ -274,7 +271,7 @@ int Main( int argc, char **argv ) config.Set( "id", Val( id ) ) ; config.Set( "secret", Val( secret ) ) ; config.Set( "refresh_token", Val( token.RefreshToken() ) ) ; - config.Set( "redirect_uri", Val( redirect_uri ) ) ; + config.Set( "redirect-uri", Val( redirect_uri ) ) ; config.Save() ; } @@ -287,7 +284,7 @@ int Main( int argc, char **argv ) refresh_token = config.Get("refresh_token").Str() ; id = config.Get("id").Str() ; secret = config.Get("secret").Str() ; - redirect_uri = config.Get("redirect_uri").Str() ; + redirect_uri = config.Get("redirect-uri").Str() ; } catch ( Exception& e ) { diff --git a/libgrive/src/util/Config.cc b/libgrive/src/util/Config.cc index 261de6e..870b6f8 100644 --- a/libgrive/src/util/Config.cc +++ b/libgrive/src/util/Config.cc @@ -32,9 +32,10 @@ namespace po = boost::program_options; namespace gr { -const std::string default_filename = ".grive"; -const char *env_name = "GR_CONFIG"; -const std::string default_root_folder = "."; +const char *env_name = "GR_CONFIG"; +const std::string default_filename = ".grive"; +const std::string default_root_folder = "."; +const std::string default_redirect_uri = "http://localhost:9898" ; Config::Config( const po::variables_map& vm ) { @@ -47,8 +48,6 @@ Config::Config( const po::variables_map& vm ) m_cmd.Add( "path", Val(vm.count("path") > 0 ? vm["path"].as() : default_root_folder ) ) ; - if ( vm.count( "redirect_uri" ) > 0 ) - m_cmd.Add( "redirect_uri", Val( vm["redirect_uri"].as() ) ) ; m_cmd.Add( "dir", Val(vm.count("dir") > 0 ? vm["dir"].as() : "" ) ) ; @@ -60,6 +59,14 @@ Config::Config( const po::variables_map& vm ) m_path = GetPath( fs::path(m_cmd["path"].Str()) ) ; m_file = Read( ) ; + + if ( vm.count( "redirect-uri" ) > 0 ) { + m_cmd.Add( "redirect-uri", Val( vm["redirect-uri"].as() ) ); + } else if (m_file.Has( "redirect-uri" )) { + ; + } else { + m_cmd.Add( "redirect-uri", Val( default_redirect_uri ) ); + } } fs::path Config::GetPath( const fs::path& root_path ) @@ -86,7 +93,7 @@ void Config::Save( ) void Config::Set( const std::string& key, const Val& value ) { - m_file.Add( key, value ) ; + m_file.Set( key, value ) ; } Val Config::Get( const std::string& key ) const