12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#ifndef GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ 6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#define GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/base_requests.h" 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "google_apis/drive/gdata_wapi_url_generator.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace google_apis { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ResourceEntry; 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Callback type for GetResourceEntryRequest. 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)typedef base::Callback<void(GDataErrorCode error, 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<ResourceEntry> entry)> 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetResourceEntryCallback; 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 22868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)// This class performs the request for fetching a single resource entry. 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class GetResourceEntryRequest : public UrlFetchRequestBase { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // |callback| must not be null. 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GetResourceEntryRequest(RequestSender* sender, 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GDataWapiUrlGenerator& url_generator, 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::string& resource_id, 29bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch const GURL& embed_origin, 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GetResourceEntryCallback& callback); 31868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) virtual ~GetResourceEntryRequest(); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 34868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) // UrlFetchRequestBase overrides. 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void ProcessURLFetchResults(const net::URLFetcher* source) OVERRIDE; 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void RunCallbackOnPrematureFailure(GDataErrorCode error) OVERRIDE; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual GURL GetURL() const OVERRIDE; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) void OnDataParsed(GDataErrorCode error, scoped_ptr<ResourceEntry> entry); 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const GDataWapiUrlGenerator url_generator_; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Resource id of the requested entry. 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string resource_id_; 45bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // Embed origin for an url to the sharing dialog. Can be empty. 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GURL embed_origin_; 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const GetResourceEntryCallback callback_; 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Note: This should remain the last member so it'll be destroyed and 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // invalidate its weak pointers before any other members are destroyed. 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::WeakPtrFactory<GetResourceEntryRequest> weak_ptr_factory_; 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 54868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GetResourceEntryRequest); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace google_apis 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 59a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#endif // GOOGLE_APIS_DRIVE_GDATA_WAPI_REQUESTS_H_ 60