11use tauri:: Window ;
22
3- use std:: { io:: Cursor , str:: FromStr , sync:: Arc } ;
3+ use std:: { io:: Cursor , net :: SocketAddr , str:: FromStr , sync:: Arc } ;
44
55use :: ascii:: AsciiString ;
66use tiny_http:: { Header , HeaderField , Method , Request , Response , Server } ;
@@ -74,7 +74,11 @@ fn set_content_type_html(response: &mut Response<Cursor<Vec<u8>>>) {
7474}
7575
7676fn handle_code_request ( request : Request , window : & Window ) {
77- if * request. method ( ) != Method :: Get || !request. url ( ) . starts_with ( "/callback?code=" ) {
77+ let url = request. url ( ) ;
78+
79+ if * request. method ( ) != Method :: Get
80+ || ( !request. url ( ) . starts_with ( "/callback?code=" ) && !request. url ( ) . starts_with ( "/ping" ) )
81+ {
7882 let mut response = Response :: from_string ( create_html (
7983 "Not Found - Gitification" . to_owned ( ) ,
8084 "NOT FOUND" . to_owned ( ) ,
@@ -86,7 +90,18 @@ fn handle_code_request(request: Request, window: &Window) {
8690 return ;
8791 }
8892
89- let url = request. url ( ) ;
93+ if url. starts_with ( "/ping" ) {
94+ let mut response = Response :: from_string ( "{\" pong\" : true}" ) ;
95+
96+ response. add_header ( Header {
97+ field : HeaderField :: from_str ( "Content-Type" ) . unwrap ( ) ,
98+ value : AsciiString :: from_str ( "application/json" ) . unwrap ( ) ,
99+ } ) ;
100+
101+ request. respond ( response) . unwrap ( ) ;
102+ return ;
103+ }
104+
90105 let code_query = url. split ( "?code=" ) . collect :: < Vec < & str > > ( ) [ 1 ] ;
91106 let code = code_query. split ( "&" ) . collect :: < Vec < & str > > ( ) [ 0 ] ;
92107
@@ -110,12 +125,12 @@ impl AuthServer {
110125 AuthServer { server : None }
111126 }
112127
113- pub fn listen ( & mut self , window : Window ) {
128+ pub fn listen ( & mut self , window : Window , addr : SocketAddr ) {
114129 if self . server . is_some ( ) {
115130 return ;
116131 }
117132
118- let server = Arc :: new ( Server :: http ( "0.0.0.0:23846" ) . unwrap ( ) ) ;
133+ let server = Arc :: new ( Server :: http ( addr ) . unwrap ( ) ) ;
119134 std:: thread:: spawn ( {
120135 let server = Arc :: clone ( & server) ;
121136 move || {
@@ -125,7 +140,7 @@ impl AuthServer {
125140 }
126141 } ) ;
127142
128- self . server = Some ( server)
143+ self . server = Some ( server) ;
129144 }
130145
131146 pub fn stop ( & mut self ) {
0 commit comments