@@ -41,12 +41,9 @@ pub trait MARSClient: Sync + Send {
4141 request : & AdRequest ,
4242 cache_policy : & RequestCachePolicy ,
4343 ) -> Result < AdResponse , FetchAdsError > ;
44- fn record_impression (
45- & self ,
46- url_callback_string : Option < String > ,
47- ) -> Result < ( ) , RecordImpressionError > ;
48- fn record_click ( & self , url_callback_string : Option < String > ) -> Result < ( ) , RecordClickError > ;
49- fn report_ad ( & self , url_callback_string : Option < String > ) -> Result < ( ) , ReportAdError > ;
44+ fn record_impression ( & self , callback : Url ) -> Result < ( ) , RecordImpressionError > ;
45+ fn record_click ( & self , callback : Url ) -> Result < ( ) , RecordClickError > ;
46+ fn report_ad ( & self , callback : Url ) -> Result < ( ) , ReportAdError > ;
5047 fn get_context_id ( & self ) -> context_id:: ApiResult < String > ;
5148 fn cycle_context_id ( & mut self ) -> context_id:: ApiResult < String > ;
5249 fn get_mars_endpoint ( & self ) -> & Url ;
@@ -97,9 +94,8 @@ impl DefaultMARSClient {
9794 }
9895 }
9996
100- fn make_callback_request ( & self , url_callback_string : & str ) -> Result < ( ) , CallbackRequestError > {
101- let url = Url :: parse ( url_callback_string) ?;
102- let request = Request :: get ( url) ;
97+ fn make_callback_request ( & self , callback : Url ) -> Result < ( ) , CallbackRequestError > {
98+ let request = Request :: get ( callback) ;
10399 let response = request. send ( ) ?;
104100 check_http_status_for_error ( & response) . map_err ( Into :: into)
105101 }
@@ -153,37 +149,16 @@ impl MARSClient for DefaultMARSClient {
153149 }
154150 }
155151
156- fn record_impression (
157- & self ,
158- url_callback_string : Option < String > ,
159- ) -> Result < ( ) , RecordImpressionError > {
160- match url_callback_string {
161- Some ( callback) => self . make_callback_request ( & callback) . map_err ( Into :: into) ,
162- None => Err ( CallbackRequestError :: MissingCallback {
163- message : "Impression callback url empty." . to_string ( ) ,
164- }
165- . into ( ) ) ,
166- }
152+ fn record_impression ( & self , callback : Url ) -> Result < ( ) , RecordImpressionError > {
153+ Ok ( self . make_callback_request ( callback) ?)
167154 }
168155
169- fn record_click ( & self , url_callback_string : Option < String > ) -> Result < ( ) , RecordClickError > {
170- match url_callback_string {
171- Some ( callback) => self . make_callback_request ( & callback) . map_err ( Into :: into) ,
172- None => Err ( CallbackRequestError :: MissingCallback {
173- message : "Click callback url empty." . to_string ( ) ,
174- }
175- . into ( ) ) ,
176- }
156+ fn record_click ( & self , callback : Url ) -> Result < ( ) , RecordClickError > {
157+ Ok ( self . make_callback_request ( callback) ?)
177158 }
178159
179- fn report_ad ( & self , url_callback_string : Option < String > ) -> Result < ( ) , ReportAdError > {
180- match url_callback_string {
181- Some ( callback) => self . make_callback_request ( & callback) . map_err ( Into :: into) ,
182- None => Err ( CallbackRequestError :: MissingCallback {
183- message : "Report callback url empty." . to_string ( ) ,
184- }
185- . into ( ) ) ,
186- }
160+ fn report_ad ( & self , callback : Url ) -> Result < ( ) , ReportAdError > {
161+ Ok ( self . make_callback_request ( callback) ?)
187162 }
188163
189164 fn clear_cache ( & self ) -> Result < ( ) , HttpCacheError > {
@@ -225,36 +200,19 @@ mod tests {
225200 assert_ne ! ( client. get_context_id( ) . unwrap( ) , TEST_CONTEXT_ID ) ;
226201 }
227202
228- #[ test]
229- fn test_record_impression_with_empty_callback_should_fail ( ) {
230- let client = create_test_client ( mockito:: server_url ( ) ) ;
231- let result = client. record_impression ( None ) ;
232- assert ! ( result. is_err( ) ) ;
233- }
234-
235- #[ test]
236- fn test_record_click_with_empty_callback_should_fail ( ) {
237- let client = create_test_client ( mockito:: server_url ( ) ) ;
238- let result = client. record_click ( None ) ;
239- assert ! ( result. is_err( ) ) ;
240- }
241-
242- #[ test]
243- fn test_record_report_with_empty_callback_should_fail ( ) {
244- let client = create_test_client ( mockito:: server_url ( ) ) ;
245- let result = client. report_ad ( None ) ;
246- assert ! ( result. is_err( ) ) ;
247- }
248-
249203 #[ test]
250204 fn test_record_impression_with_valid_url_should_succeed ( ) {
251205 viaduct_dev:: init_backend_dev ( ) ;
252206 let _m = mock ( "GET" , "/impression_callback_url" )
253207 . with_status ( 200 )
254208 . create ( ) ;
255209 let client = create_test_client ( mockito:: server_url ( ) ) ;
256- let url = format ! ( "{}/impression_callback_url" , & mockito:: server_url( ) ) ;
257- let result = client. record_impression ( Some ( url) ) ;
210+ let url = Url :: parse ( & format ! (
211+ "{}/impression_callback_url" ,
212+ & mockito:: server_url( )
213+ ) )
214+ . unwrap ( ) ;
215+ let result = client. record_impression ( url) ;
258216 assert ! ( result. is_ok( ) ) ;
259217 }
260218
@@ -264,8 +222,8 @@ mod tests {
264222 let _m = mock ( "GET" , "/click_callback_url" ) . with_status ( 200 ) . create ( ) ;
265223
266224 let client = create_test_client ( mockito:: server_url ( ) ) ;
267- let url = format ! ( "{}/click_callback_url" , & mockito:: server_url( ) ) ;
268- let result = client. record_click ( Some ( url) ) ;
225+ let url = Url :: parse ( & format ! ( "{}/click_callback_url" , & mockito:: server_url( ) ) ) . unwrap ( ) ;
226+ let result = client. record_click ( url) ;
269227 assert ! ( result. is_ok( ) ) ;
270228 }
271229
@@ -277,8 +235,12 @@ mod tests {
277235 . create ( ) ;
278236
279237 let client = create_test_client ( mockito:: server_url ( ) ) ;
280- let url = format ! ( "{}/report_ad_callback_url" , & mockito:: server_url( ) ) ;
281- let result = client. report_ad ( Some ( url) ) ;
238+ let url = Url :: parse ( & format ! (
239+ "{}/report_ad_callback_url" ,
240+ & mockito:: server_url( )
241+ ) )
242+ . unwrap ( ) ;
243+ let result = client. report_ad ( url) ;
282244 assert ! ( result. is_ok( ) ) ;
283245 }
284246
0 commit comments