privet_confirm_api_flow.cc revision 58537e28ecd584eab876aee8be7156509866d23a
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/values.h"
6#include "chrome/browser/local_discovery/cloud_print_base_api_flow.h"
7#include "chrome/browser/local_discovery/privet_confirm_api_flow.h"
8#include "chrome/common/cloud_print/cloud_print_constants.h"
9
10namespace local_discovery {
11
12PrivetConfirmApiCallFlow::PrivetConfirmApiCallFlow(
13    net::URLRequestContextGetter* request_context,
14    OAuth2TokenService* token_service,
15    const GURL& automated_claim_url,
16    const ResponseCallback& callback)
17    : flow_(request_context,
18            token_service,
19            automated_claim_url,
20            this),
21      callback_(callback) {
22}
23
24PrivetConfirmApiCallFlow::PrivetConfirmApiCallFlow(
25    net::URLRequestContextGetter* request_context,
26    int  user_index,
27    const std::string& xsrf_token,
28    const GURL& automated_claim_url,
29    const ResponseCallback& callback)
30    : flow_(request_context,
31            user_index,
32            xsrf_token,
33            automated_claim_url,
34            this),
35      callback_(callback) {
36}
37
38PrivetConfirmApiCallFlow::~PrivetConfirmApiCallFlow() {
39}
40
41void PrivetConfirmApiCallFlow::Start() {
42  flow_.Start();
43}
44
45void PrivetConfirmApiCallFlow::OnCloudPrintAPIFlowError(
46    CloudPrintBaseApiFlow* flow,
47    CloudPrintBaseApiFlow::Status status) {
48  callback_.Run(status);
49}
50
51void PrivetConfirmApiCallFlow::OnCloudPrintAPIFlowComplete(
52    CloudPrintBaseApiFlow* flow,
53    const base::DictionaryValue* value) {
54  bool success = false;
55
56  if (!value->GetBoolean(cloud_print::kSuccessValue, &success)) {
57    callback_.Run(CloudPrintBaseApiFlow::ERROR_MALFORMED_RESPONSE);
58    return;
59  }
60
61  if (success) {
62    callback_.Run(CloudPrintBaseApiFlow::SUCCESS);
63  } else {
64    callback_.Run(CloudPrintBaseApiFlow::ERROR_FROM_SERVER);
65  }
66}
67
68}  // namespace local_discovery
69