Merge branch 'feat/firefox-strategy' of https://github.com/AndrewBastin/postwoman into feat/firefox-strategy

This commit is contained in:
Liyas Thomas
2020-01-17 00:55:37 +05:30
12 changed files with 126 additions and 78 deletions

View File

@@ -17,7 +17,11 @@
<div slot="body"> <div slot="body">
<ul> <ul>
<li> <li>
<input type="text" v-model="name" :placeholder="$t('my_new_collection')" /> <input
type="text"
v-model="name"
:placeholder="$t('my_new_collection')"
/>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -17,7 +17,11 @@
<div slot="body"> <div slot="body">
<ul> <ul>
<li> <li>
<input type="text" v-model="name" :placeholder="$t('my_new_folder')" /> <input
type="text"
v-model="name"
:placeholder="$t('my_new_folder')"
/>
</li> </li>
</ul> </ul>
</div> </div>

View File

@@ -47,12 +47,8 @@ TODO:
</button> </button>
</div> </div>
<div> <div>
<button <button class="icon" @click="displayModalImportExport(true)">
class="icon" {{ $t("import_export") }}
@click="displayModalImportExport(true)"
v-tooltip="$t('import_export')"
>
<i class="material-icons">import_export</i>
</button> </button>
<!-- <a <!-- <a
href="https://github.com/liyasthomas/postwoman/wiki/Collections" href="https://github.com/liyasthomas/postwoman/wiki/Collections"
@@ -90,12 +86,18 @@ TODO:
</li> </li>
</ul> </ul>
</virtual-list> </virtual-list>
<nuxt-link :to="localePath('doc')" :aria-label="$t('documentation')">
<button class="icon">
<i class="material-icons">books</i>
<span>{{ $t("generate_docs") }}</span>
</button>
</nuxt-link>
</div> </div>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.virtual-list { .virtual-list {
max-height: calc(100vh - 232px); max-height: calc(100vh - 276px);
} }
ul { ul {

View File

@@ -1,7 +1,11 @@
<template> <template>
<div class="flex-wrap"> <div class="flex-wrap">
<div> <div>
<button class="icon" @click="selectRequest()" v-tooltip="$t('use_request')"> <button
class="icon"
@click="selectRequest()"
v-tooltip="$t('use_request')"
>
<i class="material-icons">insert_drive_file</i> <i class="material-icons">insert_drive_file</i>
<span>{{ request.name }}</span> <span>{{ request.name }}</span>
</button> </button>

View File

@@ -1,10 +1,5 @@
<template> <template>
<pw-section <pw-section class="green" icon="history" :label="$t('history')" ref="history">
class="green"
icon="history"
:label="$t('history')"
ref="history"
>
<ul> <ul>
<li id="filter-history"> <li id="filter-history">
<input <input
@@ -27,7 +22,9 @@
class="icon" class="icon"
:class="{ stared: entry.star }" :class="{ stared: entry.star }"
@click="toggleStar(index)" @click="toggleStar(index)"
v-tooltip="{ content: !entry.star ? $t('add_star') : $t('remove_star') }" v-tooltip="{
content: !entry.star ? $t('add_star') : $t('remove_star')
}"
> >
<i class="material-icons"> <i class="material-icons">
{{ entry.star ? "star" : "star_border" }} {{ entry.star ? "star" : "star_border" }}
@@ -238,7 +235,9 @@
</v-popover> </v-popover>
</div> </div>
<div class="flex-wrap" v-else> <div class="flex-wrap" v-else>
<label for="clear-history-button" class="info">{{ $t("are_you_sure") }}</label> <label for="clear-history-button" class="info">
{{ $t("are_you_sure") }}
</label>
<div> <div>
<button <button
class="icon" class="icon"

View File

@@ -1,13 +1,24 @@
import AxiosStrategy from "./strategies/AxiosStrategy"; import AxiosStrategy from "./strategies/AxiosStrategy";
import ProxyStrategy from "./strategies/ProxyStrategy"; import ProxyStrategy from "./strategies/ProxyStrategy";
import FirefoxStrategy from "./strategies/FirefoxStrategy";
const sendNetworkRequest = (req, store) => { const runAppropriateStrategy = (req, store) => {
// The firefox plugin injects a function to send requests through it
// If that is available, then we can use the FirefoxStrategy
if (window.firefoxExtSendRequest) {
return FirefoxStrategy(req, store);
}
if (store.state.postwoman.settings.PROXY_ENABLED) { if (store.state.postwoman.settings.PROXY_ENABLED) {
return ProxyStrategy(req, store); return ProxyStrategy(req, store);
} }
return AxiosStrategy(req, store); return AxiosStrategy(req, store);
} }
const sendNetworkRequest = (req, store) =>
runAppropriateStrategy(req, store)
.finally(() => window.$nuxt.$loading.finish());
export { sendNetworkRequest }; export { sendNetworkRequest };

View File

@@ -2,7 +2,6 @@ import axios from "axios";
const axiosStrategy = async (req, _store) => { const axiosStrategy = async (req, _store) => {
const res = await axios(req); const res = await axios(req);
window.$nuxt.$loading.finish();
return res; return res;
}; };

View File

@@ -0,0 +1,15 @@
const firefoxStrategy = (req, _store) => new Promise((resolve, reject) => {
const eventListener = (event) => {
window.removeEventListener("firefoxExtSendRequestComplete", eventListener);
if (event.detail.error) reject(JSON.parse(event.detail.error));
else resolve(JSON.parse(event.detail.response));
};
window.addEventListener("firefoxExtSendRequestComplete", eventListener);
window.firefoxExtSendRequest(req);
});
export default firefoxStrategy;

View File

@@ -6,7 +6,6 @@ const proxyStrategy = async (req, store) => {
"https://postwoman.apollotv.xyz/", "https://postwoman.apollotv.xyz/",
req req
); );
window.$nuxt.$loading.finish();
return data; return data;
}; };

