11use std:: error:: Error ;
22
33use bytes:: Bytes ;
4- use reqwest:: { header:: CONTENT_TYPE , Body , Client as InnerClient , Response } ;
4+ use reqwest:: {
5+ header:: { HeaderMap , CONTENT_TYPE } ,
6+ Client as InnerClient , Response ,
7+ } ;
58use serde:: { de:: DeserializeOwned , Serialize } ;
6- use tauri:: http:: HeaderMap ;
79
810use crate :: error:: { LsarError , LsarResult } ;
911
1012#[ derive( Clone ) ]
1113pub struct Client {
1214 pub inner : InnerClient ,
13- headers : HeaderMap ,
1415}
1516
1617impl Client {
1718 pub fn new ( ) -> Self {
1819 trace ! ( "Creating new HttpClient instance" ) ;
1920
20- let headers = HeaderMap :: default ( ) ;
21-
2221 let inner = InnerClient :: builder ( )
2322 . user_agent ( "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36" )
2423 . build ( )
2524 . unwrap ( ) ;
2625
27- let client = Client { inner, headers } ;
26+ let client = Client { inner } ;
2827 debug ! ( "HttpClient instance created with default headers" ) ;
2928 client
3029 }
@@ -43,9 +42,10 @@ impl Client {
4342 pub async fn send_request (
4443 & self ,
4544 request : reqwest:: RequestBuilder ,
45+ headers : Option < HeaderMap > ,
4646 ) -> LsarResult < reqwest:: Response > {
4747 request
48- . headers ( self . headers . clone ( ) )
48+ . headers ( headers. unwrap_or_default ( ) )
4949 . send ( )
5050 . await
5151 . map_err ( |e| {
@@ -56,7 +56,7 @@ impl Client {
5656
5757 pub async fn get ( & self , url : & str ) -> LsarResult < Response > {
5858 info ! ( "Sending GET request to: {}" , url) ;
59- let response = self . send_request ( self . inner . get ( url) ) . await ?;
59+ let response = self . send_request ( self . inner . get ( url) , None ) . await ?;
6060
6161 debug ! ( "GET request successful, status: {}" , response. status( ) ) ;
6262
@@ -91,9 +91,15 @@ impl Client {
9191 Ok ( bytes)
9292 }
9393
94- pub async fn get_json < T : DeserializeOwned > ( & self , url : & str ) -> LsarResult < T > {
94+ pub async fn get_json < T : DeserializeOwned , H : Into < Option < HeaderMap > > > (
95+ & self ,
96+ url : & str ,
97+ headers : H ,
98+ ) -> LsarResult < T > {
9599 info ! ( "Sending GET request for JSON to: {}" , url) ;
96- let response = self . send_request ( self . inner . get ( url) ) . await ?;
100+ let response = self
101+ . send_request ( self . inner . get ( url) , headers. into ( ) )
102+ . await ?;
97103
98104 debug ! ( "GET request successful, headers: {:?}" , response. headers( ) ) ;
99105
@@ -120,41 +126,21 @@ impl Client {
120126 Ok ( json)
121127 }
122128
123- pub async fn post < D : DeserializeOwned , T : Into < Body > > (
124- & self ,
125- url : & str ,
126- body : T ,
127- ) -> LsarResult < D > {
128- info ! ( "Sending POST request with body to: {}" , url) ;
129-
130- let request = self
131- . inner
132- . post ( url)
133- . body ( body)
134- . header ( CONTENT_TYPE , "application/x-www-form-urlencoded" ) ;
135-
136- let response = self . send_request ( request) . await ?;
137-
138- debug ! ( "POST request successful, status: {}" , response. status( ) ) ;
139- let json = response. json ( ) . await . map_err ( |e| {
140- error ! ( "Failed to parse JSON response from POST request: {}" , e) ;
141- LsarError :: Http ( e. into ( ) )
142- } ) ?;
143-
144- trace ! ( "JSON response from POST request parsed successfully" ) ;
145- Ok ( json)
146- }
147-
148- pub async fn post_form < D : DeserializeOwned , T : Serialize + ?Sized > (
129+ pub async fn post_form <
130+ D : DeserializeOwned ,
131+ T : Serialize + ?Sized ,
132+ H : Into < Option < HeaderMap > > ,
133+ > (
149134 & self ,
150135 url : & str ,
151136 form : & T ,
137+ headers : H ,
152138 ) -> LsarResult < D > {
153139 info ! ( "Sending POST request with body to: {}" , url) ;
154140
155141 let request = self . inner . post ( url) . form ( form) ;
156142
157- let response = self . send_request ( request) . await ?;
143+ let response = self . send_request ( request, headers . into ( ) ) . await ?;
158144
159145 debug ! ( "POST request successful, status: {}" , response. status( ) ) ;
160146 let json = response. json ( ) . await . map_err ( |e| {
@@ -175,7 +161,7 @@ impl Client {
175161 . body ( body. to_owned ( ) )
176162 . header ( CONTENT_TYPE , "text/plain;charset=UTF-8" ) ;
177163
178- let response = self . send_request ( request) . await ?;
164+ let response = self . send_request ( request, None ) . await ?;
179165
180166 debug ! ( "POST request successful, status: {}" , response. status( ) ) ;
181167 let json = response. json ( ) . await . map_err ( |e| {
@@ -193,7 +179,9 @@ impl Client {
193179 body : & S ,
194180 ) -> LsarResult < T > {
195181 info ! ( "Sending POST request with JSON body to: {}" , url) ;
196- let response = self . send_request ( self . inner . post ( url) . json ( body) ) . await ?;
182+ let response = self
183+ . send_request ( self . inner . post ( url) . json ( body) , None )
184+ . await ?;
197185
198186 debug ! ( "POST request successful, status: {}" , response. status( ) ) ;
199187 let json = response. json ( ) . await . map_err ( |e| {
0 commit comments