Skip to content

Commit

Permalink
Merge branch 'dev/walletd_rpc_has_address'
Browse files Browse the repository at this point in the history
  • Loading branch information
aivve committed May 5, 2024
2 parents 2087d9a + 7445f0d commit 6d4196d
Show file tree
Hide file tree
Showing 9 changed files with 78 additions and 13 deletions.
1 change: 1 addition & 0 deletions include/IWallet.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ class IWallet {

virtual size_t getAddressCount() const = 0;
virtual std::string getAddress(size_t index) const = 0;
virtual bool isMyAddress(const std::string& address) const = 0;
virtual KeyPair getAddressSpendKey(size_t index) const = 0;
virtual KeyPair getAddressSpendKey(const std::string& address) const = 0;
virtual KeyPair getViewKey() const = 0;
Expand Down
5 changes: 5 additions & 0 deletions src/JsonRpcServer/JsonRpcServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,11 @@ void JsonRpcServer::processRequest(const CryptoNote::HttpRequest& req, CryptoNot
Common::JsonValue jsonRpcRequest;
Common::JsonValue jsonRpcResponse(Common::JsonValue::OBJECT);

resp.addHeader("Content-Type", "application/json");
resp.addHeader("Access-Control-Allow-Origin", "*");
resp.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
resp.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");

try {
jsonInputStream >> jsonRpcRequest;
} catch (std::runtime_error&) {
Expand Down
15 changes: 13 additions & 2 deletions src/PaymentGate/PaymentServiceJsonRpcMessages.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright (c) 2012-2017, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2018, The TurtleCoin Developers
// Copyright (c) 2018-2019 The Cash2 developers
// Copyright (c) 2016-2020 The Karbo developers
// Copyright (c) 2018-2019, The Cash2 developers
// Copyright (c) 2021-2023, The Talleo developers
// Copyright (c) 2016-2024, The Karbo developers
//
// This file is part of Karbo.
//
Expand Down Expand Up @@ -157,6 +158,16 @@ void DeleteAddress::Request::serialize(CryptoNote::ISerializer& serializer) {
void DeleteAddress::Response::serialize(CryptoNote::ISerializer& serializer) {
}

void HasAddress::Request::serialize(CryptoNote::ISerializer& serializer) {
if (!serializer(address, "address")) {
throw RequestSerializationError();
}
}

void HasAddress::Response::serialize(CryptoNote::ISerializer& serializer) {
serializer(isOurs, "isOurs");
}

void GetSpendKeys::Request::serialize(CryptoNote::ISerializer& serializer) {
if (!serializer(address, "address")) {
throw RequestSerializationError();
Expand Down
18 changes: 16 additions & 2 deletions src/PaymentGate/PaymentServiceJsonRpcMessages.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright (c) 2012-2017, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2018, The TurtleCoin Developers
// Copyright (c) 2018-2019 The Cash2 developers
// Copyright (c) 2016-2020 The Karbo developers
// Copyright (c) 2018-2019, The Cash2 developers
// Copyright (c) 2016-2024 The Karbo developers
//
// This file is part of Karbo.
//
Expand Down Expand Up @@ -200,6 +200,20 @@ struct DeleteAddress {
};
};

struct HasAddress {
struct Request {
std::string address;

void serialize(CryptoNote::ISerializer& serializer);
};

struct Response {
bool isOurs;

void serialize(CryptoNote::ISerializer& serializer);
};
};

struct GetSpendKeys {
struct Request {
std::string address;
Expand Down
10 changes: 8 additions & 2 deletions src/PaymentGate/PaymentServiceJsonRpcServer.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright (c) 2012-2017, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2018, The TurtleCoin Developers
// Copyright (c) 2018-2019 The Cash2 developers
// Copyright (c) 2016-2020 The Karbo developers
// Copyright (c) 2018-2019, The Cash2 developers
// Copyright (c) 2021-2023, The Talleo developers
// Copyright (c) 2016-2024, The Karbo developers
//
// This file is part of Karbo.
//
Expand Down Expand Up @@ -43,6 +44,7 @@ PaymentServiceJsonRpcServer::PaymentServiceJsonRpcServer(System::Dispatcher& sys
handlers.emplace("createAddress", jsonHandler<CreateAddress::Request, CreateAddress::Response>(std::bind(&PaymentServiceJsonRpcServer::handleCreateAddress, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace("createAddressList", jsonHandler<CreateAddressList::Request, CreateAddressList::Response>(std::bind(&PaymentServiceJsonRpcServer::handleCreateAddressList, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace("deleteAddress", jsonHandler<DeleteAddress::Request, DeleteAddress::Response>(std::bind(&PaymentServiceJsonRpcServer::handleDeleteAddress, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace("hasAddress", jsonHandler<HasAddress::Request, HasAddress::Response>(std::bind(&PaymentServiceJsonRpcServer::handleHasAddress, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace("getSpendKeys", jsonHandler<GetSpendKeys::Request, GetSpendKeys::Response>(std::bind(&PaymentServiceJsonRpcServer::handleGetSpendKeys, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace("getBalance", jsonHandler<GetBalance::Request, GetBalance::Response>(std::bind(&PaymentServiceJsonRpcServer::handleGetBalance, this, std::placeholders::_1, std::placeholders::_2)));
handlers.emplace("getBlockHashes", jsonHandler<GetBlockHashes::Request, GetBlockHashes::Response>(std::bind(&PaymentServiceJsonRpcServer::handleGetBlockHashes, this, std::placeholders::_1, std::placeholders::_2)));
Expand Down Expand Up @@ -168,6 +170,10 @@ std::error_code PaymentServiceJsonRpcServer::handleDeleteAddress(const DeleteAdd
return service.deleteAddress(request.address);
}

std::error_code PaymentServiceJsonRpcServer::handleHasAddress(const HasAddress::Request& request, HasAddress::Response& response) {
return service.hasAddress(request.address, response.isOurs);
}

std::error_code PaymentServiceJsonRpcServer::handleGetSpendKeys(const GetSpendKeys::Request& request, GetSpendKeys::Response& response) {
return service.getSpendkeys(request.address, response.spendPublicKey, response.spendSecretKey);
}
Expand Down
6 changes: 4 additions & 2 deletions src/PaymentGate/PaymentServiceJsonRpcServer.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright (c) 2012-2017, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2018, The TurtleCoin Developers
// Copyright (c) 2018-2019 The Cash2 developers
// Copyright (c) 2016-2020 The Karbo developers
// Copyright (c) 2018-2019, The Cash2 developers
// Copyright (c) 2021-2023, The Talleo developers
// Copyright (c) 2016-2024, The Karbo developers
//
// This file is part of Karbo.
//
Expand Down Expand Up @@ -80,6 +81,7 @@ class PaymentServiceJsonRpcServer : public CryptoNote::JsonRpcServer {
std::error_code handleCreateAddress(const CreateAddress::Request& request, CreateAddress::Response& response);
std::error_code handleCreateAddressList(const CreateAddressList::Request& request, CreateAddressList::Response& response);
std::error_code handleDeleteAddress(const DeleteAddress::Request& request, DeleteAddress::Response& response);
std::error_code handleHasAddress(const HasAddress::Request& request, HasAddress::Response& response);
std::error_code handleGetSpendKeys(const GetSpendKeys::Request& request, GetSpendKeys::Response& response);
std::error_code handleGetBalance(const GetBalance::Request& request, GetBalance::Response& response);
std::error_code handleGetBlockHashes(const GetBlockHashes::Request& request, GetBlockHashes::Response& response);
Expand Down
28 changes: 26 additions & 2 deletions src/PaymentGate/WalletService.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright (c) 2012-2017, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2018, The TurtleCoin Developers
// Copyright (c) 2018-2019 The Cash2 developers
// Copyright (c) 2016-2020, Karbo developers
// Copyright (c) 2018-2019, The Cash2 developers
// Copyright (c) 2021-2023, The Talleo developers
// Copyright (c) 2016-2024, The Karbo developers
//
// This file is part of Karbo.
//
Expand Down Expand Up @@ -848,6 +849,29 @@ std::error_code WalletService::deleteAddress(const std::string& address) {
return std::error_code();
}

std::error_code WalletService::hasAddress(const std::string& address, bool& isOurs) {
try {
System::EventLock lk(readyEvent);

logger(Logging::DEBUGGING) << "Has address request came";

isOurs = wallet.isMyAddress(address);
if (!isOurs) {
logger(Logging::DEBUGGING, Logging::BRIGHT_YELLOW) << "Address " << address << " doesn't exist in container";
//return make_error_code(CryptoNote::error::WalletServiceErrorCode::OBJECT_NOT_FOUND);
}
else {
logger(Logging::DEBUGGING) << "Address " << address << " exists in container";
}
}
catch (std::system_error& x) {
logger(Logging::DEBUGGING, Logging::BRIGHT_YELLOW) << "Error while checking if address exists in container: " << x.what();
return x.code();
}

return std::error_code();
}

std::error_code WalletService::getSpendkeys(const std::string& address, std::string& publicSpendKeyText, std::string& secretSpendKeyText) {
try {
System::EventLock lk(readyEvent);
Expand Down
6 changes: 4 additions & 2 deletions src/PaymentGate/WalletService.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright (c) 2012-2017, The CryptoNote developers, The Bytecoin developers
// Copyright (c) 2018, The TurtleCoin Developers
// Copyright (c) 2018-2019 The Cash2 developers
// Copyright (c) 2016-2020 The Karbo developers
// Copyright (c) 2018-2019, The Cash2 developers
// Copyright (c) 2021-2023, The Talleo developers
// Copyright (c) 2016-2024, The Karbo developers
//
// This file is part of Karbo.
//
Expand Down Expand Up @@ -84,6 +85,7 @@ class WalletService {
std::error_code createTrackingAddress(const std::string& spendPublicKeyText, std::string& address);
std::error_code createTrackingAddress(const std::string& spendPublicKeyText, const uint32_t scanHeight, std::string& address);
std::error_code deleteAddress(const std::string& address);
std::error_code hasAddress(const std::string& address, bool& isOurs);
std::error_code getSpendkeys(const std::string& address, std::string& publicSpendKeyText, std::string& secretSpendKeyText);
std::error_code getBalance(const std::string& address, uint64_t& availableBalance, uint64_t& lockedAmount);
std::error_code getBalance(uint64_t& availableBalance, uint64_t& lockedAmount);
Expand Down
2 changes: 1 addition & 1 deletion src/Wallet/WalletGreen.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ class WalletGreen : public IWallet,

virtual size_t getAddressCount() const override;
virtual std::string getAddress(size_t index) const override;
virtual bool isMyAddress(const std::string& address) const override;
virtual KeyPair getAddressSpendKey(size_t index) const override;
virtual KeyPair getAddressSpendKey(const std::string& address) const override;
virtual KeyPair getViewKey() const override;
Expand Down Expand Up @@ -366,7 +367,6 @@ class WalletGreen : public IWallet,
void filterOutTransactions(WalletTransactions& transactions, WalletTransfers& transfers, std::function<bool (const WalletTransaction&)>&& pred) const;
void initBlockchain(const Crypto::PublicKey& viewPublicKey);
CryptoNote::AccountPublicAddress getChangeDestination(const std::string& changeDestinationAddress, const std::vector<std::string>& sourceAddresses) const;
bool isMyAddress(const std::string& address) const;

void deleteContainerFromUnlockTransactionJobs(const ITransfersContainer* container);
std::vector<size_t> deleteTransfersForAddress(const std::string& address, std::vector<size_t>& deletedTransactions);
Expand Down

0 comments on commit 6d4196d

Please sign in to comment.