[feat] add headers

This commit is contained in:
kwaroran
2023-06-21 23:35:41 +09:00
parent 90f744f574
commit e0f88c93e3
2 changed files with 51 additions and 15 deletions

View File

@@ -11,6 +11,8 @@ use serde_json::Value;
use reqwest::header::{HeaderMap, HeaderName, HeaderValue};
use base64::{engine::general_purpose, Engine as _};
use std::time::Duration;
use serde_json::json;
use std::collections::HashMap;
#[tauri::command]
@@ -61,13 +63,15 @@ async fn native_request(url: String, body: String, header: String, method:String
match response {
Ok(resp) => {
let headers = resp.headers();
let header_json = header_map_to_json(headers);
let bytes = match resp.bytes().await {
Ok(b) => b,
Err(e) => return format!(r#"{{"success":false,"body":"{}"}}"#, e.to_string()),
};
let encoded = general_purpose::STANDARD.encode(&bytes);
format!(r#"{{"success":true,"body":"{}"}}"#, encoded)
format!(r#"{{"success":true,"body":"{}","headers":{}}}"#, encoded, header_json)
}
Err(e) => format!(r#"{{"success":false,"body":"{}"}}"#, e.to_string()),
}
@@ -79,3 +83,12 @@ fn main() {
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
fn header_map_to_json(header_map: &HeaderMap) -> serde_json::Value {
let mut map = HashMap::new();
for (key, value) in header_map {
map.insert(key.as_str().to_string(), value.to_str().unwrap().to_string());
}
json!(map)
}

View File

@@ -376,7 +376,11 @@ export async function loadData() {
const knownHostes = ["localhost","127.0.0.1","api.openai.com"]
export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:string]:string}, rawResponse?:boolean, method?:"POST"|"GET", abortSignal?:AbortSignal} = {}) {
export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:string]:string}, rawResponse?:boolean, method?:"POST"|"GET", abortSignal?:AbortSignal} = {}): Promise<{
ok: boolean;
data: any;
headers:{[key:string]:string}
}> {
try {
const db = get(DataBase)
const method = arg.method ?? "POST"
@@ -426,7 +430,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
return {
ok: da.ok && da.status >= 200 && da.status < 300,
data: new Uint8Array(await da.arrayBuffer())
data: new Uint8Array(await da.arrayBuffer()),
headers: Object.fromEntries(da.headers)
}
}
else{
@@ -434,7 +439,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
return {
ok: da.ok && da.status >= 200 && da.status < 300,
data: dat
data: dat,
headers: Object.fromEntries(da.headers)
}
}
@@ -442,6 +448,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return {
ok: false,
data: `${error}`,
headers: {}
}
}
}
@@ -465,7 +472,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
return {
ok: da.ok && da.status >= 200 && da.status < 300,
data: new Uint8Array(await da.arrayBuffer())
data: new Uint8Array(await da.arrayBuffer()),
headers: Object.fromEntries(da.headers)
}
}
else{
@@ -473,7 +481,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
return {
ok: da.ok && da.status >= 200 && da.status < 300,
data: dat
data: dat,
headers: Object.fromEntries(da.headers)
}
}
@@ -481,6 +490,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return {
ok: false,
data: `${error}`,
headers: {}
}
}
}
@@ -494,14 +504,18 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
const res:string = await invoke('native_request', {url:url, body:body, header:header, method: method})
const d:{
success: boolean
body:string
body:string,
headers: {[key:string]:string}
} = JSON.parse(res)
const resHeader = d.headers ?? {}
if(!d.success){
addFetchLog(Buffer.from(d.body, 'base64').toString('utf-8'), false)
return {
ok:false,
data: Buffer.from(d.body, 'base64').toString('utf-8')
data: Buffer.from(d.body, 'base64').toString('utf-8'),
headers: resHeader
}
}
else{
@@ -509,14 +523,16 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog("Uint8Array Response", true)
return {
ok:true,
data: new Uint8Array(Buffer.from(d.body, 'base64'))
data: new Uint8Array(Buffer.from(d.body, 'base64')),
headers: resHeader
}
}
else{
addFetchLog(JSON.parse(Buffer.from(d.body, 'base64').toString('utf-8')), true)
return {
ok:true,
data: JSON.parse(Buffer.from(d.body, 'base64').toString('utf-8'))
data: JSON.parse(Buffer.from(d.body, 'base64').toString('utf-8')),
headers: resHeader
}
}
}
@@ -524,6 +540,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return {
ok: false,
data: `${error}`,
headers: {}
}
}
}
@@ -545,6 +562,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return {
ok: d.ok,
data: new Uint8Array(d.data as number[]),
headers: d.headers
}
}
else{
@@ -552,6 +570,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return {
ok: d.ok,
data: d.data,
headers: d.headers
}
}
}
@@ -577,7 +596,8 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
return {
ok: da.ok && da.status >= 200 && da.status < 300,
data: new Uint8Array(await da.arrayBuffer())
data: new Uint8Array(await da.arrayBuffer()),
headers: Object.fromEntries(da.headers)
}
}
else{
@@ -596,21 +616,24 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
return {
ok: da.ok && da.status >= 200 && da.status < 300,
data: dat
data: dat,
headers: Object.fromEntries(da.headers)
}
}
} catch (error) {
console.log(error)
return {
ok:false,
data: `${error}`
data: `${error}`,
headers: {}
}
}
}
} catch (error) {
return {
ok:false,
data: `${error}`
data: `${error}`,
headers: {}
}
}
}