@@ -2,10 +2,8 @@ use std::io::Error;
22use std:: str;
33
44use chrono:: { DateTime , Utc } ;
5- use lazy_static:: lazy_static;
65use log:: debug;
76use log:: trace;
8- use regex:: Regex ;
97use reqwest:: header;
108use serde:: { Deserialize , Deserializer } ;
119
@@ -105,18 +103,6 @@ pub(crate) fn github_events(repo: &str, token: &Option<String>) -> Result<Vec<Ra
105103 Ok ( raw_events)
106104}
107105
108- fn raw_github_events ( json : & str ) -> Result < Vec < RawEvent > , serde_json:: Error > {
109- debug ! ( "{}" , json) ;
110- serde_json:: from_str :: < Vec < RawEvent > > ( json)
111- }
112-
113- fn last_page_from_link_header ( link_header : & str ) -> Option < u32 > {
114- lazy_static ! {
115- static ref RE : Regex = Regex :: new( ".*page=(\\ d+)>; rel=\" last\" .*" ) . unwrap( ) ;
116- }
117- RE . captures ( link_header) . map ( |c| c[ 1 ] . parse ( ) . unwrap ( ) )
118- }
119-
120106/// Parses the JSON response from GitHub's GraphQL API and converts it to RawEvent objects.
121107///
122108/// This function deserializes the GraphQL response, extracts the relevant data (issue comments,
@@ -388,89 +374,3 @@ where
388374{
389375 Type :: deserialize ( deserializer) . or ( Ok ( Type :: Unknown ) )
390376}
391-
392- #[ cfg( test) ]
393- mod tests {
394- use chrono:: { TimeZone , Utc } ;
395-
396- use super :: * ;
397-
398- #[ test]
399- fn parse_github_events ( ) {
400- assert_eq ! (
401- raw_github_events( include_str!( "../../test/github_events.json" ) ) . unwrap( ) [ 0 ] ,
402- RawEvent {
403- actor: Actor {
404- login: "alice" . to_string( ) ,
405- } ,
406- payload: Payload {
407- action: Action :: opened,
408- } ,
409- event_type: Type :: PullRequestEvent ,
410- created_at: Utc . with_ymd_and_hms( 2016 , 12 , 1 , 16 , 26 , 43 ) . unwrap( ) ,
411- }
412- ) ;
413- }
414-
415- #[ test]
416- fn parse_github_event_with_unknown_enums ( ) {
417- assert_eq ! (
418- raw_github_events( include_str!(
419- "../../test/github_event_with_unknown_enums.json"
420- ) )
421- . unwrap( ) [ 0 ] ,
422- RawEvent {
423- actor: Actor {
424- login: "alice" . to_string( ) ,
425- } ,
426- payload: Payload {
427- action: Action :: Unknown ,
428- } ,
429- event_type: Type :: Unknown ,
430- created_at: Utc . with_ymd_and_hms( 2016 , 12 , 1 , 16 , 26 , 43 ) . unwrap( ) ,
431- }
432- ) ;
433- }
434-
435- #[ test]
436- fn parse_real_github_events_from_nicokosi_pullpito ( ) {
437- let events = raw_github_events ( include_str ! ( "../../test/pullpito_github_events.json" ) ) ;
438- assert ! ( events. is_ok( ) ) ;
439- }
440-
441- #[ test]
442- fn parse_real_github_events_from_python_peps ( ) {
443- let events = raw_github_events ( include_str ! ( "../../test/python_peps_github_events.json" ) ) ;
444- assert ! ( events. is_ok( ) ) ;
445- }
446-
447- #[ test]
448- fn parse_github_link_header_for_page_1_over_10 ( ) {
449- let last_page = last_page_from_link_header (
450- "<https://api.github.com/repositories/257951013/events?page=2>; rel=\" next\" , <https://api.github.com/repositories/257951013/events?page=10>; rel=\" last\" " ,
451- ) ;
452- assert_eq ! ( last_page, Some ( 10 ) ) ;
453- }
454-
455- #[ test]
456- fn parse_github_link_header_for_page_2_over_10 ( ) {
457- let last_page = last_page_from_link_header (
458- "<https://api.github.com/repositories/257951013/events?page=1>; rel=\" prev\" , <https://api.github.com/repositories/257951013/events?page=3>; rel=\" next\" , <https://api.github.com/repositories/257951013/events?page=10>; rel=\" last\" , <https://api.github.com/repositories/257951013/events?page=1>; rel=\" first\" " ,
459- ) ;
460- assert_eq ! ( last_page, Some ( 10 ) ) ;
461- }
462-
463- #[ test]
464- fn parse_github_link_header_for_page_10_over_10 ( ) {
465- let last_page = last_page_from_link_header (
466- "<https://api.github.com/repositories/257951013/events?page=9>; rel=\" prev\" , <https://api.github.com/repositories/257951013/events?page=1>; rel=\" first\" " ,
467- ) ;
468- assert_eq ! ( last_page, None ) ;
469- }
470-
471- #[ test]
472- fn parse_github_link_header_can_fail_because_of_unknown_header_value ( ) {
473- let last_page = last_page_from_link_header ( "moo" ) ;
474- assert_eq ! ( last_page, None ) ;
475- }
476- }
0 commit comments