Commit b3c66eeb authored by tzik@chromium.org's avatar tzik@chromium.org

[Drive] Add converter from ResourceEntry to FileResource

BUG=240165

Review URL: https://chromiumcodereview.appspot.com/23437026

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@222006 0039d316-1c4b-4281-b951-d872f2087c98
parent bd8c43e3
......@@ -14,6 +14,7 @@
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/drive/drive_switches.h"
#include "chrome/browser/google_apis/drive_api_parser.h"
#include "chrome/browser/google_apis/gdata_wapi_parser.h"
#include "content/public/browser/browser_thread.h"
#include "net/base/escape.h"
......@@ -157,6 +158,70 @@ void ParseShareUrlAndRun(const google_apis::GetShareUrlCallback& callback,
callback.Run(error, share_link ? share_link->href() : GURL());
}
scoped_ptr<google_apis::FileResource> ConvertResourceEntryToFileResource(
const google_apis::ResourceEntry& entry) {
scoped_ptr<google_apis::FileResource> file(new google_apis::FileResource);
file->set_file_id(entry.resource_id());
file->set_title(entry.title());
file->set_created_date(entry.published_time());
if (std::find(entry.labels().begin(), entry.labels().end(),
"shared-with-me") == entry.labels().end()) {
// Set current time to mark the file is shared_with_me, since ResourceEntry
// doesn't have |shared_with_me_date| equivalent.
file->set_shared_with_me_date(base::Time::Now());
}
file->set_download_url(entry.download_url());
file->set_mime_type(entry.content_mime_type());
file->set_md5_checksum(entry.file_md5());
file->set_file_size(entry.file_size());
file->mutable_labels()->set_trashed(entry.deleted());
file->set_etag(entry.etag());
ScopedVector<google_apis::ParentReference> parents;
for (size_t i = 0; i < entry.links().size(); ++i) {
using google_apis::Link;
const Link& link = *entry.links()[i];
switch (link.type()) {
case Link::LINK_PARENT: {
scoped_ptr<google_apis::ParentReference> parent(
new google_apis::ParentReference);
parent->set_parent_link(link.href());
std::string file_id =
drive::util::ExtractResourceIdFromUrl(link.href());
parent->set_is_root(file_id == kWapiRootDirectoryResourceId);
parents.push_back(parent.release());
break;
}
case Link::LINK_EDIT:
file->set_self_link(link.href());
break;
case Link::LINK_THUMBNAIL:
file->set_thumbnail_link(link.href());
break;
case Link::LINK_ALTERNATE:
file->set_alternate_link(link.href());
break;
case Link::LINK_EMBED:
file->set_embed_link(link.href());
break;
default:
break;
}
}
file->set_parents(parents.Pass());
file->set_modified_date(entry.updated_time());
file->set_last_viewed_by_me_date(entry.last_viewed_time());
return file.Pass();
}
const char kWapiRootDirectoryResourceId[] = "folder:root";
} // namespace util
......
......@@ -17,6 +17,11 @@ namespace base {
class Value;
} // namespace base
namespace google_apis {
class FileResource;
class ResourceEntry;
} // namespace google_apis
namespace drive {
namespace util {
......@@ -62,6 +67,10 @@ void ParseShareUrlAndRun(const google_apis::GetShareUrlCallback& callback,
google_apis::GDataErrorCode error,
scoped_ptr<base::Value> value);
// Converts ResourceEntry to FileResource.
scoped_ptr<google_apis::FileResource>
ConvertResourceEntryToFileResource(const google_apis::ResourceEntry& entry);
// The resource ID for the root directory for WAPI is defined in the spec:
// https://developers.google.com/google-apps/documents-list/
extern const char kWapiRootDirectoryResourceId[];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment