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