aboutsummaryrefslogtreecommitdiff
path: root/src/wallet/rpc
diff options
context:
space:
mode:
authorfanquake <fanquake@gmail.com>2022-09-28 12:10:38 +0100
committerfanquake <fanquake@gmail.com>2022-10-01 11:41:53 +0100
commit079cf88c0df6de038b8f8933d55c0d17af007b43 (patch)
tree6cd3bfb3be86f446e275dd48f50fd469ff8554c7 /src/wallet/rpc
parentf59e91511a3aa8b2770eeec7034ddc1a9dec918b (diff)
downloadbitcoin-079cf88c0df6de038b8f8933d55c0d17af007b43.tar.xz
refactor: move Boost datetime usage to wallet
This means we don't need datetime in a --disable-wallet build, and it isn't included in the kernel.
Diffstat (limited to 'src/wallet/rpc')
-rw-r--r--src/wallet/rpc/util.cpp16
-rw-r--r--src/wallet/rpc/util.h2
2 files changed, 18 insertions, 0 deletions
diff --git a/src/wallet/rpc/util.cpp b/src/wallet/rpc/util.cpp
index 3c1634324e..1aa2a87e99 100644
--- a/src/wallet/rpc/util.cpp
+++ b/src/wallet/rpc/util.cpp
@@ -12,10 +12,26 @@
#include <univalue.h>
+#include <boost/date_time/posix_time/posix_time.hpp>
+
namespace wallet {
static const std::string WALLET_ENDPOINT_BASE = "/wallet/";
const std::string HELP_REQUIRING_PASSPHRASE{"\nRequires wallet passphrase to be set with walletpassphrase call if wallet is encrypted.\n"};
+int64_t ParseISO8601DateTime(const std::string& str)
+{
+ static const boost::posix_time::ptime epoch = boost::posix_time::from_time_t(0);
+ static const std::locale loc(std::locale::classic(),
+ new boost::posix_time::time_input_facet("%Y-%m-%dT%H:%M:%SZ"));
+ std::istringstream iss(str);
+ iss.imbue(loc);
+ boost::posix_time::ptime ptime(boost::date_time::not_a_date_time);
+ iss >> ptime;
+ if (ptime.is_not_a_date_time() || epoch > ptime)
+ return 0;
+ return (ptime - epoch).total_seconds();
+}
+
bool GetAvoidReuseFlag(const CWallet& wallet, const UniValue& param) {
bool can_avoid_reuse = wallet.IsWalletFlagSet(WALLET_FLAG_AVOID_REUSE);
bool avoid_reuse = param.isNull() ? can_avoid_reuse : param.get_bool();
diff --git a/src/wallet/rpc/util.h b/src/wallet/rpc/util.h
index 2ca28914e7..87d34f7c11 100644
--- a/src/wallet/rpc/util.h
+++ b/src/wallet/rpc/util.h
@@ -45,6 +45,8 @@ std::string LabelFromValue(const UniValue& value);
void PushParentDescriptors(const CWallet& wallet, const CScript& script_pubkey, UniValue& entry);
void HandleWalletError(const std::shared_ptr<CWallet> wallet, DatabaseStatus& status, bilingual_str& error);
+
+int64_t ParseISO8601DateTime(const std::string& str);
} // namespace wallet
#endif // BITCOIN_WALLET_RPC_UTIL_H