// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef REMOTING_HOST_SETUP_OAUTH_HELPER_H
#define REMOTING_HOST_SETUP_OAUTH_HELPER_H

#include <string>

namespace remoting {

// Gets the OAuth scope of the host's refresh token.
std::string GetOauthScope();

// Gets the default redirect URL for the OAuth dance.
std::string GetDefaultOauthRedirectUrl();

// Gets a URL at which the OAuth dance starts.
std::string GetOauthStartUrl(const std::string& redirect_url);

// Returns the OAuth authorization code embedded in a URL, or the empty string
// if there is no such code.
// To get an OAuth authorization code, (i) start a browser, (ii) navigate it
// to |GetOauthStartUrl()|, (iii) ask the user to sign on to their account,
// and grant the requested permissions, (iv) monitor the URLs that the browser
// shows, passing each one to |GetOauthCodeInUrl()|, until that function returns
// a non-empty string. That string is the authorization code.
std::string GetOauthCodeInUrl(const std::string& url,
                              const std::string& redirect_url);

}  // namespace remoting

#endif  // REMOTING_HOST_SETUP_OAUTH_HELPER_H