View File

@@ -1,6 +1,10 @@
<template> <template>
<div class="page page-error"> <div class="page page-error">
<img src="~static/icons/error.svg" :alt="$t('error')" class="error_banner" /> <img
src="~static/icons/error.svg"
:alt="$t('error')"
class="error_banner"
/>
<h2>{{ error.statusCode }}</h2> <h2>{{ error.statusCode }}</h2>
<h3>{{ error.message }}</h3> <h3>{{ error.message }}</h3>
<p> <p>

View File

@@ -93,12 +93,14 @@
</p> </p>
<p class="doc-desc" v-if="request.path"> <p class="doc-desc" v-if="request.path">
<span> <span>
{{ $t("path") }}: <code>{{ request.path || $t("none") }}</code> {{ $t("path") }}:
<code>{{ request.path || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.method"> <p class="doc-desc" v-if="request.method">
<span> <span>
{{ $t("method") }}: <code>{{ request.method || $t("none") }}</code> {{ $t("method") }}:
<code>{{ request.method || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.auth"> <p class="doc-desc" v-if="request.auth">
@@ -109,7 +111,8 @@
</p> </p>
<p class="doc-desc" v-if="request.httpUser"> <p class="doc-desc" v-if="request.httpUser">
<span> <span>
{{ $t("username") }}: <code>{{ request.httpUser || $t("none") }}</code> {{ $t("username") }}:
<code>{{ request.httpUser || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.httpPassword"> <p class="doc-desc" v-if="request.httpPassword">
@@ -120,16 +123,17 @@
</p> </p>
<p class="doc-desc" v-if="request.bearerToken"> <p class="doc-desc" v-if="request.bearerToken">
<span> <span>
{{ $t("token") }}: <code>{{ request.bearerToken || $t("none") }}</code> {{ $t("token") }}:
<code>{{ request.bearerToken || $t("none") }}</code>
</span> </span>
</p> </p>
<h4 v-if="request.headers.length > 0">{{ $t("headers") }}</h4> <h4 v-if="request.headers.length > 0">{{ $t("headers") }}</h4>
<span <span v-if="request.headers">
v-if="request.headers" <p
v-for="header in request.headers" v-for="header in request.headers"
:key="header.key" :key="header.key"
> class="doc-desc"
<p class="doc-desc"> >
<span> <span>
{{ header.key || $t("none") }}: {{ header.key || $t("none") }}:
<code>{{ header.value || $t("none") }}</code> <code>{{ header.value || $t("none") }}</code>
@@ -137,12 +141,12 @@
</p> </p>
</span> </span>
<h4 v-if="request.params.length > 0">{{ $t("parameters") }}</h4> <h4 v-if="request.params.length > 0">{{ $t("parameters") }}</h4>
<span <span v-if="request.params">
v-if="request.params" <p
v-for="parameter in request.params" v-for="parameter in request.params"
:key="parameter.key" :key="parameter.key"
> class="doc-desc"
<p class="doc-desc"> >
<span> <span>
{{ parameter.key || $t("none") }}: {{ parameter.key || $t("none") }}:
<code>{{ parameter.value || $t("none") }}</code> <code>{{ parameter.value || $t("none") }}</code>
@@ -150,12 +154,12 @@
</p> </p>
</span> </span>
<h4 v-if="request.bodyParam">{{ $t("payload") }}</h4> <h4 v-if="request.bodyParam">{{ $t("payload") }}</h4>
<span <span v-if="request.bodyParam">
v-if="request.bodyParam" <p
v-for="payload in request.bodyParam" v-for="payload in request.bodyParam"
:key="payload.key" :key="payload.key"
> class="doc-desc"
<p class="doc-desc"> >
<span> <span>
{{ payload.key || $t("none") }}: {{ payload.key || $t("none") }}:
<code>{{ payload.value || $t("none") }}</code> <code>{{ payload.value || $t("none") }}</code>
@@ -164,7 +168,8 @@
</span> </span>
<p class="doc-desc" v-if="request.rawParams"> <p class="doc-desc" v-if="request.rawParams">
<span> <span>
{{ $t("parameters") }}: <code>{{ request.rawParams || $t("none") }}</code> {{ $t("parameters") }}:
<code>{{ request.rawParams || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.contentType"> <p class="doc-desc" v-if="request.contentType">
@@ -202,7 +207,8 @@
</p> </p>
<p class="doc-desc" v-if="request.method"> <p class="doc-desc" v-if="request.method">
<span> <span>
{{ $t("method") }}: <code>{{ request.method || $t("none") }}</code> {{ $t("method") }}:
<code>{{ request.method || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.auth"> <p class="doc-desc" v-if="request.auth">
@@ -213,26 +219,29 @@
</p> </p>
<p class="doc-desc" v-if="request.httpUser"> <p class="doc-desc" v-if="request.httpUser">
<span> <span>
{{ $t("username") }}: <code>{{ request.httpUser || $t("none") }}</code> {{ $t("username") }}:
<code>{{ request.httpUser || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.httpPassword"> <p class="doc-desc" v-if="request.httpPassword">
<span> <span>
{{ $t("password") }}: <code>{{ request.httpPassword || $t("none") }}</code> {{ $t("password") }}:
<code>{{ request.httpPassword || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.bearerToken"> <p class="doc-desc" v-if="request.bearerToken">
<span> <span>
{{ $t("token") }}: <code>{{ request.bearerToken || $t("none") }}</code> {{ $t("token") }}:
<code>{{ request.bearerToken || $t("none") }}</code>
</span> </span>
</p> </p>
<h4 v-if="request.headers.length > 0">{{ $t("headers") }}</h4> <h4 v-if="request.headers.length > 0">{{ $t("headers") }}</h4>
<span <span v-if="request.headers">
v-if="request.headers" <p
v-for="header in request.headers" v-for="header in request.headers"
:key="header.key" :key="header.key"
> class="doc-desc"
<p class="doc-desc"> >
<span> <span>
{{ header.key || $t("none") }}: {{ header.key || $t("none") }}:
<code>{{ header.value || $t("none") }}</code> <code>{{ header.value || $t("none") }}</code>
@@ -240,12 +249,12 @@
</p> </p>
</span> </span>
<h4 v-if="request.params.length > 0">{{ $t("parameters") }}</h4> <h4 v-if="request.params.length > 0">{{ $t("parameters") }}</h4>
<span <span v-if="request.params">
v-if="request.params" <p
v-for="parameter in request.params" v-for="parameter in request.params"
:key="parameter.key" :key="parameter.key"
> class="doc-desc"
<p class="doc-desc"> >
<span> <span>
{{ parameter.key || $t("none") }}: {{ parameter.key || $t("none") }}:
<code>{{ parameter.value || $t("none") }}</code> <code>{{ parameter.value || $t("none") }}</code>
@@ -253,12 +262,12 @@
</p> </p>
</span> </span>
<h4 v-if="request.bodyParam">{{ $t("payload") }}</h4> <h4 v-if="request.bodyParam">{{ $t("payload") }}</h4>
<span <span v-if="request.bodyParam">
v-if="request.bodyParam" <p
v-for="payload in request.bodyParam" v-for="payload in request.bodyParam"
:key="payload.key" :key="payload.key"
> class="doc-desc"
<p class="doc-desc"> >
<span> <span>
{{ payload.key || $t("none") }}: {{ payload.key || $t("none") }}:
<code>{{ payload.value || $t("none") }}</code> <code>{{ payload.value || $t("none") }}</code>
@@ -267,7 +276,8 @@
</span> </span>
<p class="doc-desc" v-if="request.rawParams"> <p class="doc-desc" v-if="request.rawParams">
<span> <span>
{{ $t("parameters") }}: <code>{{ request.rawParams || $t("none") }}</code> {{ $t("parameters") }}:
<code>{{ request.rawParams || $t("none") }}</code>
</span> </span>
</p> </p>
<p class="doc-desc" v-if="request.contentType"> <p class="doc-desc" v-if="request.contentType">
@@ -305,9 +315,6 @@
} }
} }
.collection {
}
.folder { .folder {
border-left: 1px solid var(--brd-color); border-left: 1px solid var(--brd-color);
margin: 16px 0 0; margin: 16px 0 0;

View File

@@ -40,11 +40,7 @@
</ul> </ul>
</pw-section> </pw-section>
<pw-section <pw-section class="blue" :label="$t('request')" ref="request">
class="blue"
:label="$t('request')"
ref="request"
>
<ul> <ul>
<li> <li>
<label for="method">{{ $t("method") }}</label> <label for="method">{{ $t("method") }}</label>
@@ -842,7 +838,11 @@
<input id="collection-tab" type="radio" name="side" /> <input id="collection-tab" type="radio" name="side" />
<label for="collection-tab">{{ $t("collections") }}</label> <label for="collection-tab">{{ $t("collections") }}</label>
<div class="tab"> <div class="tab">
<pw-section class="yellow" :label="$t('collections')" ref="collections"> <pw-section
class="yellow"
:label="$t('collections')"
ref="collections"
>
<collections /> <collections />
</pw-section> </pw-section>
</div> </div>