summaryrefslogtreecommitdiffstats
path: root/chrome/browser/parsers/metadata_parser_filebase.cc
diff options
context:
space:
mode:
authorbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-23 23:18:12 +0000
committerbrettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-23 23:18:12 +0000
commitfa89702052f10d610859e2d724a7262743fe7418 (patch)
tree8a3671e7dd6924bb181cdfbeec96a6f51232a38b /chrome/browser/parsers/metadata_parser_filebase.cc
parent0b0f60d96020eb44648869a7199520fd5b9f75e0 (diff)
downloadchromium_src-fa89702052f10d610859e2d724a7262743fe7418.zip
chromium_src-fa89702052f10d610859e2d724a7262743fe7418.tar.gz
chromium_src-fa89702052f10d610859e2d724a7262743fe7418.tar.bz2
Adding a new parsing system to the metadata url request.
BUG=none TEST=none Original review: http://codereview.chromium.org/155803 Patch by: dhg@google.com Review URL: http://codereview.chromium.org/160059 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21469 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/parsers/metadata_parser_filebase.cc')
-rw-r--r--chrome/browser/parsers/metadata_parser_filebase.cc74
1 files changed, 74 insertions, 0 deletions
diff --git a/chrome/browser/parsers/metadata_parser_filebase.cc b/chrome/browser/parsers/metadata_parser_filebase.cc
new file mode 100644
index 0000000..2d515c6
--- /dev/null
+++ b/chrome/browser/parsers/metadata_parser_filebase.cc
@@ -0,0 +1,74 @@
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <iostream>
+#include <sstream>
+
+#include "chrome/browser/parsers/metadata_parser_filebase.h"
+
+#include "base/file_util.h"
+#include "base/string_util.h"
+
+FileMetadataParser::FileMetadataParser(const FilePath& path)
+ : MetadataParser(path){
+ path_ = path;
+}
+
+bool FileMetadataParser::Parse() {
+ std::string value;
+ int64 size;
+ if (file_util::GetFileSize(path_, &size)) {
+ properties_[MetadataParser::kPropertyFilesize] = Int64ToString(size);
+ }
+#if defined(OS_WIN)
+ value = WideToUTF8(path_.BaseName().value());
+ properties_[MetadataParser::kPropertyTitle] = value;
+#elif defined(OS_POSIX)
+ properties_[MetadataParser::kPropertyTitle] = path_.BaseName().value();
+#endif
+ return true;
+}
+
+bool FileMetadataParser::GetProperty(const std::string&key,
+ std::string* value) {
+ PropertyMap::iterator it = properties_.find(key.c_str());
+ if (it == properties_.end()) {
+ return false;
+ }
+
+ *value = properties_[key.c_str()];
+ return true;
+}
+
+MetadataPropertyIterator* FileMetadataParser::GetPropertyIterator() {
+ return new FileMetadataPropertyIterator(properties_);
+}
+
+FileMetadataPropertyIterator::FileMetadataPropertyIterator(
+ PropertyMap& properties): properties_(properties){
+ it = properties_.begin();
+}
+
+bool FileMetadataPropertyIterator::GetNext(std::string* key,
+ std::string* value) {
+ if (it == properties_.end()) {
+ return false;
+ }
+ *key = it->first;
+ *value = it->second;
+ it++;
+ return true;
+}
+
+int FileMetadataPropertyIterator::Length() {
+ return properties_.size();
+}
+
+bool FileMetadataPropertyIterator::IsEnd() {
+ if (it == properties_.end()) {
+ return true;
+ } else {
+ return false;
+ }
+}