15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef GOOGLE_APIS_GAIA_GAIA_AUTH_UTIL_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define GOOGLE_APIS_GAIA_GAIA_AUTH_UTIL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <vector>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL;
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace gaia {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Perform basic canonicalization of |email_address|, taking into account that
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// gmail does not consider '.' or caps inside a username to matter. It also
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ignores everything after a '+'. For example, c.masone+abc@gmail.com ==
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// cMaSone@gmail.com, per
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http://mail.google.com/support/bin/answer.py?hl=en&ctx=mail&answer=10313#
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string CanonicalizeEmail(const std::string& email_address);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns the canonical form of the given domain.
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string CanonicalizeDomain(const std::string& domain);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Sanitize emails. Currently, it only ensures all emails have a domain by
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// adding gmail.com if no domain is present.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string SanitizeEmail(const std::string& email_address);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Returns true if the two specified email addresses are the same.  Both
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// addresses are first sanitized and then canoncialized before comparing.
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)bool AreEmailsSame(const std::string& email1, const std::string& email2);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Extract the domain part from the canonical form of the given email.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string ExtractDomainName(const std::string& email);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool IsGaiaSignonRealm(const GURL& url);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Parses JSON data returned by /ListAccounts call, returns vector of
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// accounts (email addresses).
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)std::vector<std::string> ParseListAccountsData(const std::string& data);
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace gaia
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // GOOGLE_APIS_GAIA_GAIA_AUTH_UTIL_H_
45