Skip to content

Commit a31a343

Browse files
committed
Fix output_spenders target.
1 parent f21376e commit a31a343

File tree

4 files changed

+24
-42
lines changed

4 files changed

+24
-42
lines changed

include/bitcoin/node/protocols/protocol_explore.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class BCN_API protocol_explore
105105
bool handle_get_output_spender(const code& ec, interface::output_spender,
106106
uint8_t version, uint8_t media, const system::hash_cptr& hash,
107107
uint32_t index) NOEXCEPT;
108-
bool handle_get_output_spenders(const code& ec, interface::output_spender,
108+
bool handle_get_output_spenders(const code& ec, interface::output_spenders,
109109
uint8_t version, uint8_t media, const system::hash_cptr& hash,
110110
uint32_t index) NOEXCEPT;
111111

src/parse/target.cpp

Lines changed: 16 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -130,16 +130,6 @@ code parse_target(request_t& out, const std::string_view& path) NOEXCEPT
130130
return error::missing_component;
131131

132132
const auto component = segments[segment++];
133-
////if (component == "scripts")
134-
////{
135-
//// method = "input_scripts";
136-
////}
137-
////else if (component == "witnesses")
138-
////{
139-
//// method = "input_witnesses";
140-
////}
141-
////else
142-
////{
143133
uint32_t index{};
144134
if (!to_number(index, component))
145135
return error::invalid_number;
@@ -151,15 +141,14 @@ code parse_target(request_t& out, const std::string_view& path) NOEXCEPT
151141
}
152142
else
153143
{
154-
auto subcomponent = segments[segment++];
144+
const auto subcomponent = segments[segment++];
155145
if (subcomponent == "script")
156146
method = "input_script";
157147
else if (subcomponent == "witness")
158148
method = "input_witness";
159149
else
160150
return error::invalid_subcomponent;
161151
}
162-
////}
163152
}
164153
else if (target == "output")
165154
{
@@ -174,36 +163,26 @@ code parse_target(request_t& out, const std::string_view& path) NOEXCEPT
174163
return error::missing_component;
175164

176165
const auto component = segments[segment++];
177-
////if (component == "scripts")
178-
////{
179-
//// method = "output_scripts";
180-
////}
181-
////else
182-
if (component == "spenders")
166+
uint32_t index{};
167+
if (!to_number(index, component))
168+
return error::invalid_number;
169+
170+
params["index"] = index;
171+
if (segment == segments.size())
183172
{
184-
method = "output_spenders";
173+
method = "output";
185174
}
186175
else
187176
{
188-
uint32_t index{};
189-
if (!to_number(index, component))
190-
return error::invalid_number;
191-
192-
params["index"] = index;
193-
if (segment == segments.size())
194-
{
195-
method = "output";
196-
}
177+
const auto subcomponent = segments[segment++];
178+
if (subcomponent == "script")
179+
method = "output_script";
180+
else if (subcomponent == "spender")
181+
method = "output_spender";
182+
else if (subcomponent == "spenders")
183+
method = "output_spenders";
197184
else
198-
{
199-
auto subcomponent = segments[segment++];
200-
if (subcomponent == "script")
201-
method = "output_script";
202-
else if (subcomponent == "spender")
203-
method = "output_spender";
204-
else
205-
return error::invalid_subcomponent;
206-
}
185+
return error::invalid_subcomponent;
207186
}
208187
}
209188
else if (target == "transaction")

src/protocols/protocol_explore.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ bool protocol_explore::handle_get_output_spender(const code& ec,
651651
}
652652

653653
bool protocol_explore::handle_get_output_spenders(const code& ec,
654-
interface::output_spender, uint8_t, uint8_t media, const hash_cptr& hash,
654+
interface::output_spenders, uint8_t, uint8_t media, const hash_cptr& hash,
655655
uint32_t index) NOEXCEPT
656656
{
657657
if (stopped(ec))

test/parse/target.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,7 @@ BOOST_AUTO_TEST_CASE(parse__parse_target__output_spender_extra_segment__extra_se
937937

938938
BOOST_AUTO_TEST_CASE(parse__parse_target__output_spenders_valid__expected)
939939
{
940-
const std::string path = "/v255/output/0000000000000000000000000000000000000000000000000000000000000042/spenders";
940+
const std::string path = "/v255/output/0000000000000000000000000000000000000000000000000000000000000042/1/spenders";
941941

942942
request_t request{};
943943
BOOST_REQUIRE(!parse_target(request, path));
@@ -948,22 +948,25 @@ BOOST_AUTO_TEST_CASE(parse__parse_target__output_spenders_valid__expected)
948948
BOOST_REQUIRE(std::holds_alternative<object_t>(params));
949949

950950
const auto& object = std::get<object_t>(request.params.value());
951-
BOOST_REQUIRE_EQUAL(object.size(), 2u);
951+
BOOST_REQUIRE_EQUAL(object.size(), 3u);
952952

953953
const auto version = std::get<uint8_t>(object.at("version").value());
954954
BOOST_REQUIRE_EQUAL(version, 255u);
955955

956956
const auto& any = std::get<any_t>(object.at("hash").value());
957957
BOOST_REQUIRE(any.holds_alternative<const hash_digest>());
958958

959+
const auto index = std::get<uint32_t>(object.at("index").value());
960+
BOOST_REQUIRE_EQUAL(index, 1u);
961+
959962
const auto& hash_cptr = any.get<const hash_digest>();
960963
BOOST_REQUIRE(hash_cptr);
961964
BOOST_REQUIRE_EQUAL(to_uintx(*hash_cptr), uint256_t{ 0x42 });
962965
}
963966

964967
BOOST_AUTO_TEST_CASE(parse__parse_target__output_spenders_extra_segment__extra_segment)
965968
{
966-
const std::string path = "/v3/output/0000000000000000000000000000000000000000000000000000000000000000/spenders/extra";
969+
const std::string path = "/v3/output/0000000000000000000000000000000000000000000000000000000000000000/1/spenders/extra";
967970
request_t out{};
968971
BOOST_REQUIRE_EQUAL(parse_target(out, path), node::error::extra_segment);
969972
}

0 commit comments

Comments
 (0)