Skip to content

Commit ca8078c

Browse files
authored
Merge pull request #892 from evoskuil/master
Implement path_to_request, full tests.
2 parents 2881a35 + cc462f2 commit ca8078c

File tree

15 files changed

+1506
-22
lines changed

15 files changed

+1506
-22
lines changed

Makefile.am

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ src_libbitcoin_node_la_SOURCES = \
7070
src/protocols/protocol_performer.cpp \
7171
src/protocols/protocol_transaction_in_106.cpp \
7272
src/protocols/protocol_transaction_out_106.cpp \
73+
src/rest/rest.cpp \
7374
src/sessions/session.cpp \
7475
src/sessions/session_inbound.cpp \
7576
src/sessions/session_manual.cpp \
@@ -106,6 +107,7 @@ test_libbitcoin_node_test_SOURCES = \
106107
test/chasers/chaser_transaction.cpp \
107108
test/chasers/chaser_validate.cpp \
108109
test/protocols/protocol.cpp \
110+
test/rest/rest.cpp \
109111
test/sessions/session.cpp
110112

111113
endif WITH_TESTS
@@ -225,6 +227,10 @@ include_bitcoin_node_protocols_HEADERS = \
225227
include/bitcoin/node/protocols/protocol_ws.hpp \
226228
include/bitcoin/node/protocols/protocols.hpp
227229

230+
include_bitcoin_node_restdir = ${includedir}/bitcoin/node/rest
231+
include_bitcoin_node_rest_HEADERS = \
232+
include/bitcoin/node/rest/rest.hpp
233+
228234
include_bitcoin_node_sessionsdir = ${includedir}/bitcoin/node/sessions
229235
include_bitcoin_node_sessions_HEADERS = \
230236
include/bitcoin/node/sessions/session.hpp \

builds/cmake/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ add_library( ${CANONICAL_LIB_NAME}
282282
"../../src/protocols/protocol_performer.cpp"
283283
"../../src/protocols/protocol_transaction_in_106.cpp"
284284
"../../src/protocols/protocol_transaction_out_106.cpp"
285+
"../../src/rest/rest.cpp"
285286
"../../src/sessions/session.cpp"
286287
"../../src/sessions/session_inbound.cpp"
287288
"../../src/sessions/session_manual.cpp"
@@ -348,6 +349,7 @@ if (with-tests)
348349
"../../test/chasers/chaser_transaction.cpp"
349350
"../../test/chasers/chaser_validate.cpp"
350351
"../../test/protocols/protocol.cpp"
352+
"../../test/rest/rest.cpp"
351353
"../../test/sessions/session.cpp" )
352354

