@@ -134,7 +134,7 @@ impl Core {
134
134
135
135
buffer. replace_range ( query as usize ..fragment as usize , "" ) ;
136
136
}
137
- ( None , Some ( _ ) | None , None ) => {
137
+ ( None , _ , None ) => {
138
138
// do nothing
139
139
}
140
140
}
@@ -190,7 +190,13 @@ impl Core {
190
190
this. parse_query ( & mut input) ?;
191
191
this. parse_fragment ( & mut input) ?;
192
192
193
- this. check_invariants ( data. as_ref ( ) , false ) ?;
193
+ if this. method ( data. as_ref ( ) ) . is_empty ( ) {
194
+ return Err ( Error :: InvalidMethodName ) ;
195
+ }
196
+
197
+ if this. method_id ( data. as_ref ( ) ) . is_empty ( ) {
198
+ return Err ( Error :: InvalidMethodId ) ;
199
+ }
194
200
195
201
Ok ( this)
196
202
}
@@ -203,8 +209,6 @@ impl Core {
203
209
this. parse_query ( & mut input) ?;
204
210
this. parse_fragment ( & mut input) ?;
205
211
206
- this. check_invariants ( data. as_ref ( ) , true ) ?;
207
-
208
212
Ok ( this)
209
213
}
210
214
@@ -253,7 +257,7 @@ impl Core {
253
257
254
258
loop {
255
259
match input. peek ( ) {
256
- Some ( '/' | '?' | '#' ) | None => break ,
260
+ Some ( '/' ) | Some ( '?' ) | Some ( '#' ) | None => break ,
257
261
Some ( ch) if char_method_id ( ch) => { }
258
262
_ => return Err ( Error :: InvalidMethodId ) ,
259
263
}
@@ -267,13 +271,13 @@ impl Core {
267
271
fn parse_path ( & mut self , input : & mut Input ) -> Result < ( ) > {
268
272
self . path = input. index ( ) ;
269
273
270
- if matches ! ( input. peek( ) , Some ( '?' | '#' ) | None ) {
274
+ if matches ! ( input. peek( ) , Some ( '?' ) | Some ( '#' ) | None ) {
271
275
return Ok ( ( ) ) ;
272
276
}
273
277
274
278
loop {
275
279
match input. peek ( ) {
276
- Some ( '?' | '#' ) | None => break ,
280
+ Some ( '?' ) | Some ( '#' ) | None => break ,
277
281
Some ( ch) if char_path ( ch) => { }
278
282
_ => return Err ( Error :: InvalidPath ) ,
279
283
}
@@ -335,58 +339,6 @@ impl Core {
335
339
336
340
Ok ( ( ) )
337
341
}
338
-
339
- fn _is_valid_method ( & self , data : & str ) -> bool {
340
- let value: & str = self . method ( data) ;
341
- !value. is_empty ( ) && value. chars ( ) . all ( char_method)
342
- }
343
-
344
- fn _is_valid_method_id ( & self , data : & str ) -> bool {
345
- let value: & str = self . method_id ( data) ;
346
- !value. is_empty ( ) && value. chars ( ) . all ( char_method_id)
347
- }
348
-
349
- fn _is_valid_path ( & self , data : & str ) -> bool {
350
- self . path ( data) . chars ( ) . all ( char_path)
351
- }
352
-
353
- fn _is_valid_query ( & self , data : & str ) -> bool {
354
- self
355
- . query ( data)
356
- . map ( |data| data. chars ( ) . all ( char_query) )
357
- . unwrap_or ( true )
358
- }
359
-
360
- fn _is_valid_fragment ( & self , data : & str ) -> bool {
361
- self
362
- . fragment ( data)
363
- . map ( |data| data. chars ( ) . all ( char_fragment) )
364
- . unwrap_or ( true )
365
- }
366
-
367
- fn check_invariants ( & self , data : & str , relative : bool ) -> Result < ( ) > {
368
- if !relative && !self . _is_valid_method ( data) {
369
- return Err ( Error :: InvalidMethodName ) ;
370
- }
371
-
372
- if !relative && !self . _is_valid_method_id ( data) {
373
- return Err ( Error :: InvalidMethodId ) ;
374
- }
375
-
376
- if !self . _is_valid_path ( data) {
377
- return Err ( Error :: InvalidPath ) ;
378
- }
379
-
380
- if !self . _is_valid_query ( data) {
381
- return Err ( Error :: InvalidQuery ) ;
382
- }
383
-
384
- if !self . _is_valid_fragment ( data) {
385
- return Err ( Error :: InvalidQuery ) ;
386
- }
387
-
388
- Ok ( ( ) )
389
- }
390
342
}
391
343
392
344
// =============================================================================
0 commit comments