[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 reqwest::header::{HeaderMap, HeaderName, HeaderValue};
use base64::{engine::general_purpose, Engine as _}; use base64::{engine::general_purpose, Engine as _};
use std::time::Duration; use std::time::Duration;
use serde_json::json;
use std::collections::HashMap;
#[tauri::command] #[tauri::command]
@@ -61,13 +63,15 @@ async fn native_request(url: String, body: String, header: String, method:String
match response { match response {
Ok(resp) => { Ok(resp) => {
let headers = resp.headers();
let header_json = header_map_to_json(headers);
let bytes = match resp.bytes().await { let bytes = match resp.bytes().await {
Ok(b) => b, Ok(b) => b,
Err(e) => return format!(r#"{{"success":false,"body":"{}"}}"#, e.to_string()), Err(e) => return format!(r#"{{"success":false,"body":"{}"}}"#, e.to_string()),
}; };
let encoded = general_purpose::STANDARD.encode(&bytes); 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()), Err(e) => format!(r#"{{"success":false,"body":"{}"}}"#, e.to_string()),
} }
@@ -79,3 +83,12 @@ fn main() {
.run(tauri::generate_context!()) .run(tauri::generate_context!())
.expect("error while running tauri application"); .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"] 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 { try {
const db = get(DataBase) const db = get(DataBase)
const method = arg.method ?? "POST" 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) addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
return { return {
ok: da.ok && da.status >= 200 && da.status < 300, 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{ 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) addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
return { return {
ok: da.ok && da.status >= 200 && da.status < 300, 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 { return {
ok: false, ok: false,
data: `${error}`, 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) addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
return { return {
ok: da.ok && da.status >= 200 && da.status < 300, 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{ 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) addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
return { return {
ok: da.ok && da.status >= 200 && da.status < 300, 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 { return {
ok: false, ok: false,
data: `${error}`, 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 res:string = await invoke('native_request', {url:url, body:body, header:header, method: method})
const d:{ const d:{
success: boolean success: boolean
body:string body:string,
headers: {[key:string]:string}
} = JSON.parse(res) } = JSON.parse(res)
const resHeader = d.headers ?? {}
if(!d.success){ if(!d.success){
addFetchLog(Buffer.from(d.body, 'base64').toString('utf-8'), false) addFetchLog(Buffer.from(d.body, 'base64').toString('utf-8'), false)
return { return {
ok:false, ok:false,
data: Buffer.from(d.body, 'base64').toString('utf-8') data: Buffer.from(d.body, 'base64').toString('utf-8'),
headers: resHeader
} }
} }
else{ else{
@@ -509,14 +523,16 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
addFetchLog("Uint8Array Response", true) addFetchLog("Uint8Array Response", true)
return { return {
ok:true, ok:true,
data: new Uint8Array(Buffer.from(d.body, 'base64')) data: new Uint8Array(Buffer.from(d.body, 'base64')),
headers: resHeader
} }
} }
else{ else{
addFetchLog(JSON.parse(Buffer.from(d.body, 'base64').toString('utf-8')), true) addFetchLog(JSON.parse(Buffer.from(d.body, 'base64').toString('utf-8')), true)
return { return {
ok:true, 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 { return {
ok: false, ok: false,
data: `${error}`, data: `${error}`,
headers: {}
} }
} }
} }
@@ -545,6 +562,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return { return {
ok: d.ok, ok: d.ok,
data: new Uint8Array(d.data as number[]), data: new Uint8Array(d.data as number[]),
headers: d.headers
} }
} }
else{ else{
@@ -552,6 +570,7 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
return { return {
ok: d.ok, ok: d.ok,
data: d.data, 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) addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
return { return {
ok: da.ok && da.status >= 200 && da.status < 300, 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{ 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) addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
return { return {
ok: da.ok && da.status >= 200 && da.status < 300, ok: da.ok && da.status >= 200 && da.status < 300,
data: dat data: dat,
headers: Object.fromEntries(da.headers)
} }
} }
} catch (error) { } catch (error) {
console.log(error) console.log(error)
return { return {
ok:false, ok:false,
data: `${error}` data: `${error}`,
headers: {}
} }
} }
} }
} catch (error) { } catch (error) {
return { return {
ok:false, ok:false,
data: `${error}` data: `${error}`,
headers: {}
} }
} }
} }