diff options
Diffstat (limited to 'zen/cmds/cache.cpp')
| -rw-r--r-- | zen/cmds/cache.cpp | 70 |
1 files changed, 67 insertions, 3 deletions
diff --git a/zen/cmds/cache.cpp b/zen/cmds/cache.cpp index a4fe4da34..2407f5f55 100644 --- a/zen/cmds/cache.cpp +++ b/zen/cmds/cache.cpp @@ -16,8 +16,10 @@ ZEN_THIRD_PARTY_INCLUDES_END DropCommand::DropCommand() { m_Options.add_options()("h,help", "Print help"); + m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), "<hosturl>"); m_Options.add_option("", "n", "namespace", "Namnspace name", cxxopts::value(m_NamespaceName), "<namespacename>"); m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), "<bucketname>"); + m_Options.parse_positional({"namespace", "bucket"}); } DropCommand::~DropCommand() = default; @@ -25,10 +27,12 @@ DropCommand::~DropCommand() = default; int DropCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) { - ZEN_UNUSED(GlobalOptions, argc, argv); + ZEN_UNUSED(GlobalOptions); - m_Options.parse_positional({"namespace", "bucket"}); - m_Options.parse(argc, argv); + if (!ParseOptions(argc, argv)) + { + return 0; + } if (m_NamespaceName.empty()) { @@ -67,3 +71,63 @@ DropCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) return 1; } + +CacheInfoCommand::CacheInfoCommand() +{ + m_Options.add_options()("h,help", "Print help"); + m_Options.add_option("", "u", "hosturl", "Host URL", cxxopts::value(m_HostName)->default_value("http://localhost:1337"), "<hosturl>"); + m_Options.add_option("", "n", "namespace", "Namnspace name", cxxopts::value(m_NamespaceName), "<namespacename>"); + m_Options.add_option("", "b", "bucket", "Bucket name", cxxopts::value(m_BucketName), "<bucketname>"); + m_Options.parse_positional({"namespace", "bucket"}); +} + +CacheInfoCommand::~CacheInfoCommand() = default; + +int +CacheInfoCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv) +{ + ZEN_UNUSED(GlobalOptions); + + if (!ParseOptions(argc, argv)) + { + return 0; + } + + cpr::Session Session; + Session.SetHeader(cpr::Header{{"Accept", "application/json"}}); + if (m_HostName.empty()) + { + ZEN_CONSOLE("Info on cache from '{}'", m_HostName); + Session.SetUrl({fmt::format("{}/z$", m_HostName)}); + } + else if (m_BucketName.empty()) + { + ZEN_CONSOLE("Info on cache namespace '{}' from '{}'", m_NamespaceName, m_HostName); + Session.SetUrl({fmt::format("{}/z$/{}", m_HostName, m_NamespaceName)}); + } + else + { + ZEN_CONSOLE("Info on cache bucket '{}/{}' from '{}'", m_NamespaceName, m_BucketName, m_HostName); + Session.SetUrl({fmt::format("{}/z$/{}/{}", m_HostName, m_NamespaceName, m_BucketName)}); + } + + cpr::Response Result = Session.Get(); + + if (zen::IsHttpSuccessCode(Result.status_code)) + { + ZEN_CONSOLE("{}", Result.text); + + return 0; + } + + if (Result.status_code) + { + ZEN_ERROR("Info failed: {}: {} ({})", Result.status_code, Result.reason, Result.text); + } + else + { + ZEN_ERROR("Info failed: {}", Result.error.message); + } + + return 1; +} |