1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 23345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Use of this source code is governed by a BSD-style license that can be 33345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#ifndef NET_FTP_FTP_DIRECTORY_LISTING_PARSER_H_ 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#define NET_FTP_FTP_DIRECTORY_LISTING_PARSER_H_ 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <string> 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include <vector> 11ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/basictypes.h" 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/string16.h" 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "base/time.h" 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace net { 17c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstruct FtpDirectoryListingEntry { 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott enum Type { 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott FILE, 21c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott DIRECTORY, 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott SYMLINK, 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott }; 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen FtpDirectoryListingEntry(); 26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Type type; 28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen string16 name; // Name (UTF-16-encoded). 29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::string raw_name; // Name in original character encoding. 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott int64 size; // File size, in bytes. -1 if not applicable. 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Last modified time, in local time zone. 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott base::Time last_modified; 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Parses an FTP directory listing |text|. On success fills in |entries|. 37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Returns network error code. 38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenint ParseFtpDirectoryListing(const std::string& text, 39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen const base::Time& current_time, 40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen std::vector<FtpDirectoryListingEntry>* entries); 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} // namespace net 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#endif // NET_FTP_FTP_DIRECTORY_LISTING_PARSER_H_ 45