123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import { decodeB64StringToArrayBuffer } from "../utils/b64"
- import { settingsStore } from "~/newstore/settings"
- export const hasExtensionInstalled = () =>
- typeof window.__POSTWOMAN_EXTENSION_HOOK__ !== "undefined"
- export const hasChromeExtensionInstalled = () =>
- hasExtensionInstalled() &&
- /Chrome/i.test(navigator.userAgent) &&
- /Google/i.test(navigator.vendor)
- export const hasFirefoxExtensionInstalled = () =>
- hasExtensionInstalled() && /Firefox/i.test(navigator.userAgent)
- export const cancelRunningExtensionRequest = () => {
- if (
- hasExtensionInstalled() &&
- window.__POSTWOMAN_EXTENSION_HOOK__.cancelRunningRequest
- ) {
- window.__POSTWOMAN_EXTENSION_HOOK__.cancelRunningRequest()
- }
- }
- const extensionWithProxy = async (req) => {
- const backupTimeDataStart = new Date().getTime()
- const res = await window.__POSTWOMAN_EXTENSION_HOOK__.sendRequest({
- method: "post",
- url: settingsStore.value.PROXY_URL || "https://proxy.hoppscotch.io/",
- data: {
- ...req,
- wantsBinary: true,
- },
- })
- const backupTimeDataEnd = new Date().getTime()
- const parsedData = JSON.parse(res.data)
- if (!parsedData.success) {
- throw new Error(parsedData.data.message || "Proxy Error")
- }
- if (parsedData.isBinary) {
- parsedData.data = decodeB64StringToArrayBuffer(parsedData.data)
- }
- if (!(res && res.config && res.config.timeData)) {
- res.config = {
- timeData: {
- startTime: backupTimeDataStart,
- endTime: backupTimeDataEnd,
- },
- }
- }
- parsedData.config = res.config
- return parsedData
- }
- const extensionWithoutProxy = async (req) => {
- const backupTimeDataStart = new Date().getTime()
- const res = await window.__POSTWOMAN_EXTENSION_HOOK__.sendRequest({
- ...req,
- wantsBinary: true,
- })
- const backupTimeDataEnd = new Date().getTime()
- if (!(res && res.config && res.config.timeData)) {
- res.config = {
- timeData: {
- startTime: backupTimeDataStart,
- endTime: backupTimeDataEnd,
- },
- }
- }
- return res
- }
- const extensionStrategy = (req) => {
- if (settingsStore.value.PROXY_ENABLED) {
- return extensionWithProxy(req)
- }
- return extensionWithoutProxy(req)
- }
- export default extensionStrategy
|