mirror of https://gitee.com/bigwinds/arangodb
The RestVersionHandler now uses VPack instead of TRI_json_t
This commit is contained in:
parent
454b3f0d7a
commit
42cf09e7f0
|
@ -28,8 +28,6 @@
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "RestVersionHandler.h"
|
#include "RestVersionHandler.h"
|
||||||
#include "Basics/json.h"
|
|
||||||
#include "Basics/tri-strings.h"
|
|
||||||
#include "Rest/AnyServer.h"
|
#include "Rest/AnyServer.h"
|
||||||
#include "Rest/HttpRequest.h"
|
#include "Rest/HttpRequest.h"
|
||||||
#include "Rest/Version.h"
|
#include "Rest/Version.h"
|
||||||
|
@ -130,39 +128,32 @@ bool RestVersionHandler::isDirect () const {
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
HttpHandler::status_t RestVersionHandler::execute () {
|
HttpHandler::status_t RestVersionHandler::execute () {
|
||||||
TRI_json_t result;
|
try {
|
||||||
|
VPackBuilder result;
|
||||||
|
result.add(VPackValue(VPackValueType::Object));
|
||||||
|
result.add("server", VPackValue("arango"));
|
||||||
|
result.add("version", VPackValue(TRI_VERSION));
|
||||||
|
|
||||||
TRI_InitObjectJson(TRI_UNKNOWN_MEM_ZONE, &result, 3);
|
bool found;
|
||||||
|
char const* detailsStr = _request->value("details", found);
|
||||||
|
|
||||||
TRI_json_t server;
|
if (found && StringUtils::boolean(detailsStr)) {
|
||||||
TRI_InitStringJson(&server, TRI_DuplicateStringZ(TRI_UNKNOWN_MEM_ZONE, "arango"), strlen("arango"));
|
result.add("details", VPackValue(VPackValueType::Object));
|
||||||
TRI_Insert2ObjectJson(TRI_UNKNOWN_MEM_ZONE, &result, "server", &server);
|
|
||||||
|
|
||||||
TRI_json_t version;
|
Version::getVPack(result);
|
||||||
TRI_InitStringJson(&version, TRI_DuplicateStringZ(TRI_UNKNOWN_MEM_ZONE, TRI_VERSION), strlen(TRI_VERSION));
|
|
||||||
TRI_Insert2ObjectJson(TRI_UNKNOWN_MEM_ZONE, &result, "version", &version);
|
|
||||||
|
|
||||||
bool found;
|
if (ArangoInstance != nullptr) {
|
||||||
char const* detailsStr = _request->value("details", found);
|
result.add("mode", VPackValue(ArangoInstance->modeString()));
|
||||||
|
}
|
||||||
if (found && StringUtils::boolean(detailsStr)) {
|
result.close();
|
||||||
TRI_json_t details;
|
|
||||||
|
|
||||||
TRI_InitObjectJson(TRI_UNKNOWN_MEM_ZONE, &details);
|
|
||||||
|
|
||||||
Version::getJson(TRI_UNKNOWN_MEM_ZONE, &details);
|
|
||||||
|
|
||||||
if (ArangoInstance != nullptr) {
|
|
||||||
std::string mode = ArangoInstance->modeString();
|
|
||||||
TRI_Insert3ObjectJson(TRI_UNKNOWN_MEM_ZONE, &details, "mode", TRI_CreateStringCopyJson(TRI_UNKNOWN_MEM_ZONE, mode.c_str(), mode.size()));
|
|
||||||
}
|
}
|
||||||
|
result.close();
|
||||||
TRI_Insert2ObjectJson(TRI_UNKNOWN_MEM_ZONE, &result, "details", &details);
|
VPackSlice s = result.slice();
|
||||||
|
generateResult(s);
|
||||||
|
}
|
||||||
|
catch (...) {
|
||||||
|
// Ignore this error
|
||||||
}
|
}
|
||||||
|
|
||||||
generateResult(&result);
|
|
||||||
TRI_DestroyJson(TRI_UNKNOWN_MEM_ZONE, &result);
|
|
||||||
|
|
||||||
return status_t(HANDLER_DONE);
|
return status_t(HANDLER_DONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -310,6 +310,23 @@ void Version::getJson (TRI_memory_zone_t* zone, TRI_json_t* dst) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief VelocyPack all data
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
void Version::getVPack (VPackBuilder& dst) {
|
||||||
|
for (auto& it : Values) {
|
||||||
|
std::string value = it.second;
|
||||||
|
triagens::basics::StringUtils::trimInPlace(value);
|
||||||
|
|
||||||
|
if (! value.empty()) {
|
||||||
|
dst.add(it.first, VPackValue(value));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// --SECTION-- public static variables
|
// --SECTION-- public static variables
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
|
|
||||||
#include "Basics/Common.h"
|
#include "Basics/Common.h"
|
||||||
|
|
||||||
|
#include <velocypack/velocypack-aliases.h>
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// --SECTION-- forward declarations
|
// --SECTION-- forward declarations
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
@ -159,6 +161,12 @@ namespace triagens {
|
||||||
|
|
||||||
static void getJson (struct TRI_memory_zone_s*, struct TRI_json_t*);
|
static void getJson (struct TRI_memory_zone_s*, struct TRI_json_t*);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
/// @brief VelocyPack all data
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
static void getVPack (VPackBuilder&);
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// --SECTION-- public static variables
|
// --SECTION-- public static variables
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue