xrpld
Toggle main menu visibility
Loading...
Searching...
No Matches
test
jtx
impl
trust.cpp
1
#include <test/jtx/trust.h>
2
3
#include <test/jtx/Account.h>
4
5
#include <xrpl/basics/contract.h>
6
#include <xrpl/json/json_value.h>
7
#include <xrpl/protocol/SField.h>
8
#include <xrpl/protocol/STAmount.h>
9
#include <xrpl/protocol/jss.h>
10
11
#include <
cstdint
>
12
#include <
optional
>
13
#include <
stdexcept
>
14
15
namespace
xrpl::test::jtx
{
16
17
json::Value
18
trust
(
Account
const
& account,
STAmount
const
& amount,
std::uint32_t
flags)
19
{
20
if
(
isXRP
(amount))
21
Throw<std::runtime_error>
(
"trust() requires IOU"
);
22
json::Value
jv;
23
jv[jss::Account] = account.human();
24
jv[jss::LimitAmount] = amount.
getJson
(
JsonOptions::Values::None
);
25
jv[jss::TransactionType] = jss::TrustSet;
26
jv[jss::Flags] = flags;
27
return
jv;
28
}
29
30
// This function overload is especially useful for modelling Authorised trust
31
// lines. account (first function parameter) is the issuing authority, it
32
// authorises peer (third function parameter) to hold a certain currency
33
// (amount, the second function parameter)
34
json::Value
35
trust
(
Account
const
& account,
STAmount
const
& amount,
Account
const
& peer,
std::uint32_t
flags)
36
{
37
if
(
isXRP
(amount))
38
Throw<std::runtime_error>
(
"trust() requires IOU"
);
39
json::Value
jv;
40
jv[jss::Account] = account.human();
41
{
42
auto
& ja = jv[jss::LimitAmount] = amount.
getJson
(
JsonOptions::Values::None
);
43
ja[jss::issuer] = peer.
human
();
44
}
45
jv[jss::TransactionType] = jss::TrustSet;
46
jv[jss::Flags] = flags;
47
return
jv;
48
}
49
50
json::Value
51
claw
(
Account
const
& account,
STAmount
const
& amount,
std::optional<Account>
const
& mptHolder)
52
{
53
json::Value
jv;
54
jv[jss::Account] = account.human();
55
jv[jss::Amount] = amount.
getJson
(
JsonOptions::Values::None
);
56
jv[jss::TransactionType] = jss::Clawback;
57
58
if
(mptHolder)
59
jv[sfHolder.jsonName] = mptHolder->human();
60
61
return
jv;
62
}
63
64
}
// namespace xrpl::test::jtx
json::Value
Represents a JSON value.
Definition
json_value.h:117
xrpl::STAmount
Definition
STAmount.h:46
xrpl::STAmount::getJson
json::Value getJson(JsonOptions=JsonOptions::Values::None) const override
Definition
STAmount.cpp:735
xrpl::test::jtx::Account
Immutable cryptographic account descriptor.
Definition
jtx/Account.h:21
xrpl::test::jtx::Account::human
std::string const & human() const
Returns the human readable public key.
Definition
jtx/Account.h:113
cstdint
std::uint32_t
xrpl::test::jtx
Definition
Oracle_test.cpp:34
xrpl::test::jtx::claw
json::Value claw(Account const &account, STAmount const &amount, std::optional< Account > const &mptHolder)
Definition
trust.cpp:51
xrpl::test::jtx::trust
json::Value trust(Account const &account, STAmount const &amount, std::uint32_t flags)
Modify a trust line.
Definition
trust.cpp:18
xrpl::isXRP
bool isXRP(AccountID const &c)
Definition
AccountID.h:84
xrpl::Throw
XRPL_NO_SANITIZE_ADDRESS void Throw(Args &&... args)
Definition
contract.h:52
optional
stdexcept
xrpl::JsonOptions::Values::None
@ None
Definition
STBase.h:27
Generated by
1.17.0