OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/gdata/gdata_wapi_parser.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_wapi_parser.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
11 #include "base/json/json_value_converter.h" | 11 #include "base/json/json_value_converter.h" |
12 #include "base/memory/scoped_ptr.h" | 12 #include "base/memory/scoped_ptr.h" |
13 #include "base/string_number_conversions.h" | 13 #include "base/string_number_conversions.h" |
14 #include "base/string_piece.h" | 14 #include "base/string_piece.h" |
15 #include "base/string_util.h" | 15 #include "base/string_util.h" |
16 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/chromeos/gdata/drive_api_parser.h" | |
18 #include "chrome/browser/chromeos/gdata/gdata_util.h" | 19 #include "chrome/browser/chromeos/gdata/gdata_util.h" |
19 #include "third_party/libxml/chromium/libxml_utils.h" | 20 #include "third_party/libxml/chromium/libxml_utils.h" |
20 | 21 |
21 using base::Value; | 22 using base::Value; |
22 using base::DictionaryValue; | 23 using base::DictionaryValue; |
23 using base::ListValue; | 24 using base::ListValue; |
24 | 25 |
25 namespace gdata { | 26 namespace gdata { |
26 | 27 |
27 namespace { | 28 namespace { |
(...skipping 769 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
797 } else { | 798 } else { |
798 DVLOG(1) << "Unknown node " << xml_reader->NodeName(); | 799 DVLOG(1) << "Unknown node " << xml_reader->NodeName(); |
799 } | 800 } |
800 } while (skip_read || xml_reader->Next()); | 801 } while (skip_read || xml_reader->Next()); |
801 | 802 |
802 entry->FillRemainingFields(); | 803 entry->FillRemainingFields(); |
803 return entry; | 804 return entry; |
804 } | 805 } |
805 | 806 |
806 // static | 807 // static |
808 DocumentEntry* DocumentEntry::CreateFromFileResource(const FileResource& file) { | |
809 scoped_ptr<DocumentEntry> entry(new DocumentEntry()); | |
810 | |
811 // DocumentEntry | |
812 entry->resource_id_ = file.file_id(); | |
813 entry->id_ = file.file_id(); | |
814 entry->kind_ = file.GetKind(); | |
815 entry->title_ = UTF8ToUTF16(file.title()); | |
816 entry->published_time_ = file.created_date(); | |
817 // TODO(kochi): entry->labels_ | |
818 entry->content_.url_ = file.web_content_link(); | |
819 entry->content_.mime_type_ = file.mime_type(); | |
820 // TODO(kochi): entry->feed_links_ | |
821 | |
822 // For file entries | |
823 entry->filename_ = UTF8ToUTF16(file.title()); | |
824 entry->suggested_filename_ = UTF8ToUTF16(file.title()); | |
825 entry->file_md5_ = file.md5_checksum(); | |
826 entry->file_size_ = file.file_size(); | |
827 | |
828 entry->deleted_ = false; // later filled by CreateFromChangeResource. | |
829 entry->removed_ = false; // later filled by CreateFromChangeResource. | |
830 | |
831 // FeedEntry | |
832 entry->etag_ = file.etag(); | |
833 // entry->authors_ | |
834 // entry->links_. | |
835 if (!file.parents().empty()) { | |
836 Link* link = new Link(); | |
837 link->type_ = Link::PARENT; | |
838 link->href_ = file.parents()[0]->parent_link(); | |
839 entry->links_.push_back(link); | |
840 } | |
841 if (!file.self_link().is_empty()) { | |
842 Link* link = new Link(); | |
843 link->type_ = Link::EDIT; | |
844 link->href_ = file.self_link(); | |
845 entry->links_.push_back(link); | |
846 } | |
847 if (!file.thumbnail_link().is_empty()) { | |
848 Link* link = new Link(); | |
849 link->type_ = Link::THUMBNAIL; | |
850 link->href_ = file.thumbnail_link(); | |
851 entry->links_.push_back(link); | |
852 } | |
853 if (!file.alternate_link().is_empty()) { | |
854 Link* link = new Link(); | |
855 link->type_ = Link::ALTERNATE; | |
856 link->href_ = file.alternate_link(); | |
857 entry->links_.push_back(link); | |
858 } | |
859 if (!file.embed_link().is_empty()) { | |
860 Link* link = new Link(); | |
861 link->type_ = Link::EMBED; | |
862 link->href_ = file.embed_link(); | |
863 entry->links_.push_back(link); | |
864 } | |
865 // entry->categories_ | |
866 entry->updated_time_ = file.modified_by_me_date(); | |
867 | |
868 // TODO: Do we need this? | |
869 entry->FillRemainingFields(); | |
870 return entry.release(); | |
871 } | |
872 | |
873 // static | |
874 DocumentEntry* | |
875 DocumentEntry::CreateFromChangeResource(const ChangeResource& change) { | |
876 DocumentEntry* entry = CreateFromFileResource(change.file()); | |
877 | |
878 entry->deleted_ = change.is_deleted(); | |
879 entry->removed_ = change.is_deleted(); | |
880 | |
881 return entry; | |
882 } | |
883 | |
884 // static | |
807 std::string DocumentEntry::GetEntryNodeName() { | 885 std::string DocumentEntry::GetEntryNodeName() { |
808 return kEntryNode; | 886 return kEntryNode; |
809 } | 887 } |
810 | 888 |
811 //////////////////////////////////////////////////////////////////////////////// | 889 //////////////////////////////////////////////////////////////////////////////// |
812 // DocumentFeed implementation | 890 // DocumentFeed implementation |
813 | 891 |
814 DocumentFeed::DocumentFeed() | 892 DocumentFeed::DocumentFeed() |
815 : start_index_(0), | 893 : start_index_(0), |
816 items_per_page_(0), | 894 items_per_page_(0), |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
871 scoped_ptr<DocumentFeed> DocumentFeed::CreateFrom(const base::Value& value) { | 949 scoped_ptr<DocumentFeed> DocumentFeed::CreateFrom(const base::Value& value) { |
872 scoped_ptr<DocumentFeed> feed(new DocumentFeed()); | 950 scoped_ptr<DocumentFeed> feed(new DocumentFeed()); |
873 if (!feed->Parse(value)) { | 951 if (!feed->Parse(value)) { |
874 DVLOG(1) << "Invalid document feed!"; | 952 DVLOG(1) << "Invalid document feed!"; |
875 return scoped_ptr<DocumentFeed>(NULL); | 953 return scoped_ptr<DocumentFeed>(NULL); |
876 } | 954 } |
877 | 955 |
878 return feed.Pass(); | 956 return feed.Pass(); |
879 } | 957 } |
880 | 958 |
959 // static | |
960 scoped_ptr<DocumentFeed> DocumentFeed::CreateFromFileList( | |
satorux1
2012/08/10 18:14:34
This doesn't seem to be used.
kochi
2012/08/13 09:08:39
Removed.
| |
961 const FileList& filelist) { | |
962 scoped_ptr<DocumentFeed> feed(new DocumentFeed()); | |
963 ScopedVector<FileResource>::const_iterator iter = filelist.items().begin(); | |
964 while (iter != filelist.items().end()) { | |
965 feed->entries_.push_back(DocumentEntry::CreateFromFileResource(**iter)); | |
966 ++iter; | |
967 } | |
968 return feed.Pass(); | |
969 } | |
970 | |
971 // static | |
972 scoped_ptr<DocumentFeed> DocumentFeed::CreateFromChangeList( | |
973 const ChangeList& changelist) { | |
974 scoped_ptr<DocumentFeed> feed(new DocumentFeed()); | |
975 int64 largest_changestamp = 0; | |
976 ScopedVector<ChangeResource>::const_iterator iter = | |
977 changelist.items().begin(); | |
978 while (iter != changelist.items().end()) { | |
979 const FileResource& file = (*iter)->file(); | |
980 largest_changestamp = std::max(largest_changestamp, (*iter)->change_id()); | |
981 feed->entries_.push_back(DocumentEntry::CreateFromFileResource(file)); | |
982 ++iter; | |
983 } | |
984 feed->largest_changestamp_ = largest_changestamp; | |
985 return feed.Pass(); | |
986 } | |
987 | |
881 bool DocumentFeed::GetNextFeedURL(GURL* url) { | 988 bool DocumentFeed::GetNextFeedURL(GURL* url) { |
882 DCHECK(url); | 989 DCHECK(url); |
883 for (size_t i = 0; i < links_.size(); ++i) { | 990 for (size_t i = 0; i < links_.size(); ++i) { |
884 if (links_[i]->type() == Link::NEXT) { | 991 if (links_[i]->type() == Link::NEXT) { |
885 *url = links_[i]->href(); | 992 *url = links_[i]->href(); |
886 return true; | 993 return true; |
887 } | 994 } |
888 } | 995 } |
889 return false; | 996 return false; |
890 } | 997 } |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1021 bool AccountMetadataFeed::Parse(const base::Value& value) { | 1128 bool AccountMetadataFeed::Parse(const base::Value& value) { |
1022 base::JSONValueConverter<AccountMetadataFeed> converter; | 1129 base::JSONValueConverter<AccountMetadataFeed> converter; |
1023 if (!converter.Convert(value, this)) { | 1130 if (!converter.Convert(value, this)) { |
1024 LOG(ERROR) << "Unable to parse: Invalid account metadata feed!"; | 1131 LOG(ERROR) << "Unable to parse: Invalid account metadata feed!"; |
1025 return false; | 1132 return false; |
1026 } | 1133 } |
1027 return true; | 1134 return true; |
1028 } | 1135 } |
1029 | 1136 |
1030 } // namespace gdata | 1137 } // namespace gdata |
OLD | NEW |