353355
add_test( NAME libbitcoin-node-test COMMAND libbitcoin-node-test

builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@
135135
<ClCompile Include="..\..\..\..\test\main.cpp" />
136136
<ClCompile Include="..\..\..\..\test\node.cpp" />
137137
<ClCompile Include="..\..\..\..\test\protocols\protocol.cpp" />
138+
<ClCompile Include="..\..\..\..\test\rest\rest.cpp" />
138139
<ClCompile Include="..\..\..\..\test\sessions\session.cpp" />
139140
<ClCompile Include="..\..\..\..\test\settings.cpp" />
140141
<ClCompile Include="..\..\..\..\test\test.cpp" />

builds/msvc/vs2022/libbitcoin-node-test/libbitcoin-node-test.vcxproj.filters

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@
1616
<Filter Include="src\protocols">
1717
<UniqueIdentifier>{4BD50864-D3BC-4F64-0000-000000000002}</UniqueIdentifier>
1818
</Filter>
19-
<Filter Include="src\sessions">
19+
<Filter Include="src\rest">
2020
<UniqueIdentifier>{4BD50864-D3BC-4F64-0000-000000000003}</UniqueIdentifier>
2121
</Filter>
22+
<Filter Include="src\sessions">
23+
<UniqueIdentifier>{4BD50864-D3BC-4F64-0000-000000000004}</UniqueIdentifier>
24+
</Filter>
2225
</ItemGroup>
2326
<ItemGroup>
2427
<ClCompile Include="..\..\..\..\test\block_arena.cpp">
@@ -72,6 +75,9 @@
7275
<ClCompile Include="..\..\..\..\test\protocols\protocol.cpp">
7376
<Filter>src\protocols</Filter>
7477
</ClCompile>
78+
<ClCompile Include="..\..\..\..\test\rest\rest.cpp">
79+
<Filter>src\rest</Filter>
80+
</ClCompile>
7581
<ClCompile Include="..\..\..\..\test\sessions\session.cpp">
7682
<Filter>src\sessions</Filter>
7783
</ClCompile>

builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
<ClCompile Include="..\..\..\..\src\protocols\protocol_performer.cpp" />
156156
<ClCompile Include="..\..\..\..\src\protocols\protocol_transaction_in_106.cpp" />
157157
<ClCompile Include="..\..\..\..\src\protocols\protocol_transaction_out_106.cpp" />
158+
<ClCompile Include="..\..\..\..\src\rest\rest.cpp" />
158159
<ClCompile Include="..\..\..\..\src\sessions\session.cpp" />
159160
<ClCompile Include="..\..\..\..\src\sessions\session_inbound.cpp" />
160161
<ClCompile Include="..\..\..\..\src\sessions\session_manual.cpp" />
@@ -217,6 +218,7 @@
217218
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_web.hpp" />
218219
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocol_ws.hpp" />
219220
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocols.hpp" />
221+
<ClInclude Include="..\..\..\..\include\bitcoin\node\rest\rest.hpp" />
220222
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session.hpp" />
221223
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_inbound.hpp" />
222224
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session_manual.hpp" />

builds/msvc/vs2022/libbitcoin-node/libbitcoin-node.vcxproj.filters

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,37 @@
88
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
99
<ItemGroup>
1010
<Filter Include="include">
11-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000005}</UniqueIdentifier>
11+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000006}</UniqueIdentifier>
1212
</Filter>
1313
<Filter Include="include\bitcoin">
14-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000006}</UniqueIdentifier>
14+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000007}</UniqueIdentifier>
1515
</Filter>
1616
<Filter Include="include\bitcoin\node">
17-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000007}</UniqueIdentifier>
17+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000008}</UniqueIdentifier>
1818
</Filter>
1919
<Filter Include="include\bitcoin\node\channels">
20-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000008}</UniqueIdentifier>
20+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000009}</UniqueIdentifier>
2121
</Filter>
2222
<Filter Include="include\bitcoin\node\chasers">
23-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000009}</UniqueIdentifier>
23+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000A}</UniqueIdentifier>
2424
</Filter>
2525
<Filter Include="include\bitcoin\node\impl">
26-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000A}</UniqueIdentifier>
26+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000B}</UniqueIdentifier>
2727
</Filter>
2828
<Filter Include="include\bitcoin\node\impl\chasers">
29-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000D}</UniqueIdentifier>
29+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000F}</UniqueIdentifier>
3030
</Filter>
3131
<Filter Include="include\bitcoin\node\protocols">
32-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000B}</UniqueIdentifier>
32+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000C}</UniqueIdentifier>
33+
</Filter>
34+
<Filter Include="include\bitcoin\node\rest">
35+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000D}</UniqueIdentifier>
3336
</Filter>
3437
<Filter Include="include\bitcoin\node\sessions">
35-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000C}</UniqueIdentifier>
38+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000E}</UniqueIdentifier>
3639
</Filter>
3740
<Filter Include="resource">
38-
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-00000000000E}</UniqueIdentifier>
41+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000001}</UniqueIdentifier>
3942
</Filter>
4043
<Filter Include="src">
4144
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000000}</UniqueIdentifier>
@@ -49,9 +52,12 @@
4952
<Filter Include="src\protocols">
5053
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000003}</UniqueIdentifier>
5154
</Filter>
52-
<Filter Include="src\sessions">
55+
<Filter Include="src\rest">
5356
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000004}</UniqueIdentifier>
5457
</Filter>
58+
<Filter Include="src\sessions">
59+
<UniqueIdentifier>{5FFB5F52-0772-4404-0000-000000000005}</UniqueIdentifier>
60+
</Filter>
5561
</ItemGroup>
5662
<ItemGroup>
5763
<ClCompile Include="..\..\..\..\src\block_arena.cpp">
@@ -156,6 +162,9 @@
156162
<ClCompile Include="..\..\..\..\src\protocols\protocol_transaction_out_106.cpp">
157163
<Filter>src\protocols</Filter>
158164
</ClCompile>
165+
<ClCompile Include="..\..\..\..\src\rest\rest.cpp">
166+
<Filter>src\rest</Filter>
167+
</ClCompile>
159168
<ClCompile Include="..\..\..\..\src\sessions\session.cpp">
160169
<Filter>src\sessions</Filter>
161170
</ClCompile>
@@ -338,6 +347,9 @@
338347
<ClInclude Include="..\..\..\..\include\bitcoin\node\protocols\protocols.hpp">
339348
<Filter>include\bitcoin\node\protocols</Filter>
340349
</ClInclude>
350+
<ClInclude Include="..\..\..\..\include\bitcoin\node\rest\rest.hpp">
351+
<Filter>include\bitcoin\node\rest</Filter>
352+
</ClInclude>
341353
<ClInclude Include="..\..\..\..\include\bitcoin\node\sessions\session.hpp">
342354
<Filter>include\bitcoin\node\sessions</Filter>
343355
</ClInclude>

