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)#include "jingle/notifier/base/notifier_options_util.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/base/const_communicator.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "jingle/notifier/base/notifier_options.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "talk/xmpp/constants.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "talk/xmpp/jid.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace notifier {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)buzz::XmppClientSettings MakeXmppClientSettings(
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NotifierOptions& notifier_options,
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& email, const std::string& token) {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buzz::Jid jid = buzz::Jid(email);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(!jid.node().empty());
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(jid.IsValid());
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  buzz::XmppClientSettings xmpp_client_settings;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  xmpp_client_settings.set_user(jid.node());
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  xmpp_client_settings.set_resource("chrome-sync");
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  xmpp_client_settings.set_host(jid.domain());
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  xmpp_client_settings.set_use_tls(buzz::TLS_ENABLED);
277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  xmpp_client_settings.set_auth_token(notifier_options.auth_mechanism,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      notifier_options.invalidate_xmpp_login ?
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      token + "bogus" : token);
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (notifier_options.auth_mechanism == buzz::AUTH_MECHANISM_OAUTH2)
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    xmpp_client_settings.set_token_service("oauth2");
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  else
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    xmpp_client_settings.set_token_service("chromiumsync");
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (notifier_options.allow_insecure_connection) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmpp_client_settings.set_allow_plain(true);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmpp_client_settings.set_use_tls(buzz::TLS_DISABLED);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return xmpp_client_settings;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ServerList GetServerList(
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const NotifierOptions& notifier_options) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ServerList servers;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Override the default servers with a test notification server if one was
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // provided.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!notifier_options.xmpp_host_port.host().empty()) {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    servers.push_back(
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ServerInformation(notifier_options.xmpp_host_port,
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          DOES_NOT_SUPPORT_SSLTCP));
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // The default servers support SSLTCP.
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    servers.push_back(
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ServerInformation(
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            net::HostPortPair("talk.google.com",
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              notifier::kDefaultXmppPort),
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            SUPPORTS_SSLTCP));
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    servers.push_back(
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ServerInformation(
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            net::HostPortPair("talkx.l.google.com",
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              notifier::kDefaultXmppPort),
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            SUPPORTS_SSLTCP));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return servers;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace notifier
67