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 GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ 6#define GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ 7 8#include <string> 9 10#include "google_apis/drive/base_requests.h" 11#include "google_apis/drive/gdata_wapi_url_generator.h" 12 13namespace google_apis { 14 15class ResourceEntry; 16 17// Callback type for GetResourceEntryRequest. 18typedef base::Callback<void(GDataErrorCode error, 19 scoped_ptr<ResourceEntry> entry)> 20 GetResourceEntryCallback; 21 22// This class performs the request for fetching a single resource entry. 23class GetResourceEntryRequest : public UrlFetchRequestBase { 24 public: 25 // |callback| must not be null. 26 GetResourceEntryRequest(RequestSender* sender, 27 const GDataWapiUrlGenerator& url_generator, 28 const std::string& resource_id, 29 const GURL& embed_origin, 30 const GetResourceEntryCallback& callback); 31 virtual ~GetResourceEntryRequest(); 32 33 protected: 34 // UrlFetchRequestBase overrides. 35 virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; 36 virtual void RunCallbackOnPrematureFailure(GDataErrorCode error) OVERRIDE; 37 virtual GURL GetURL() const OVERRIDE; 38 39 private: 40 void OnDataParsed(GDataErrorCode error, scoped_ptr<ResourceEntry> entry); 41 42 const GDataWapiUrlGenerator url_generator_; 43 // Resource id of the requested entry. 44 const std::string resource_id_; 45 // Embed origin for an url to the sharing dialog. Can be empty. 46 GURL embed_origin_; 47 48 const GetResourceEntryCallback callback_; 49 50 // Note: This should remain the last member so it'll be destroyed and 51 // invalidate its weak pointers before any other members are destroyed. 52 base::WeakPtrFactory<GetResourceEntryRequest> weak_ptr_factory_; 53 54 DISALLOW_COPY_AND_ASSIGN(GetResourceEntryRequest); 55}; 56 57} // namespace google_apis 58 59#endif // GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ 60