diff --git a/packages/hoppscotch-common/src/components/settings/Agent.vue b/packages/hoppscotch-common/src/components/settings/Agent.vue
index 729f9c127..c4d8bbee5 100644
--- a/packages/hoppscotch-common/src/components/settings/Agent.vue
+++ b/packages/hoppscotch-common/src/components/settings/Agent.vue
@@ -56,11 +56,11 @@
-
diff --git a/packages/hoppscotch-selfhost-desktop/src/platform/interceptors/native/index.ts b/packages/hoppscotch-selfhost-desktop/src/platform/interceptors/native/index.ts
index 6a069f72b..17421e8ed 100644
--- a/packages/hoppscotch-selfhost-desktop/src/platform/interceptors/native/index.ts
+++ b/packages/hoppscotch-selfhost-desktop/src/platform/interceptors/native/index.ts
@@ -51,7 +51,7 @@ type ClientCertDef =
}
// TODO: Figure out a way to autogen this from the interceptor definition on the Rust side
-type RequestDef = {
+export type RequestDef = {
req_id: number
method: string
@@ -65,6 +65,10 @@ type RequestDef = {
validate_certs: boolean,
root_cert_bundle_files: number[],
client_cert: ClientCertDef | null
+
+ proxy?: {
+ url: string
+ }
}
type RunRequestResponse = {
@@ -177,7 +181,8 @@ async function convertToRequestDef(
reqID: number,
caCertificates: CACertificateEntry[],
clientCertificates: Map,
- validateCerts: boolean
+ validateCerts: boolean,
+ proxyInfo: RequestDef["proxy"]
): Promise {
const clientCertDomain = getURLDomain(axiosReq.url!)
@@ -188,14 +193,21 @@ async function convertToRequestDef(
method: axiosReq.method ?? "GET",
endpoint: axiosReq.url ?? "",
headers: Object.entries(axiosReq.headers ?? {})
- .filter(([key, value]) => !(key.toLowerCase() === "content-type" && value.toLowerCase() === "multipart/form-data")) // Removing header, because this header will be set by reqwest
+ .filter(
+ ([key, value]) =>
+ !(
+ key.toLowerCase() === "content-type" &&
+ value.toLowerCase() === "multipart/form-data"
+ )
+ ) // Removing header, because this header will be set by relay.
.map(([key, value]): KeyValuePair => ({ key, value })),
parameters: Object.entries(axiosReq.params as Record ?? {})
.map(([key, value]): KeyValuePair => ({ key, value })),
body: await processBody(axiosReq),
root_cert_bundle_files: caCertificates.map((cert) => Array.from(cert.certificate)),
validate_certs: validateCerts,
- client_cert: clientCert ? convertClientCertToDefCert(clientCert) : null
+ client_cert: clientCert ? convertClientCertToDefCert(clientCert) : null,
+ proxy: proxyInfo
}
}
@@ -236,6 +248,7 @@ export type ClientCertificateEntry = z.infer
const CA_STORE_PERSIST_KEY = "native_interceptor_ca_store"
const CLIENT_CERTS_PERSIST_KEY = "native_interceptor_client_certs_store"
const VALIDATE_SSL_KEY = "native_interceptor_validate_ssl"
+const PROXY_INFO_PERSIST_KEY = "native_interceptor_proxy_info"
export class NativeInterceptorService extends Service implements Interceptor {
public static readonly ID = "NATIVE_INTERCEPTOR_SERVICE"
@@ -262,6 +275,7 @@ export class NativeInterceptorService extends Service implements Interceptor {
public clientCertificates = ref