| 432 | } |
| 433 | |
| 434 | int HTTPServer::PostDatabase(http::Context& ctx) { |
| 435 | const std::string newDbName = getNameFromJson(ctx.body->Read()); |
| 436 | |
| 437 | auto dbs = dbMgr_.EnumDatabases(); |
| 438 | for (auto& db : dbs) { |
| 439 | if (db == newDbName) { |
| 440 | return status(ctx, http::HttpStatus(http::StatusBadRequest, "Database already exists")); |
| 441 | } |
| 442 | } |
| 443 | |
| 444 | AuthContext dummyCtx; |
| 445 | AuthContext* actx = &dummyCtx; |
| 446 | if (!dbMgr_.IsNoSecurity()) { |
| 447 | auto clientData = dynamic_cast<HTTPClientData*>(ctx.clientData.get()); |
| 448 | assertrx(clientData); |
| 449 | actx = &clientData->auth; // -V522 |
| 450 | } |
| 451 | |
| 452 | const auto err = dbMgr_.OpenDatabase(newDbName, *actx, true); |
| 453 | if (!err.ok()) { |
| 454 | return status(ctx, http::HttpStatus(err)); |
| 455 | } |
| 456 | return status(ctx); |
| 457 | } |
| 458 | |
| 459 | int HTTPServer::DeleteDatabase(http::Context& ctx) { |
| 460 | const std::string dbName = urldecode2(ctx.request->urlParams[0]); |
nothing calls this directly
no test coverage detected