blob: d769e5e42fe72866b57c38add2de94e6e9b684e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#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);
}
|