include/bitcoin/node.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
#include <bitcoin/node/protocols/protocol_web.hpp>
7272
#include <bitcoin/node/protocols/protocol_ws.hpp>
7373
#include <bitcoin/node/protocols/protocols.hpp>
74+
#include <bitcoin/node/rest/rest.hpp>
7475
#include <bitcoin/node/sessions/session.hpp>
7576
#include <bitcoin/node/sessions/session_inbound.hpp>
7677
#include <bitcoin/node/sessions/session_manual.hpp>

include/bitcoin/node/error.hpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,24 @@ enum error_t : uint8_t
9898
confirm10,
9999
confirm11,
100100
confirm12,
101-
confirm13
101+
confirm13,
102+
103+
/// server (url parse codes)
104+
empty_path,
105+
invalid_number,
106+
invalid_hash,
107+
missing_version,
108+
missing_target,
109+
invalid_target,
110+
missing_hash,
111+
missing_height,
112+
missing_position,
113+
missing_id_type,
114+
invalid_id_type,
115+
missing_component,
116+
invalid_component,
117+
invalid_subcomponent,
118+
extra_segment
102119
};
103120

104121
// No current need for error_code equivalence mapping.

include/bitcoin/node/full_node.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ class BCN_API full_node
206206
chaser_template chaser_template_;
207207
chaser_snapshot chaser_snapshot_;
208208
chaser_storage chaser_storage_;
209-
event_subscriber event_subscriber_;
209+
event_subscriber event_subscriber_{};
210210
};
211211

212212
} // namespace node

include/bitcoin/node/rest/rest.hpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* Copyright (c) 2011-2025 libbitcoin developers (see AUTHORS)
3+
*
4+
* This file is part of libbitcoin.
5+
*
6+
* This program is free software: you can redistribute it and/or modify
7+
* it under the terms of the GNU Affero General Public License as published by
8+
* the Free Software Foundation, either version 3 of the License, or
9+
* (at your option) any later version.
10+
*
11+
* This program is distributed in the hope that it will be useful,
12+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14+
* GNU Affero General Public License for more details.
15+
*
16+
* You should have received a copy of the GNU Affero General Public License
17+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18+
*/
19+
#ifndef LIBBITCOIN_NODE_REST_HPP
20+
#define LIBBITCOIN_NODE_REST_HPP
21+
22+
#include <bitcoin/node/define.hpp>
23+
24+
namespace libbitcoin {
25+
namespace node {
26+
27+
BCN_API code path_to_request(network::rpc::request_t& out,
28+
const std::string& path) NOEXCEPT;
29+
30+
} // namespace network
31+
} // namespace libbitcoin
32+
33+
#endif

0 commit comments

Comments
 (0)