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 13 namespace google_apis { 14 15 class ResourceEntry; 16 17 // Callback type for GetResourceEntryRequest. 18 typedef 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. 23 class 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