#include "http_json.h" #include "json.h" #include "music.h" void HTTP::JSON::operator()(Connection::p connection) { std::string directory; if(connection->args.find("directory") != connection->args.end()) { directory = connection->args["directory"]; } else { directory = "/"; } ::JSON::Array results; MusicDirectory::p dir = music::get_directory(directory); for(MusicDirectory::PathListings::iterator it = dir->directories.begin(); it != dir->directories.end(); it++) { ::JSON::Object obj; obj["type"] = std::string("dir"); // relative path obj["name"] = it->string().substr(music::root_directory.string().size()); results.push_back(obj); } for(MusicDirectory::PathListings::iterator it = dir->tracks.begin(); it != dir->tracks.end(); it++) { ::JSON::Object obj; obj["type"] = std::string("file"); obj["name"] = it->string().substr(music::root_directory.string().size()); obj["size"] = (int)fs::file_size(*it); results.push_back(obj); } std::stringstream ss; ss << results; connection->send_data(ss); }