// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef GOOGLE_APIS_DRIVE_GDATA_CONTACTS_REQUESTS_H_ #define GOOGLE_APIS_DRIVE_GDATA_CONTACTS_REQUESTS_H_ #include <string> #include "base/time/time.h" #include "google_apis/drive/base_requests.h" namespace google_apis { //========================== GetContactGroupsRequest ========================= // This class fetches a JSON feed containing a user's contact groups. class GetContactGroupsRequest : public GetDataRequest { public: GetContactGroupsRequest(RequestSender* runner, const GetDataCallback& callback); virtual ~GetContactGroupsRequest(); void set_feed_url_for_testing(const GURL& url) { feed_url_for_testing_ = url; } protected: // Overridden from GetDataRequest. virtual GURL GetURL() const OVERRIDE; private: // If non-empty, URL of the feed to fetch. GURL feed_url_for_testing_; DISALLOW_COPY_AND_ASSIGN(GetContactGroupsRequest); }; //============================ GetContactsRequest ============================ // This class fetches a JSON feed containing a user's contacts. class GetContactsRequest : public GetDataRequest { public: GetContactsRequest(RequestSender* runner, const std::string& group_id, const base::Time& min_update_time, const GetDataCallback& callback); virtual ~GetContactsRequest(); void set_feed_url_for_testing(const GURL& url) { feed_url_for_testing_ = url; } protected: // Overridden from GetDataRequest. virtual GURL GetURL() const OVERRIDE; private: // If non-empty, URL of the feed to fetch. GURL feed_url_for_testing_; // If non-empty, contains the ID of the group whose contacts should be // returned. Group IDs generally look like this: // http://www.google.com/m8/feeds/groups/user%40gmail.com/base/6 std::string group_id_; // If is_null() is false, contains a minimum last-updated time that will be // used to filter contacts. base::Time min_update_time_; DISALLOW_COPY_AND_ASSIGN(GetContactsRequest); }; //========================== GetContactPhotoRequest ========================== // This class fetches a contact's photo. class GetContactPhotoRequest : public UrlFetchRequestBase { public: GetContactPhotoRequest(RequestSender* runner, const GURL& photo_url, const GetContentCallback& callback); virtual ~GetContactPhotoRequest(); protected: // Overridden from UrlFetchRequestBase. virtual GURL GetURL() const OVERRIDE; virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) OVERRIDE; private: // Location of the photo to fetch. GURL photo_url_; // Callback to which the photo data is passed. GetContentCallback callback_; DISALLOW_COPY_AND_ASSIGN(GetContactPhotoRequest); }; } // namespace google_apis #endif // GOOGLE_APIS_DRIVE_GDATA_CONTACTS_REQUESTS_H_