diff options
author | Max Kellermann <max@duempel.org> | 2015-08-06 22:10:25 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2015-08-12 08:41:05 +0200 |
commit | 7652a2986b0d0ad55b2776685130f1c68d7108c7 (patch) | |
tree | b4d45e60e97757454f1ff8e4dc793a1e7d852c36 /src/SongPrint.cxx | |
parent | b1480167be487d09ff46bb86ad02041fb28acff1 (diff) |
client/Response: new Client wrapper class for writing responses
Diffstat (limited to 'src/SongPrint.cxx')
-rw-r--r-- | src/SongPrint.cxx | 87 |
1 files changed, 47 insertions, 40 deletions
diff --git a/src/SongPrint.cxx b/src/SongPrint.cxx index 9d10d690a..804920f9b 100644 --- a/src/SongPrint.cxx +++ b/src/SongPrint.cxx @@ -20,18 +20,20 @@ #include "config.h" #include "SongPrint.hxx" #include "db/LightSong.hxx" +#include "Partition.hxx" +#include "Instance.hxx" #include "storage/StorageInterface.hxx" #include "DetachedSong.hxx" #include "TimePrint.hxx" #include "TagPrint.hxx" -#include "client/Client.hxx" +#include "client/Response.hxx" #include "fs/Traits.hxx" #include "util/UriUtil.hxx" #define SONG_FILE "file: " static void -song_print_uri(Client &client, const char *uri, bool base) +song_print_uri(Response &r, Partition &partition, const char *uri, bool base) { std::string allocated; @@ -39,12 +41,14 @@ song_print_uri(Client &client, const char *uri, bool base) uri = PathTraitsUTF8::GetBase(uri); } else { #ifdef ENABLE_DATABASE - const Storage *storage = client.GetStorage(); + const Storage *storage = partition.instance.storage; if (storage != nullptr) { const char *suffix = storage->MapToRelativeUTF8(uri); if (suffix != nullptr) uri = suffix; } +#else + (void)partition; #endif allocated = uri_remove_auth(uri); @@ -52,78 +56,81 @@ song_print_uri(Client &client, const char *uri, bool base) uri = allocated.c_str(); } - client_printf(client, SONG_FILE "%s\n", uri); + r.Format(SONG_FILE "%s\n", uri); } void -song_print_uri(Client &client, const LightSong &song, bool base) +song_print_uri(Response &r, Partition &partition, + const LightSong &song, bool base) { - if (!base && song.directory != nullptr) { - client_printf(client, SONG_FILE "%s/%s\n", - song.directory, song.uri); - } else - song_print_uri(client, song.uri, base); + if (!base && song.directory != nullptr) + r.Format(SONG_FILE "%s/%s\n", song.directory, song.uri); + else + song_print_uri(r, partition, song.uri, base); } void -song_print_uri(Client &client, const DetachedSong &song, bool base) +song_print_uri(Response &r, Partition &partition, + const DetachedSong &song, bool base) { - song_print_uri(client, song.GetURI(), base); + song_print_uri(r, partition, song.GetURI(), base); } void -song_print_info(Client &client, const LightSong &song, bool base) +song_print_info(Response &r, Partition &partition, + const LightSong &song, bool base) { - song_print_uri(client, song, base); + song_print_uri(r, partition, song, base); const unsigned start_ms = song.start_time.ToMS(); const unsigned end_ms = song.end_time.ToMS(); if (end_ms > 0) - client_printf(client, "Range: %u.%03u-%u.%03u\n", - start_ms / 1000, - start_ms % 1000, - end_ms / 1000, - end_ms % 1000); + r.Format("Range: %u.%03u-%u.%03u\n", + start_ms / 1000, + start_ms % 1000, + end_ms / 1000, + end_ms % 1000); else if (start_ms > 0) - client_printf(client, "Range: %u.%03u-\n", - start_ms / 1000, - start_ms % 1000); + r.Format("Range: %u.%03u-\n", + start_ms / 1000, + start_ms % 1000); if (song.mtime > 0) - time_print(client, "Last-Modified", song.mtime); + time_print(r, "Last-Modified", song.mtime); - tag_print(client, *song.tag); + tag_print(r, *song.tag); } void -song_print_info(Client &client, const DetachedSong &song, bool base) +song_print_info(Response &r, Partition &partition, + const DetachedSong &song, bool base) { - song_print_uri(client, song, base); + song_print_uri(r, partition, song, base); const unsigned start_ms = song.GetStartTime().ToMS(); const unsigned end_ms = song.GetEndTime().ToMS(); if (end_ms > 0) - client_printf(client, "Range: %u.%03u-%u.%03u\n", - start_ms / 1000, - start_ms % 1000, - end_ms / 1000, - end_ms % 1000); + r.Format("Range: %u.%03u-%u.%03u\n", + start_ms / 1000, + start_ms % 1000, + end_ms / 1000, + end_ms % 1000); else if (start_ms > 0) - client_printf(client, "Range: %u.%03u-\n", - start_ms / 1000, - start_ms % 1000); + r.Format("Range: %u.%03u-\n", + start_ms / 1000, + start_ms % 1000); if (song.GetLastModified() > 0) - time_print(client, "Last-Modified", song.GetLastModified()); + time_print(r, "Last-Modified", song.GetLastModified()); - tag_print_values(client, song.GetTag()); + tag_print_values(r, song.GetTag()); const auto duration = song.GetDuration(); if (!duration.IsNegative()) - client_printf(client, "Time: %i\n" - "duration: %1.3f\n", - duration.RoundS(), - duration.ToDoubleS()); + r.Format("Time: %i\n" + "duration: %1.3f\n", + duration.RoundS(), + duration.ToDoubleS()); } |