Loading .gitignore +3 −2 Original line number Diff line number Diff line Loading @@ -13,5 +13,6 @@ node_modules .vscode */build/* EtsiServerGen/* !*/CMakeLists.txt !*/.openapi-generator-ignore !EtsiServerGen/CMakeLists.txt !EtsiServerGen/.openapi-generator-ignore !EtsiServerGen/patches EtsiServerGen/CMakeLists.txt +64 −48 Original line number Diff line number Diff line # # ARF - Augmented Reality Framework (ETSI ISG ARF) # # Copyright 2022 ETSI # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Last change: June 2022 # cmake_minimum_required (VERSION 3.2) project(PistacheGen) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pg -g3" ) include(ExternalProject) set(EXTERNAL_INSTALL_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/external) find_package(PkgConfig) pkg_check_modules(PISTACHE REQUIRED libpistache) include_directories(${EXTERNAL_INSTALL_LOCATION}/include) link_directories(${EXTERNAL_INSTALL_LOCATION}/lib) include_directories(model) include_directories(api) include_directories(impl) project(RestbedGen) cmake_minimum_required(VERSION 3.22) set(TARGET_NAME org.openapitools.server.apiStubs) set(RESTBED_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/external/restbed/source) set(RESTBED_LIB ${CMAKE_CURRENT_LIST_DIR}/external/restbed/build/librestbed.a) find_package(Boost 1.45.0 REQUIRED COMPONENTS system filesystem regex) # Get generated filenames file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/.openapi-generator/FILES" GENERATED_SOURCES) list(FILTER GENERATED_SOURCES INCLUDE REGEX ".*cpp$") set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(GENERATED_SOURCES_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/model ${CMAKE_CURRENT_LIST_DIR}/api ${CMAKE_CURRENT_LIST_DIR} ) file(GLOB SRCS ${CMAKE_CURRENT_SOURCE_DIR}/api/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/model/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/model/nlohamnn/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/api/*.cpp ) file(GLOB HDRS ${CMAKE_CURRENT_SOURCE_DIR}/api/*.h ${CMAKE_CURRENT_SOURCE_DIR}/model/*.h ${CMAKE_CURRENT_SOURCE_DIR}/api/*.h ) include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/model ${CMAKE_CURRENT_SOURCE_DIR}/api ) add_library(${TARGET_NAME} SHARED) target_sources(${TARGET_NAME} PRIVATE ${GENERATED_SOURCES}) target_include_directories(${TARGET_NAME} PUBLIC ${GENERATED_SOURCES_INCLUDE_DIRS} ${RESTBED_INCLUDE_DIR} ) include_directories(${RESTBED_INCLUDE_DIR}) link_directories( ${RESTBED_INCLUDE_DIR}) target_link_libraries(${TARGET_NAME} PUBLIC ${RESTBED_LIB} ssl crypto Boost::system Boost::filesystem Boost::regex -lpthread ) add_library(${PROJECT_NAME} ${SRCS} ) target_link_libraries(${PROJECT_NAME} pistache pthread) install(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib) install(FILES ${HDRS} DESTINATION include) install(DIRECTORY ${RESTBED_INCLUDE_DIR}/corvusoft DESTINATION include) #install(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib) EtsiServerGen/patches/applyPatches.sh 0 → 100755 +7 −0 Original line number Diff line number Diff line #!/bin/bash patch -u ../api/DefaultApi.h -i fixHeaderModelIssue.patch patch -u ../api/DefaultApi.cpp -i fixCppModelIssue.patch patch -u ../api/RelocalizationInformationApi.cpp -i fixRelocInfoJSONIssue.patch patch -u ../api/TrackablesApi.cpp -i fixCppTrackable.patch patch -u ../api/WorldAnchorsApi.cpp -i fixCppWorldAnchor.patch patch -u ../api/WorldLinksApi.cpp -i fixCppWorldLink.patch No newline at end of file EtsiServerGen/patches/fixCppModelIssue.patch 0 → 100644 +11 −0 Original line number Diff line number Diff line --- ../api/DefaultApi.cpp 2024-04-15 16:13:33.914375475 +0200 +++ ../api/DefaultApi.cpp 2024-04-15 16:15:50.556422843 +0200 @@ -28,8 +28,6 @@ namespace server { namespace api { -using namespace org::openapitools::server::model; - namespace { [[maybe_unused]] std::string selectPreferredContentType(const std::vector<std::string>& contentTypes) { EtsiServerGen/patches/fixCppTrackable.patch 0 → 100644 +179 −0 Original line number Diff line number Diff line --- TrackablesApi.cpp 2024-04-15 17:52:21.000357100 +0200 +++ TrackablesApi_patched.cpp 2024-04-15 18:08:32.955228320 +0200 @@ -201,7 +201,7 @@ } result = resultObject; - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 201) { @@ -211,7 +211,7 @@ } result = resultObject; - returnResponse(session, 201, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 201, result, responseHeaders); return; } if (status_code == 400) { @@ -219,7 +219,7 @@ result = "Bad request."; result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 409) { @@ -227,15 +227,14 @@ result = "Invalid UUID, id must be a Nil value."; result = resultObject; - returnResponse(session, 409, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 409, result, responseHeaders); return; } if (status_code == 0) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Unexpected error."; - result = resultObject.toJsonString(); - returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 0, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -277,8 +276,12 @@ if (!acceptTypes.empty()) { responseHeaders.insert(std::make_pair("Accept", acceptTypes)); } - - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + std::string response; + for (const Trackable& item :resultObject) { + response += item.toJsonString() + ",\n"; + } + + returnResponse(session, 200, response, responseHeaders); return; } if (status_code == 201) { @@ -286,17 +289,18 @@ if (!acceptTypes.empty()) { responseHeaders.insert(std::make_pair("Accept", acceptTypes)); } - - result = resultObject; - returnResponse(session, 201, result.empty() ? "{}" : result, responseHeaders); + std::string response; + for (const Trackable& item :resultObject) { + response += item.toJsonString() + ",\n"; + } + returnResponse(session, 201, response, responseHeaders); return; } if (status_code == 0) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Unexpected error."; - result = resultObject.toJsonString(); - returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 0, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -343,7 +347,7 @@ } result = resultObject; - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 400) { @@ -351,7 +355,7 @@ result = "Bad request."; result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 404) { @@ -359,15 +363,15 @@ result = "Not found, could not find UUID in database."; result = resultObject; - returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 404, result, responseHeaders); return; } if (status_code == 0) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Unexpected error."; - result = resultObject.toJsonString(); - returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders); + result = resultObject; + returnResponse(session, 0, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -494,7 +498,7 @@ } result = resultObject; - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 400) { @@ -502,7 +506,7 @@ result = "Invalid UUID supplied."; result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 404) { @@ -510,7 +514,7 @@ result = "Not found, could not find UUID in database."; result = resultObject; - returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 404, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -556,23 +560,23 @@ } result = resultObject.toJsonString(); - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 400) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Invalid UUID supplied."; - result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + result = resultObject.toJsonString(); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 404) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Not found, could not find UUID in database."; - result = resultObject; - returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders); + result = resultObject.toJsonString(); + returnResponse(session, 404, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); Loading
.gitignore +3 −2 Original line number Diff line number Diff line Loading @@ -13,5 +13,6 @@ node_modules .vscode */build/* EtsiServerGen/* !*/CMakeLists.txt !*/.openapi-generator-ignore !EtsiServerGen/CMakeLists.txt !EtsiServerGen/.openapi-generator-ignore !EtsiServerGen/patches
EtsiServerGen/CMakeLists.txt +64 −48 Original line number Diff line number Diff line # # ARF - Augmented Reality Framework (ETSI ISG ARF) # # Copyright 2022 ETSI # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Last change: June 2022 # cmake_minimum_required (VERSION 3.2) project(PistacheGen) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pg -g3" ) include(ExternalProject) set(EXTERNAL_INSTALL_LOCATION ${CMAKE_CURRENT_SOURCE_DIR}/external) find_package(PkgConfig) pkg_check_modules(PISTACHE REQUIRED libpistache) include_directories(${EXTERNAL_INSTALL_LOCATION}/include) link_directories(${EXTERNAL_INSTALL_LOCATION}/lib) include_directories(model) include_directories(api) include_directories(impl) project(RestbedGen) cmake_minimum_required(VERSION 3.22) set(TARGET_NAME org.openapitools.server.apiStubs) set(RESTBED_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/external/restbed/source) set(RESTBED_LIB ${CMAKE_CURRENT_LIST_DIR}/external/restbed/build/librestbed.a) find_package(Boost 1.45.0 REQUIRED COMPONENTS system filesystem regex) # Get generated filenames file(STRINGS "${CMAKE_CURRENT_LIST_DIR}/.openapi-generator/FILES" GENERATED_SOURCES) list(FILTER GENERATED_SOURCES INCLUDE REGEX ".*cpp$") set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(GENERATED_SOURCES_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/model ${CMAKE_CURRENT_LIST_DIR}/api ${CMAKE_CURRENT_LIST_DIR} ) file(GLOB SRCS ${CMAKE_CURRENT_SOURCE_DIR}/api/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/model/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/model/nlohamnn/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/api/*.cpp ) file(GLOB HDRS ${CMAKE_CURRENT_SOURCE_DIR}/api/*.h ${CMAKE_CURRENT_SOURCE_DIR}/model/*.h ${CMAKE_CURRENT_SOURCE_DIR}/api/*.h ) include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/model ${CMAKE_CURRENT_SOURCE_DIR}/api ) add_library(${TARGET_NAME} SHARED) target_sources(${TARGET_NAME} PRIVATE ${GENERATED_SOURCES}) target_include_directories(${TARGET_NAME} PUBLIC ${GENERATED_SOURCES_INCLUDE_DIRS} ${RESTBED_INCLUDE_DIR} ) include_directories(${RESTBED_INCLUDE_DIR}) link_directories( ${RESTBED_INCLUDE_DIR}) target_link_libraries(${TARGET_NAME} PUBLIC ${RESTBED_LIB} ssl crypto Boost::system Boost::filesystem Boost::regex -lpthread ) add_library(${PROJECT_NAME} ${SRCS} ) target_link_libraries(${PROJECT_NAME} pistache pthread) install(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib) install(FILES ${HDRS} DESTINATION include) install(DIRECTORY ${RESTBED_INCLUDE_DIR}/corvusoft DESTINATION include) #install(TARGETS ${PROJECT_NAME} DESTINATION /usr/lib)
EtsiServerGen/patches/applyPatches.sh 0 → 100755 +7 −0 Original line number Diff line number Diff line #!/bin/bash patch -u ../api/DefaultApi.h -i fixHeaderModelIssue.patch patch -u ../api/DefaultApi.cpp -i fixCppModelIssue.patch patch -u ../api/RelocalizationInformationApi.cpp -i fixRelocInfoJSONIssue.patch patch -u ../api/TrackablesApi.cpp -i fixCppTrackable.patch patch -u ../api/WorldAnchorsApi.cpp -i fixCppWorldAnchor.patch patch -u ../api/WorldLinksApi.cpp -i fixCppWorldLink.patch No newline at end of file
EtsiServerGen/patches/fixCppModelIssue.patch 0 → 100644 +11 −0 Original line number Diff line number Diff line --- ../api/DefaultApi.cpp 2024-04-15 16:13:33.914375475 +0200 +++ ../api/DefaultApi.cpp 2024-04-15 16:15:50.556422843 +0200 @@ -28,8 +28,6 @@ namespace server { namespace api { -using namespace org::openapitools::server::model; - namespace { [[maybe_unused]] std::string selectPreferredContentType(const std::vector<std::string>& contentTypes) {
EtsiServerGen/patches/fixCppTrackable.patch 0 → 100644 +179 −0 Original line number Diff line number Diff line --- TrackablesApi.cpp 2024-04-15 17:52:21.000357100 +0200 +++ TrackablesApi_patched.cpp 2024-04-15 18:08:32.955228320 +0200 @@ -201,7 +201,7 @@ } result = resultObject; - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 201) { @@ -211,7 +211,7 @@ } result = resultObject; - returnResponse(session, 201, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 201, result, responseHeaders); return; } if (status_code == 400) { @@ -219,7 +219,7 @@ result = "Bad request."; result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 409) { @@ -227,15 +227,14 @@ result = "Invalid UUID, id must be a Nil value."; result = resultObject; - returnResponse(session, 409, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 409, result, responseHeaders); return; } if (status_code == 0) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Unexpected error."; - result = resultObject.toJsonString(); - returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 0, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -277,8 +276,12 @@ if (!acceptTypes.empty()) { responseHeaders.insert(std::make_pair("Accept", acceptTypes)); } - - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + std::string response; + for (const Trackable& item :resultObject) { + response += item.toJsonString() + ",\n"; + } + + returnResponse(session, 200, response, responseHeaders); return; } if (status_code == 201) { @@ -286,17 +289,18 @@ if (!acceptTypes.empty()) { responseHeaders.insert(std::make_pair("Accept", acceptTypes)); } - - result = resultObject; - returnResponse(session, 201, result.empty() ? "{}" : result, responseHeaders); + std::string response; + for (const Trackable& item :resultObject) { + response += item.toJsonString() + ",\n"; + } + returnResponse(session, 201, response, responseHeaders); return; } if (status_code == 0) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Unexpected error."; - result = resultObject.toJsonString(); - returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 0, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -343,7 +347,7 @@ } result = resultObject; - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 400) { @@ -351,7 +355,7 @@ result = "Bad request."; result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 404) { @@ -359,15 +363,15 @@ result = "Not found, could not find UUID in database."; result = resultObject; - returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 404, result, responseHeaders); return; } if (status_code == 0) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Unexpected error."; - result = resultObject.toJsonString(); - returnResponse(session, 0, result.empty() ? "{}" : result, responseHeaders); + result = resultObject; + returnResponse(session, 0, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -494,7 +498,7 @@ } result = resultObject; - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 400) { @@ -502,7 +506,7 @@ result = "Invalid UUID supplied."; result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 404) { @@ -510,7 +514,7 @@ result = "Not found, could not find UUID in database."; result = resultObject; - returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 404, result, responseHeaders); return; } defaultSessionClose(session, status_code, result); @@ -556,23 +560,23 @@ } result = resultObject.toJsonString(); - returnResponse(session, 200, result.empty() ? "{}" : result, responseHeaders); + returnResponse(session, 200, result, responseHeaders); return; } if (status_code == 400) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Invalid UUID supplied."; - result = resultObject; - returnResponse(session, 400, result.empty() ? "{}" : result, responseHeaders); + result = resultObject.toJsonString(); + returnResponse(session, 400, result, responseHeaders); return; } if (status_code == 404) { responseHeaders.insert(std::make_pair("Content-Type", "text/plain")); result = "Not found, could not find UUID in database."; - result = resultObject; - returnResponse(session, 404, result.empty() ? "{}" : result, responseHeaders); + result = resultObject.toJsonString(); + returnResponse(session, 404, result, responseHeaders); return; } defaultSessionClose(session, status_code, result);