aboutsummaryrefslogtreecommitdiff
path: root/zen/cmds/cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zen/cmds/cache.cpp')
-rw-r--r--zen/cmds/cache.cpp70
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;
+}