@@ -90,7 +90,7 @@ async fn compute_registration_epoch(
90
90
}
91
91
}
92
92
93
- mod handlers {
93
+ pub ( crate ) mod handlers {
94
94
use crate :: database:: repository:: SignerGetter ;
95
95
use crate :: dependency_injection:: EpochServiceWrapper ;
96
96
use crate :: entities:: {
@@ -102,12 +102,36 @@ mod handlers {
102
102
} ;
103
103
use crate :: { http_server:: routes:: reply, SignerRegisterer , SignerRegistrationError } ;
104
104
use crate :: { FromRegisterSignerAdapter , MetricsService , VerificationKeyStorer } ;
105
+ use mithril_common:: entities:: SignerWithStake ;
105
106
use mithril_common:: messages:: { RegisterSignerMessage , TryFromMessageAdapter } ;
106
107
use slog:: { debug, warn, Logger } ;
107
108
use std:: convert:: Infallible ;
108
109
use std:: sync:: Arc ;
109
110
use warp:: http:: StatusCode ;
110
111
112
+ pub ( crate ) fn send_registration_event (
113
+ transmitter : & TransmitterService < EventMessage > ,
114
+ signer_with_stake : & SignerWithStake ,
115
+ signer_node_version : Option < String > ,
116
+ epoch_str : & str ,
117
+ ) -> Result < ( ) , String > {
118
+ let mut headers: Vec < ( & str , & str ) > = match signer_node_version. as_ref ( ) {
119
+ Some ( version) => vec ! [ ( "signer-node-version" , version) ] ,
120
+ None => Vec :: new ( ) ,
121
+ } ;
122
+
123
+ if !epoch_str. is_empty ( ) {
124
+ headers. push ( ( "epoch" , epoch_str) ) ;
125
+ }
126
+
127
+ transmitter. send_event_message :: < SignerWithStake > (
128
+ "HTTP::signer_register" ,
129
+ "register_signer" ,
130
+ & signer_with_stake,
131
+ headers,
132
+ )
133
+ }
134
+
111
135
/// Register Signer
112
136
pub async fn register_signer (
113
137
signer_node_version : Option < String > ,
@@ -137,37 +161,30 @@ mod handlers {
137
161
}
138
162
} ;
139
163
140
- let mut headers: Vec < ( & str , & str ) > = match signer_node_version. as_ref ( ) {
141
- Some ( version) => vec ! [ ( "signer-node-version" , version) ] ,
142
- None => Vec :: new ( ) ,
143
- } ;
144
-
145
164
let epoch_str = fetch_epoch_header_value ( epoch_service, & logger) . await ;
146
- if !epoch_str. is_empty ( ) {
147
- headers. push ( ( "epoch" , epoch_str. as_str ( ) ) ) ;
148
- }
149
165
150
166
match signer_registerer
151
167
. register_signer ( registration_epoch, & signer)
152
168
. await
153
169
{
154
170
Ok ( signer_with_stake) => {
155
- let _ = event_transmitter. send_event_message (
156
- "HTTP::signer_register" ,
157
- "register_signer" ,
171
+ let _ = send_registration_event (
172
+ & event_transmitter,
158
173
& signer_with_stake,
159
- headers,
174
+ signer_node_version,
175
+ epoch_str. as_str ( ) ,
160
176
) ;
161
177
162
178
Ok ( reply:: empty ( StatusCode :: CREATED ) )
163
179
}
164
180
Err ( SignerRegistrationError :: ExistingSigner ( signer_with_stake) ) => {
165
181
debug ! ( logger, "register_signer::already_registered" ) ;
166
- let _ = event_transmitter . send_event_message (
167
- "HTTP::signer_register" ,
168
- "register_signer" ,
182
+
183
+ let _ = send_registration_event (
184
+ & event_transmitter ,
169
185
& signer_with_stake,
170
- headers,
186
+ signer_node_version,
187
+ epoch_str. as_str ( ) ,
171
188
) ;
172
189
Ok ( reply:: empty ( StatusCode :: CREATED ) )
173
190
}
0 commit comments