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#ifndef CLOUD_PRINT_GCP20_PROTOTYPE_CLOUD_PRINT_RESPONSE_PARSER_H_
6#define CLOUD_PRINT_GCP20_PROTOTYPE_CLOUD_PRINT_RESPONSE_PARSER_H_
7
8#include <string>
9#include <vector>
10
11#include "base/callback.h"
12#include "base/time/time.h"
13#include "cloud_print/gcp20/prototype/local_settings.h"
14
15namespace base {
16
17class DictionaryValue;
18
19}  // namespace base
20
21namespace cloud_print_response_parser {
22
23struct Job {
24  Job();
25  ~Job();
26
27  std::string job_id;
28  base::Time create_time;
29  std::string file_url;
30  std::string ticket_url;
31  std::string title;
32
33  // Downloaded data:
34  std::string file;
35  std::string ticket;
36};
37
38// Parses CloudPrint register start response to out parameters.
39// Returns |true| on success.
40bool ParseRegisterStartResponse(const std::string& response,
41                                std::string* error_description,
42                                std::string* polling_url,
43                                std::string* registration_token,
44                                std::string* complete_invite_url,
45                                std::string* device_id);
46
47// Parses CloudPrint register complete response to out parameters.
48// Returns |true| on success.
49bool ParseRegisterCompleteResponse(const std::string& response,
50                                   std::string* error_description,
51                                   std::string* authorization_code,
52                                   std::string* xmpp_jid);
53
54// Parses CloudPrint fetch response to out parameters.
55// Returns |true| on success.
56bool ParseFetchResponse(const std::string& response,
57                        std::string* error_description,
58                        std::vector<Job>* list);
59
60// Parses CloudPrint printer response to get Local Settings.
61// Returns |true| on success.
62bool ParseLocalSettingsResponse(const std::string& response,
63                                std::string* error_description,
64                                LocalSettings::State* state,
65                                LocalSettings* settings);
66
67}  // namespace cloud_print_response_parser
68
69#endif  // CLOUD_PRINT_GCP20_PROTOTYPE_CLOUD_PRINT_RESPONSE_PARSER_H_
70
71