- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / google_apis / gdata_contacts_requests.h
1 // Copyright (c) 2012 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 CHROME_BROWSER_GOOGLE_APIS_GDATA_CONTACTS_REQUESTS_H_
6 #define CHROME_BROWSER_GOOGLE_APIS_GDATA_CONTACTS_REQUESTS_H_
7
8 #include <string>
9
10 #include "chrome/browser/google_apis/base_requests.h"
11
12 namespace google_apis {
13
14 //========================== GetContactGroupsRequest =========================
15
16 // This class fetches a JSON feed containing a user's contact groups.
17 class GetContactGroupsRequest : public GetDataRequest {
18  public:
19   GetContactGroupsRequest(RequestSender* runner,
20                           const GetDataCallback& callback);
21   virtual ~GetContactGroupsRequest();
22
23   void set_feed_url_for_testing(const GURL& url) {
24     feed_url_for_testing_ = url;
25   }
26
27  protected:
28   // Overridden from GetDataRequest.
29   virtual GURL GetURL() const OVERRIDE;
30
31  private:
32   // If non-empty, URL of the feed to fetch.
33   GURL feed_url_for_testing_;
34
35   DISALLOW_COPY_AND_ASSIGN(GetContactGroupsRequest);
36 };
37
38 //============================ GetContactsRequest ============================
39
40 // This class fetches a JSON feed containing a user's contacts.
41 class GetContactsRequest : public GetDataRequest {
42  public:
43   GetContactsRequest(RequestSender* runner,
44                      const std::string& group_id,
45                      const base::Time& min_update_time,
46                      const GetDataCallback& callback);
47   virtual ~GetContactsRequest();
48
49   void set_feed_url_for_testing(const GURL& url) {
50     feed_url_for_testing_ = url;
51   }
52
53  protected:
54   // Overridden from GetDataRequest.
55   virtual GURL GetURL() const OVERRIDE;
56
57  private:
58   // If non-empty, URL of the feed to fetch.
59   GURL feed_url_for_testing_;
60
61   // If non-empty, contains the ID of the group whose contacts should be
62   // returned.  Group IDs generally look like this:
63   // http://www.google.com/m8/feeds/groups/user%40gmail.com/base/6
64   std::string group_id_;
65
66   // If is_null() is false, contains a minimum last-updated time that will be
67   // used to filter contacts.
68   base::Time min_update_time_;
69
70   DISALLOW_COPY_AND_ASSIGN(GetContactsRequest);
71 };
72
73 //========================== GetContactPhotoRequest ==========================
74
75 // This class fetches a contact's photo.
76 class GetContactPhotoRequest : public UrlFetchRequestBase {
77  public:
78   GetContactPhotoRequest(RequestSender* runner,
79                          const GURL& photo_url,
80                          const GetContentCallback& callback);
81   virtual ~GetContactPhotoRequest();
82
83  protected:
84   // Overridden from UrlFetchRequestBase.
85   virtual GURL GetURL() const OVERRIDE;
86   virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE;
87   virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE;
88
89  private:
90   // Location of the photo to fetch.
91   GURL photo_url_;
92
93   // Callback to which the photo data is passed.
94   GetContentCallback callback_;
95
96   DISALLOW_COPY_AND_ASSIGN(GetContactPhotoRequest);
97 };
98
99 }  // namespace google_apis
100
101 #endif  // CHROME_BROWSER_GOOGLE_APIS_GDATA_CONTACTS_REQUESTS_H_