00001 /*MT* 00002 00003 MediaTomb - http://www.mediatomb.cc/ 00004 00005 files.cc - this file is part of MediaTomb. 00006 00007 Copyright (C) 2005 Gena Batyan <bgeradz@mediatomb.cc>, 00008 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc> 00009 00010 Copyright (C) 2006-2010 Gena Batyan <bgeradz@mediatomb.cc>, 00011 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc>, 00012 Leonhard Wimmer <leo@mediatomb.cc> 00013 00014 MediaTomb is free software; you can redistribute it and/or modify 00015 it under the terms of the GNU General Public License version 2 00016 as published by the Free Software Foundation. 00017 00018 MediaTomb is distributed in the hope that it will be useful, 00019 but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 GNU General Public License for more details. 00022 00023 You should have received a copy of the GNU General Public License 00024 version 2 along with MediaTomb; if not, write to the Free Software 00025 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 00026 00027 $Id: files.cc 2081 2010-03-23 20:18:00Z lww $ 00028 */ 00029 00031 00032 #ifdef HAVE_CONFIG_H 00033 #include "autoconfig.h" 00034 #endif 00035 00036 #include "common.h" 00037 #include "pages.h" 00038 #include "tools.h" 00039 #include "storage.h" 00040 #include "filesystem.h" 00041 #include "string_converter.h" 00042 00043 using namespace zmm; 00044 using namespace mxml; 00045 00046 web::files::files() : WebRequestHandler() 00047 { 00048 } 00049 00050 void web::files::process() 00051 { 00052 check_request(); 00053 00054 String path; 00055 String parentID = param(_("parent_id")); 00056 if (! string_ok(parentID) || parentID == "0") 00057 path = _(FS_ROOT_DIRECTORY); 00058 else 00059 path = hex_decode_string(parentID); 00060 00061 Ref<Element> files(new Element(_("files"))); 00062 files->setArrayName(_("file")); 00063 files->setAttribute(_("parent_id"), parentID); 00064 files->setAttribute(_("location"), path); 00065 root->appendElementChild(files); 00066 00067 Ref<Filesystem> fs(new Filesystem()); 00068 Ref<Array<FsObject> > arr; 00069 arr = fs->readDirectory(path, FS_MASK_FILES); 00070 00071 for (int i = 0; i < arr->size(); i++) 00072 { 00073 Ref<FsObject> obj = arr->get(i); 00074 00075 Ref<Element> fe(new Element(_("file"))); 00076 String filename = obj->filename; 00077 String filepath = path + _("/") + filename; 00078 String id = hex_encode(filepath.c_str(), filepath.length()); 00079 fe->setAttribute(_("id"), id); 00080 00081 Ref<StringConverter> f2i = StringConverter::f2i(); 00082 fe->setTextKey(_("filename")); 00083 fe->setText(f2i->convert(filename)); 00084 files->appendElementChild(fe); 00085 } 00086 }
1.6.1