Home | History | Annotate | Download | only in drive
      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