diff --git a/CMakeLists.txt b/CMakeLists.txt index 3952fe39..29844248 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.12) -project(lms VERSION 3.72.0) +project(lms VERSION 3.72.1) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules/) diff --git a/src/libs/core/impl/String.cpp b/src/libs/core/impl/String.cpp index 31a1e84b..50a9035c 100644 --- a/src/libs/core/impl/String.cpp +++ b/src/libs/core/impl/String.cpp @@ -418,11 +418,11 @@ namespace lms::core::stringUtils } } - std::string replaceInString(std::string_view str, const std::string& from, const std::string& to) + std::string replaceInString(std::string_view str, std::string_view from, std::string_view to) { std::string res{ str }; - size_t pos = 0; + size_t pos = 0; while ((pos = res.find(from, pos)) != std::string::npos) { res.replace(pos, from.length(), to); diff --git a/src/libs/core/include/core/String.hpp b/src/libs/core/include/core/String.hpp index 62010795..3021cb54 100644 --- a/src/libs/core/include/core/String.hpp +++ b/src/libs/core/include/core/String.hpp @@ -98,7 +98,7 @@ namespace lms::core::stringUtils template<> [[nodiscard]] std::optional readAs(std::string_view str); - [[nodiscard]] std::string replaceInString(std::string_view str, const std::string& from, const std::string& to); + [[nodiscard]] std::string replaceInString(std::string_view str, std::string_view from, std::string_view to); [[nodiscard]] std::string jsEscape(std::string_view str); [[nodiscard]] std::string jsonEscape(std::string_view str); diff --git a/src/libs/subsonic/impl/ProtocolVersion.hpp b/src/libs/subsonic/impl/ProtocolVersion.hpp index 86fbab79..67f4f378 100644 --- a/src/libs/subsonic/impl/ProtocolVersion.hpp +++ b/src/libs/subsonic/impl/ProtocolVersion.hpp @@ -33,7 +33,7 @@ namespace lms::api::subsonic unsigned patch{}; }; - static inline constexpr ProtocolVersion defaultServerProtocolVersion{ 1, 16, 0 }; + static inline constexpr ProtocolVersion defaultServerProtocolVersion{ 1, 16, 1 }; } // namespace lms::api::subsonic namespace lms::core::stringUtils diff --git a/src/libs/subsonic/test/SubsonicResponseTest.cpp b/src/libs/subsonic/test/SubsonicResponseTest.cpp index eab26e21..c3b4cbb7 100644 --- a/src/libs/subsonic/test/SubsonicResponseTest.cpp +++ b/src/libs/subsonic/test/SubsonicResponseTest.cpp @@ -21,6 +21,9 @@ #include +#include "core/String.hpp" +#include "core/Version.hpp" + #include "ProtocolVersion.hpp" #include "SubsonicResponse.hpp" @@ -58,12 +61,15 @@ namespace lms::api::subsonic::tests TEST(SubsonicResponse, emptyJson) { - Response response{ Response::createOkResponse(ProtocolVersion{ 1, 16, 0 }) }; + Response response{ Response::createOkResponse(defaultServerProtocolVersion) }; std::ostringstream oss; response.write(oss, ResponseFormat::json); - EXPECT_EQ(oss.str(), R"({"subsonic-response":{"openSubsonic":true,"serverVersion":"v3.72.0","status":"ok","type":"lms","version":"1.16.0"}})"); + std::string expected{ R"({"subsonic-response":{"openSubsonic":true,"serverVersion":"${VERSION}","status":"ok","type":"lms","version":"1.16.1"}})" }; + expected = core::stringUtils::replaceInString(expected, "${VERSION}", core::getVersion()); + + EXPECT_EQ(oss.str(), expected); } TEST(SubsonicResponse, json) @@ -73,18 +79,24 @@ namespace lms::api::subsonic::tests std::ostringstream oss; response.write(oss, ResponseFormat::json); - EXPECT_EQ(oss.str(), R"({"subsonic-response":{"openSubsonic":true,"serverVersion":"v3.72.0","status":"ok","type":"lms","version":"1.16.0","MyNode":{"Attr1":"value1","Attr2":"value2","attr3":"","attr4":true,"attr5":false,"attr6":3.14159,"attr7":333666,"MyArrayChild":[{"Attr42":0},{"Attr42":1}],"MyArray1":["value1","value2","value1","value2"],"MyArray2":[0]}}})"); + std::string expected{ R"({"subsonic-response":{"openSubsonic":true,"serverVersion":"${VERSION}","status":"ok","type":"lms","version":"1.16.1","MyNode":{"Attr1":"value1","Attr2":"value2","attr3":"","attr4":true,"attr5":false,"attr6":3.14159,"attr7":333666,"MyArrayChild":[{"Attr42":0},{"Attr42":1}],"MyArray1":["value1","value2","value1","value2"],"MyArray2":[0]}}})" }; + expected = core::stringUtils::replaceInString(expected, "${VERSION}", core::getVersion()); + + EXPECT_EQ(oss.str(), expected); } TEST(SubsonicResponse, emptyXml) { - Response response{ Response::createOkResponse(ProtocolVersion{ 1, 16, 0 }) }; + Response response{ Response::createOkResponse(defaultServerProtocolVersion) }; std::ostringstream oss; response.write(oss, ResponseFormat::xml); - EXPECT_EQ(oss.str(), R"( -)"); + std::string expected{ R"( +)" }; + expected = core::stringUtils::replaceInString(expected, "${VERSION}", core::getVersion()); + + EXPECT_EQ(oss.str(), expected); } TEST(SubsonicResponse, xml) @@ -94,8 +106,11 @@ namespace lms::api::subsonic::tests std::ostringstream oss; response.write(oss, ResponseFormat::xml); - EXPECT_EQ(oss.str(), R"( -value1value2value1value20)"); + std::string expected{ R"( +value1value2value1value20)" }; + expected = core::stringUtils::replaceInString(expected, "${VERSION}", core::getVersion()); + + EXPECT_EQ(oss.str(), expected); } } // namespace lms::api::subsonic::tests