diff --git a/src/database/Artist.cpp b/src/database/Artist.cpp index 01a39ae7..f130c5a5 100644 --- a/src/database/Artist.cpp +++ b/src/database/Artist.cpp @@ -85,7 +85,7 @@ Artist::getByFilter(Wt::Dbo::Session& session, SearchFilter filter, int offset, } std::vector > -Artist::getReleases() +Artist::getReleases() const { assert(self()); assert(self()->id() != Wt::Dbo::dbo_traits::invalidId() ); diff --git a/src/database/Artist.hpp b/src/database/Artist.hpp index fe46880c..e73bf58d 100644 --- a/src/database/Artist.hpp +++ b/src/database/Artist.hpp @@ -60,7 +60,7 @@ class Artist : public Wt::Dbo::Dbo std::string getMBID(void) const { return _MBID; } // Get the releases that have at least one track for this artist - std::vector > getReleases(); + std::vector > getReleases() const; void setMBID(std::string mbid) { _MBID = mbid; } diff --git a/src/database/Release.cpp b/src/database/Release.cpp index b5b7b490..5ef5415a 100644 --- a/src/database/Release.cpp +++ b/src/database/Release.cpp @@ -130,7 +130,7 @@ Release::getByFilter(Wt::Dbo::Session& session, SearchFilter filter, int offset, } std::vector< Wt::Dbo::ptr > -Release::getArtists() +Release::getArtists() const { assert(self()); assert(self()->id() != Wt::Dbo::dbo_traits::invalidId() ); diff --git a/src/database/Release.hpp b/src/database/Release.hpp index 607496c4..0bb779d0 100644 --- a/src/database/Release.hpp +++ b/src/database/Release.hpp @@ -65,8 +65,8 @@ class Release : public Wt::Dbo::Dbo std::string getMBID() const { return _MBID; } bool isNone(void) const; boost::posix_time::time_duration getDuration(void) const; - std::vector > getArtists(); // Get the artists of this release - std::vector > getTracks(); // Get the tracks of this release + std::vector > getArtists() const; // Get the artists of this release + std::vector > getTracks() const; // Get the tracks of this release void setMBID(std::string mbid) { _MBID = mbid; } diff --git a/test/CheckDbBasics.cpp b/test/CheckDbBasics.cpp index e1fbfaa9..b67101b7 100644 --- a/test/CheckDbBasics.cpp +++ b/test/CheckDbBasics.cpp @@ -157,6 +157,9 @@ int main(void) std::vector res = Artist::getByFilter(db.getSession(), filter, -1, -1); assert(res.size() == 1); assert(res.front().id() == 1); + + // Make sure artist has a release + assert(res.front()->getReleases().size() == 1); } // Select Release by name @@ -179,6 +182,9 @@ int main(void) assert(res.size() == 1); assert(res.front().id() == 1); assert(res.front()->getName() == "release01"); + + // Make sure release has an artist + assert(res.front()->getArtists().size() == 1); } // Select genre by name diff --git a/test/RemoteClient.cpp b/test/RemoteClient.cpp index dce3e641..062547fb 100644 --- a/test/RemoteClient.cpp +++ b/test/RemoteClient.cpp @@ -27,7 +27,7 @@ #include #include -#include "remote/messages/Header.hpp" +#include "lms-api/messages/Header.hpp" #include "messages.pb.h" #include "TestDatabase.hpp" @@ -123,7 +123,7 @@ struct SearchFilter std::vector trackIds; }; -void SearchFilterToRequest(const SearchFilter& filter, Remote::AudioCollectionRequest_SearchFilter& request) +void SearchFilterToRequest(const SearchFilter& filter, LmsAPI::AudioCollectionRequest_SearchFilter& request) { for (uint64_t id : filter.artistIds) request.add_artist_id(id); @@ -174,11 +174,11 @@ class TestClient std::size_t nbArtists = 0; // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage_Type_AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage_Type_AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest_Type_TypeGetArtistList); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest_Type_TypeGetArtistList); request.mutable_audio_collection_request()->mutable_get_artists()->mutable_batch_parameter()->set_size(size); request.mutable_audio_collection_request()->mutable_get_artists()->mutable_batch_parameter()->set_offset(offset); SearchFilterToRequest(filter, *request.mutable_audio_collection_request()->mutable_get_artists()->mutable_search_filter()); @@ -186,7 +186,7 @@ class TestClient sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -198,7 +198,7 @@ class TestClient for (int i = 0; i < response.audio_collection_response().artist_list().artists_size(); ++i) { - const Remote::AudioCollectionResponse_Artist& respArtist = response.audio_collection_response().artist_list().artists(i); + const LmsAPI::AudioCollectionResponse_Artist& respArtist = response.audio_collection_response().artist_list().artists(i); if (!respArtist.has_id()) throw std::runtime_error("no id!"); @@ -235,11 +235,11 @@ class TestClient std::size_t nbAdded = 0; // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage_Type_AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage_Type_AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest_Type_TypeGetGenreList); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest_Type_TypeGetGenreList); request.mutable_audio_collection_request()->mutable_get_genres()->mutable_batch_parameter()->set_size(size); request.mutable_audio_collection_request()->mutable_get_genres()->mutable_batch_parameter()->set_offset(offset); SearchFilterToRequest(filter, *request.mutable_audio_collection_request()->mutable_get_genres()->mutable_search_filter()); @@ -247,7 +247,7 @@ class TestClient sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -259,7 +259,7 @@ class TestClient for (int i = 0; i < response.audio_collection_response().genre_list().genres_size(); ++i) { - const Remote::AudioCollectionResponse_Genre& respGenre = response.audio_collection_response().genre_list().genres(i); + const LmsAPI::AudioCollectionResponse_Genre& respGenre = response.audio_collection_response().genre_list().genres(i); if (!respGenre.has_id()) throw std::runtime_error("no genre id!"); @@ -293,11 +293,11 @@ class TestClient std::size_t nbAdded = 0; // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage_Type_AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage_Type_AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest_Type_TypeGetReleaseList); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest_Type_TypeGetReleaseList); request.mutable_audio_collection_request()->mutable_get_releases()->mutable_batch_parameter()->set_size(size); request.mutable_audio_collection_request()->mutable_get_releases()->mutable_batch_parameter()->set_offset(offset); SearchFilterToRequest(filter, *request.mutable_audio_collection_request()->mutable_get_releases()->mutable_search_filter()); @@ -305,14 +305,14 @@ class TestClient sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message if (!response.audio_collection_response().has_type()) throw std::runtime_error("Missing type!"); -// if (!response.audio_collection_response().type() != Remote::ServerMessage::AudioCollectionResponse::TypeReleaseList) +// if (!response.audio_collection_response().type() != LmsAPI::ServerMessage::AudioCollectionResponse::TypeReleaseList) // throw std::runtime_error("Bad type!"); if (!response.has_audio_collection_response()) @@ -323,7 +323,7 @@ class TestClient for (int i = 0; i < response.audio_collection_response().release_list().releases_size(); ++i) { - const Remote::AudioCollectionResponse_Release& respRelease = response.audio_collection_response().release_list().releases(i); + const LmsAPI::AudioCollectionResponse_Release& respRelease = response.audio_collection_response().release_list().releases(i); if (!respRelease.has_id()) throw std::runtime_error("no id!"); @@ -355,11 +355,11 @@ class TestClient std::size_t nbAdded = 0; // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage_Type_AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage_Type_AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest_Type_TypeGetTrackList); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest_Type_TypeGetTrackList); request.mutable_audio_collection_request()->mutable_get_tracks()->mutable_batch_parameter()->set_size(size); request.mutable_audio_collection_request()->mutable_get_tracks()->mutable_batch_parameter()->set_offset(offset); SearchFilterToRequest(filter, *request.mutable_audio_collection_request()->mutable_get_tracks()->mutable_search_filter()); @@ -367,7 +367,7 @@ class TestClient sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -379,7 +379,7 @@ class TestClient for (int i = 0; i < response.audio_collection_response().track_list().tracks_size(); ++i) { - const Remote::AudioCollectionResponse_Track& respTrack = response.audio_collection_response().track_list().tracks(i);; + const LmsAPI::AudioCollectionResponse_Track& respTrack = response.audio_collection_response().track_list().tracks(i);; TrackInfo track; track.id = respTrack.id(); @@ -426,18 +426,18 @@ class TestClient void getCoverTrack(std::vector& coverArt, uint64_t trackId) { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage::AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage::AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest::TypeGetCoverArt); - request.mutable_audio_collection_request()->mutable_get_cover_art()->set_type( Remote::AudioCollectionRequest::GetCoverArt::TypeGetCoverArtTrack); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest::TypeGetCoverArt); + request.mutable_audio_collection_request()->mutable_get_cover_art()->set_type( LmsAPI::AudioCollectionRequest::GetCoverArt::TypeGetCoverArtTrack); request.mutable_audio_collection_request()->mutable_get_cover_art()->set_track_id( trackId ); request.mutable_audio_collection_request()->mutable_get_cover_art()->set_size( 256 ); sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -457,19 +457,19 @@ class TestClient void getCoverRelease(std::vector& coverArt, uint64_t releaseId) { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage::AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage::AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest::TypeGetCoverArt); - request.mutable_audio_collection_request()->mutable_get_cover_art()->set_type( Remote::AudioCollectionRequest::GetCoverArt::TypeGetCoverArtRelease); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest::TypeGetCoverArt); + request.mutable_audio_collection_request()->mutable_get_cover_art()->set_type( LmsAPI::AudioCollectionRequest::GetCoverArt::TypeGetCoverArtRelease); request.mutable_audio_collection_request()->mutable_get_cover_art()->set_release_id( releaseId ); request.mutable_audio_collection_request()->mutable_get_cover_art()->set_size( 256 ); sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -490,16 +490,16 @@ class TestClient std::string getRevision(void) { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage::AudioCollectionRequest ); + request.set_type( LmsAPI::ClientMessage::AudioCollectionRequest ); - request.mutable_audio_collection_request()->set_type( Remote::AudioCollectionRequest::TypeGetRevision); + request.mutable_audio_collection_request()->set_type( LmsAPI::AudioCollectionRequest::TypeGetRevision); sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -515,18 +515,18 @@ class TestClient bool login(const std::string& username, const std::string& password) { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage::AuthRequest ); + request.set_type( LmsAPI::ClientMessage::AuthRequest ); - request.mutable_auth_request()->set_type( Remote::AuthRequest::TypePassword); + request.mutable_auth_request()->set_type( LmsAPI::AuthRequest::TypePassword); request.mutable_auth_request()->mutable_password()->set_user_login( username ); request.mutable_auth_request()->mutable_password()->set_user_password( password ); sendMsg(request); // Receive responses - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); // Process message @@ -538,11 +538,11 @@ class TestClient switch( response.auth_response().password_result().type()) { - case Remote::AuthResponse::PasswordResult::TypePasswordValid: + case LmsAPI::AuthResponse::PasswordResult::TypePasswordValid: return true; - case Remote::AuthResponse::PasswordResult::TypePasswordInvalid: + case LmsAPI::AuthResponse::PasswordResult::TypePasswordInvalid: return false; - case Remote::AuthResponse::PasswordResult::TypeLoginThrottling: + case LmsAPI::AuthResponse::PasswordResult::TypeLoginThrottling: if (response.auth_response().password_result().has_delay()) std::cerr << "Has to wait for " << response.auth_response().password_result().delay() << " seconds" << std::endl; @@ -571,24 +571,24 @@ class TestClient { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage_Type_MediaRequest); + request.set_type( LmsAPI::ClientMessage_Type_MediaRequest); - request.mutable_media_request()->set_type( Remote::MediaRequest_Type_TypeMediaPrepare); - request.mutable_media_request()->mutable_prepare()->set_type(Remote::MediaRequest_Prepare_Type_AudioRequest); + request.mutable_media_request()->set_type( LmsAPI::MediaRequest_Type_TypeMediaPrepare); + request.mutable_media_request()->mutable_prepare()->set_type(LmsAPI::MediaRequest_Prepare_Type_AudioRequest); // Set fields request.mutable_media_request()->mutable_prepare()->mutable_audio()->set_track_id( audioId ); - request.mutable_media_request()->mutable_prepare()->mutable_audio()->set_codec_type( Remote::MediaRequest::Prepare::AudioCodecTypeOGA ); - request.mutable_media_request()->mutable_prepare()->mutable_audio()->set_bitrate( Remote::MediaRequest::Prepare::AudioBitrate_64_kbps ); + request.mutable_media_request()->mutable_prepare()->mutable_audio()->set_codec_type( LmsAPI::MediaRequest::Prepare::AudioCodecTypeOGA ); + request.mutable_media_request()->mutable_prepare()->mutable_audio()->set_bitrate( LmsAPI::MediaRequest::Prepare::AudioBitrate_64_kbps ); std::cout << "Sending prepare request" << std::endl; sendMsg(request); std::cout << "Waiting for response" << std::endl; // Receive response - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); std::cout << "Got a response" << std::endl; @@ -616,11 +616,11 @@ class TestClient std::size_t mediaGetPart(uint32_t handle, std::vector& data) { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage::MediaRequest); + request.set_type( LmsAPI::ClientMessage::MediaRequest); - request.mutable_media_request()->set_type( Remote::MediaRequest::TypeMediaGetPart); + request.mutable_media_request()->set_type( LmsAPI::MediaRequest::TypeMediaGetPart); request.mutable_media_request()->mutable_get_part()->set_handle(handle); request.mutable_media_request()->mutable_get_part()->set_requested_data_size(65536); @@ -629,7 +629,7 @@ class TestClient std::cout << "Waiting for response" << std::endl; // Receive response - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); std::cout << "Got a response" << std::endl; @@ -638,7 +638,7 @@ class TestClient throw std::runtime_error("not an media response"); // Process message - if (response.media_response().type() != Remote::MediaResponse::TypePartResult) + if (response.media_response().type() != LmsAPI::MediaResponse::TypePartResult) throw std::runtime_error("GetPart: not a Part response!"); if (!response.media_response().has_part_result()) @@ -652,17 +652,17 @@ class TestClient void mediaTerminate( uint32_t handle ) { // Send request - Remote::ClientMessage request; + LmsAPI::ClientMessage request; - request.set_type( Remote::ClientMessage::MediaRequest); + request.set_type( LmsAPI::ClientMessage::MediaRequest); - request.mutable_media_request()->set_type( Remote::MediaRequest::TypeMediaTerminate); + request.mutable_media_request()->set_type( LmsAPI::MediaRequest::TypeMediaTerminate); request.mutable_media_request()->mutable_terminate()->set_handle(handle); sendMsg(request); // Receive response - Remote::ServerMessage response; + LmsAPI::ServerMessage response; recvMsg(response); @@ -684,18 +684,18 @@ class TestClient if (message.SerializeToOstream(&os)) { - if (_outputStreamBuf.size() > Remote::Header::max_data_size) + if (_outputStreamBuf.size() > LmsAPI::Header::max_data_size) { - std::ostringstream oss; oss << "Message too big = " << _outputStreamBuf.size() << " bytes! (max is " << Remote::Header::max_data_size << ")" << std::endl; + std::ostringstream oss; oss << "Message too big = " << _outputStreamBuf.size() << " bytes! (max is " << LmsAPI::Header::max_data_size << ")" << std::endl; throw std::runtime_error("Message to big!"); } // Send message header - std::array headerBuffer; + std::array headerBuffer; // Generate header content { - Remote::Header header; + LmsAPI::Header header; header.setDataSize(_outputStreamBuf.size()); header.to_buffer(headerBuffer); } @@ -725,18 +725,18 @@ class TestClient { // reserve bytes in output sequence - boost::asio::streambuf::mutable_buffers_type bufs = _inputStreamBuf.prepare(Remote::Header::size); + boost::asio::streambuf::mutable_buffers_type bufs = _inputStreamBuf.prepare(LmsAPI::Header::size); std::size_t n = boost::asio::read(_socket, bufs, - boost::asio::transfer_exactly(Remote::Header::size)); + boost::asio::transfer_exactly(LmsAPI::Header::size)); - assert(n == Remote::Header::size); + assert(n == LmsAPI::Header::size); _inputStreamBuf.commit(n); } - Remote::Header header; + LmsAPI::Header header; if (!header.from_istream(is)) throw std::runtime_error("Cannot read header from buffer!");