From dabb7c370a529d256dd071f746f98d86905a22df Mon Sep 17 00:00:00 2001 From: izerozlu Date: Sat, 24 Aug 2019 23:52:54 +0300 Subject: [PATCH 01/23] Virtualscroll added for the history fieldset. --- package.json | 1 + pages/index.vue | 72 ++++++++++++++++++++++++++++++------------------- 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 0230a2b48..fce0bb2d3 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "@nuxtjs/pwa": "^3.0.0-0", "nuxt": "^2.0.0", + "vue-virtual-scroll-list": "^1.4.2", "vuex-persist": "^2.0.1" }, "devDependencies": { diff --git a/pages/index.vue b/pages/index.vue index 135aa4832..0802e307b 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -162,40 +162,44 @@ - + diff --git a/pages/index.vue b/pages/index.vue index 495f28c7d..95fd0c97c 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -21,7 +21,7 @@
  • - +
  • @@ -51,7 +51,7 @@
  • - +
  • @@ -111,7 +111,7 @@
  • - +
  • @@ -139,7 +139,7 @@
  • - +
  • @@ -175,12 +175,10 @@ -
    -
    @@ -212,11 +210,11 @@
  • - +
  • - +
  • @@ -255,7 +253,6 @@ statusCodeRegex: new RegExp(/.*/), className: 'missing-data-response' } - ]; const parseHeaders = xhr => { const headers = xhr.getAllResponseHeaders().trim().split(/[\r\n]+/); @@ -357,8 +354,7 @@ }) => `${key}=${encodeURIComponent(value)}`).join('&') return result == '' ? '' : `?${result}` }, - - responseType () { + responseType() { return (this.response.headers['content-type'] || '').split(';')[0].toLowerCase(); } }, @@ -391,35 +387,28 @@ alert('Please check the formatting of the URL'); return } - if (this.$refs.response.$el.classList.contains('hidden')) { this.$refs.response.$el.classList.toggle('hidden') } - this.$refs.response.$el.scrollIntoView({ behavior: 'smooth' }); - this.previewEnabled = false; this.response.status = 'Fetching...'; this.response.body = 'Loading...'; - const xhr = new XMLHttpRequest(); const user = this.auth === 'Basic' ? this.httpUser : null; const password = this.auth === 'Basic' ? this.httpPassword : null; xhr.open(this.method, this.url + this.path + this.queryString, true, user, password); - if (this.auth === 'Bearer Token') xhr.setRequestHeader( - 'Authorization', - 'Bearer ' + this.bearerToken + 'Authorization', + 'Bearer ' + this.bearerToken ); - if (this.headers) { this.headers.forEach(function(element) { xhr.setRequestHeader(element.key, element.value) }) } - if (this.method === 'POST' || this.method === 'PUT') { const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody; xhr.setRequestHeader('Content-Length', requestBody.length); @@ -428,16 +417,13 @@ } else { xhr.send(); } - xhr.onload = e => { this.response.status = xhr.status; const headers = this.response.headers = parseHeaders(xhr); - this.response.body = xhr.responseText; if ((headers['content-type'] || '').startsWith('application/json')) { this.response.body = JSON.stringify(JSON.parse(this.response.body), null, 2); } - const n = new Date().toLocaleTimeString(); this.history = [{ status: xhr.status, @@ -448,7 +434,6 @@ }, ...this.history]; window.localStorage.setItem('history', JSON.stringify(this.history)); }; - xhr.onerror = e => { this.response.status = xhr.status; this.response.body = xhr.statusText; @@ -459,7 +444,6 @@ key: '', value: '' }); - return false }, removeRequestHeader(index) { @@ -507,24 +491,20 @@ return false; } }, - copyResponse() { var copyText = document.getElementById("response-details"); copyText.select(); document.execCommand("copy"); }, - - togglePreview () { + togglePreview() { this.previewEnabled = !this.previewEnabled; - - if(this.previewEnabled) { + if (this.previewEnabled) { // If you want to add 'preview' support for other response types, // just add them here. - if(this.responseType === "text/html"){ + if (this.responseType === "text/html") { // If the preview already has that URL loaded, let's not bother re-loading it all. - if(this.$refs.previewFrame.getAttribute('data-previewing-url') === this.url) + if (this.$refs.previewFrame.getAttribute('data-previewing-url') === this.url) return; - // Use DOMParser to parse document HTML. const previewDocument = new DOMParser().parseFromString(this.response.body, this.responseType); // Inject tag to head, to fix relative CSS/HTML paths. @@ -537,4 +517,5 @@ } } } + diff --git a/pages/websocket.vue b/pages/websocket.vue index d7334b479..1d0d8d1da 100644 --- a/pages/websocket.vue +++ b/pages/websocket.vue @@ -7,7 +7,7 @@
  • - +
  • @@ -30,7 +30,7 @@
  • - +
  • From 16523814448969f75c108a0abb0336aea8ecb9a7 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Wed, 28 Aug 2019 10:47:31 +0530 Subject: [PATCH 07/23] :art: Styled input checkbox --- assets/css/styles.scss | 23 ++++++++++++++++++++++- pages/settings.vue | 11 +++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/assets/css/styles.scss b/assets/css/styles.scss index bb0e3b2cb..9c7a5de8a 100644 --- a/assets/css/styles.scss +++ b/assets/css/styles.scss @@ -187,11 +187,32 @@ option { } input[type="checkbox"] { - width: initial; + display: none; &, & + label { vertical-align: middle; + cursor: pointer; + + &:before { + content: "\2714"; + border: 2px solid var(--fg-color); + border-radius: 4px; + display: inline-flex; + height: 16px; + width: 16px; + align-items: center; + justify-content: center; + margin: 8px 8px 8px 0; + color: transparent; + transition: .2s; + } + } + + &:checked + label:before { + background-color: var(--ac-color); + border-color: var(--ac-color); + color: var(--act-color); } } diff --git a/pages/settings.vue b/pages/settings.vue index c5a11311a..fa6b17d7a 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -19,10 +19,13 @@ -

    - - -

    + + +
      +
    • +

      Frames

      + +
    From f004a9c322d94e302154457bd40b75348588bdb2 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Wed, 28 Aug 2019 14:27:42 +0530 Subject: [PATCH 08/23] :pencil2: Updated features list and added 'Story behind Postwoman' --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 882df0b82..515307816 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,9 @@ When I wrote this, only God and I understood what I was doing. Now, only God kno # postwoman Postwoman -### 👽 API request builder by [Liyas Thomas](https://github.com/liyasthomas) +### API request builder + +**Start here: _[Story behind Postwoman](https://dev.to/liyasthomas/i-created-postwoman-an-online-open-source-api-request-builder-41md)_**

    @@ -80,6 +82,21 @@ _Customized themes are also synced with local session storage_ - Set content Type - Toggle between RAW input and parameter list +:wave: **Responses**: Contains the status line, headers and the message/response body + +_HTML responses have "Preview HTML" feature_ + +:: **History**: Request entries are synced with local session storage to reuse with a single click + +**Fields** + - Timestamp + - Method + - Status code + - URL + - Path + +_History entries can be deleted one-by-one or all together_ + --- ## Demo @@ -155,6 +172,7 @@ See the [CHANGELOG](CHANGELOG.md) file for details. ### Testing and Debugging * [Liyas Thomas](https://github.com/liyasthomas) +* ([contributors](https://github.com/liyasthomas/postwoman/graphs/contributors)) ### Contributors * [NBTX](https://github.com/NBTX) From df2ceb3fe9262a554c5338b877c7b14721851580 Mon Sep 17 00:00:00 2001 From: izerozlu Date: Wed, 28 Aug 2019 13:35:14 +0300 Subject: [PATCH 09/23] Virtual scrolling added for history section. --- pages/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/index.vue b/pages/index.vue index 98a03077a..86960e0c5 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -192,7 +192,7 @@ -
      +
      • From b5f812512fa7f129ce6167dc6b6f6d1c41616611 Mon Sep 17 00:00:00 2001 From: Pratik Date: Wed, 28 Aug 2019 13:07:45 +0200 Subject: [PATCH 10/23] GitHub logo in footer updates as per theme background. --- layouts/default.vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/layouts/default.vue b/layouts/default.vue index aa5f2f463..6a87b73b3 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -22,7 +22,7 @@
      - +
      • From 6bf8a6cbb30d4c7dfbfba059452cc77e3201b6fc Mon Sep 17 00:00:00 2001 From: Stephanie Frankian Date: Wed, 28 Aug 2019 08:18:56 -0400 Subject: [PATCH 12/23] Fix typo. --- .editorconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.editorconfig b/.editorconfig index cee0e62ec..630e82e79 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,4 +1,4 @@ -# http://editorconfig.org +# https://editorconfig.org root = true From 834850fd98ed8a3112558283eb5aeaba86f8baf7 Mon Sep 17 00:00:00 2001 From: Pratik Date: Wed, 28 Aug 2019 14:40:57 +0200 Subject: [PATCH 13/23] Resolution of https://github.com/liyasthomas/postwoman/pull/80/files/9868a7d31e8521fb8b0ff1fabb2e2c5453851b43#r318532213 --- .vs/VSWorkspaceState.json | 9 +++++++++ .vs/postwoman/v15/.suo | Bin 0 -> 16384 bytes .vs/slnx.sqlite | Bin 0 -> 77824 bytes layouts/default.vue | 6 +++--- 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 .vs/VSWorkspaceState.json create mode 100644 .vs/postwoman/v15/.suo create mode 100644 .vs/slnx.sqlite diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json new file mode 100644 index 000000000..b35b927af --- /dev/null +++ b/.vs/VSWorkspaceState.json @@ -0,0 +1,9 @@ +{ + "ExpandedNodes": [ + "", + "\\layouts", + "\\pages" + ], + "SelectedNode": "\\pages\\index.vue", + "PreviewInSolutionExplorer": false +} \ No newline at end of file diff --git a/.vs/postwoman/v15/.suo b/.vs/postwoman/v15/.suo new file mode 100644 index 0000000000000000000000000000000000000000..d7c99ece5ea2f497d1d5c82ebad7d9b12001344e GIT binary patch literal 16384 zcmeHOON?7r89q)M=mTg=N(h0HX&!9}V{<)r>~We7@z~=`p+nM6GHK}zsmF6Yy&1pc z>zU4wiC|L+A&^QpU4aBbJS2pg4I5UlKowN9i^2j4Dcxj;#0DggNcg^U?y>K9{I-N3kL!Nja{CjlxK_TvjpK-Tt-@eW0 zyMXZS!VrzXbE1e}MU06VQGi<(8=T6HVZYd0o%0X3DRtv7KRfvSOMmix1o^)CX_fgL zC>F&P@ieGs;hPcbZED$?ykG3`d53#zYU5BI(OA9`&Wcs^Iwx$=A!1XiFN0G+hXW`xtWZcK#-V1yH$T55f_;KJq;KRUA0QUnw2|NJ& z43Kr)2bbkJ?F=7uUHW%n=SEF zq#W?_J<}K_|5L^>Oz4*XDKp6bEc*yt*16079F3g^+HbV!I44(JmwqDWoG#~%@}GK} zI)U@qsr)CebFRtm)CHV>uBSu5G2o-X!@wiJqrhXp$AFImp8$RicpUh7;5g6^3;@3X zG=M=Mb#w?A2A%*$fKlKiFa|scd=hvH_!Mvo_(kAppzbT(q$hmF0knU-jcJj!nv{Ys?}l30UrE?S0Q^WtSW z2NkRcTBeT5*7VE%lYhydozlOAyyR^H+s^V_XS@7glLsF}{-@od$K zQq!oDg#^MpiLqgUtU@F5B&7b#!8>T<&_CSs>oM@AHS<4>grB&HXJP$Z5p$qc7K%1c zUU(Aaz>cB?*BTCkK5fx%=+7cQbsiys-t)YL)ND|GWm_v$zGmNE)<0#qt}h9iix}x; z{AhPwlp~&j6=1d1{j6iG2mYHuIiA%JE~3{3oHG^C^EuEi098u@uy2`GKueZHO0I?c zwpK+j{v3OK_N!`b{pDF1_Y#CTSkD*Gi~4mq28uT3rrjt!)1H+RWD991slz%0 zVhv?1vGGsmUvGc!*}K2~*Vq5>!sBb)WLKrS?&0>~dacj)Qx0(tMELiE3x|~N&V4oQ zekf{P=B=aCxCPA8dCU>5fJJ=QA^AARl!Y1i+5z=1&xG~@J6-=K@=^y7Xk$|2m!;;( zd8EGHnOJB?rKwgv3Hir+27R6=D{b?60qH+>^CZz{?zHua_UglPNOR<>Ru)jBy}04Z z|K=-ndt;tK)FV`wfL8Q1PbR@Pypw7K0nq1JHt$tO(hg}!J$({-A&sD}7KnIvbFUO=E=3qwBSdp{~D)93jtcd&*IP(kQ zY|oVIA&v$~ooW#&*`#RhRY7(m$wz7wdyz&C^(ltUR%A`J^+A$~ss zy~u!nDU*fx;|TO7kJZ6BqAnVZ`EjsbxjsjuHx*c-YHo&60#N>tR~)#Rp`DZZUaUjX zg-510v_tc)hW~78-f0)7eOnSsS>2a@XBhv z%CvOjo-8*qv$O^-A~%)MCtL12h4}LbtUmUuENxq!zH)Cuz8Xf^$DKGuOXf8zZGfqq>d z-;vNiYhbJD{rRh*);@0;`u|73eg7OJRStY^%iTI{HSXCw;?h+h&7_9GY5;_$HpabN=Pc?^`~FM-_Gu$y1P8KZiw zqUoNMI$Kd?xB2#`8Sort9}<1y=f31g1HY^BiPTIqJQMU!N5dh1Fqky_@tI)UZy0eS z5i?S$R3db3^VFQ}WKwp{a;7#DC(R3vRd&o$K3!Nzm(8Sk*;+4IWjk*bDvr5qSIjeZ zWp;JZEES!~D@9~8bLoxZDiW8hY9ycD7ka?d7pQY-h)$z9&l zZot-4ucAzOUYA9jl0Ets;gq!4c{?$Mw~F_*YWhIZo`0u58b`OiKyw7oKq>KpkZ%08 z0#4Pp`_O*7_dhkA`~P_VQ~&;ex9)roFb`hK%NrqDSIq(U@ACei?|gf?f2gNFhrLc- z?&vnQyiI6y_rg};{mGVF!saclrSPrhc{f;3pSSB4q{<3xh@u<|?*6^ELbZD63xhr- z0RIQ3)BaP;>ihqC`ic^F>FOnJ9PKE_>=i@;jx^ySjS2`^`7L z`+hI$Kc99gR{1wadM)40{c&d+VB*xx>#tt_$DzgR@7*~5gPXtRP;q1kye0b)rvCtj z>u(qW72D6P{gJVItnZ|I?>}3&lc3JF26cz8-c`Nchd%1IJ)NzInvAa>YrX^G{>ukG z=3Db)G~~~fi&pf9z zw0r1~axfSfk0{z8?Lx2o`@!S?UtHezmhsxco}Yf>@R6IB9({`))O@bp8vpmpzx|fi z*i`I{vg3{?11` Gfd2xXFqCot literal 0 HcmV?d00001 diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..389da5e19843afd44c9e50621fbe9d7fd9de3865 GIT binary patch literal 77824 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 literal 0 HcmV?d00001 diff --git a/layouts/default.vue b/layouts/default.vue index 6a87b73b3..347e2ebcc 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -120,9 +120,9 @@ // Once the PWA code is initialized, this holds a method // that can be called to show the user the installation // prompt. - showInstallPrompt: null, - logoStyle() { - return "margin-right: 16px;" + (this.$store.state.postwoman.settings.THEME_CLASS ? " filter: invert(100%); -webkit-filter: invert(100%);" : '') + showInstallPrompt: null, + logoStyle() { + return "margin-right: 16px;" + (this.$store.state.postwoman.settings.THEME_CLASS.includes('light') ? " filter: invert(100%); -webkit-filter: invert(100%);" : '') } } }, From f037a0eb1711aa248fcd2b188a6c18f3604c1a2c Mon Sep 17 00:00:00 2001 From: Pratik Date: Wed, 28 Aug 2019 14:56:32 +0200 Subject: [PATCH 14/23] updated for Visual Studio --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 0a9095b32..0d45b4fda 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,6 @@ sw.* # Vim swap files *.swp + +# Visual Studio +.vs/ \ No newline at end of file From 780c35e80400d433c890d9860eca7c3a2d4cad5b Mon Sep 17 00:00:00 2001 From: Pratik Date: Wed, 28 Aug 2019 14:59:12 +0200 Subject: [PATCH 15/23] removed .vs index. --- .vs/VSWorkspaceState.json | 9 --------- .vs/postwoman/v15/.suo | Bin 16384 -> 0 bytes .vs/slnx.sqlite | Bin 77824 -> 0 bytes 3 files changed, 9 deletions(-) delete mode 100644 .vs/VSWorkspaceState.json delete mode 100644 .vs/postwoman/v15/.suo delete mode 100644 .vs/slnx.sqlite diff --git a/.vs/VSWorkspaceState.json b/.vs/VSWorkspaceState.json deleted file mode 100644 index b35b927af..000000000 --- a/.vs/VSWorkspaceState.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "ExpandedNodes": [ - "", - "\\layouts", - "\\pages" - ], - "SelectedNode": "\\pages\\index.vue", - "PreviewInSolutionExplorer": false -} \ No newline at end of file diff --git a/.vs/postwoman/v15/.suo b/.vs/postwoman/v15/.suo deleted file mode 100644 index d7c99ece5ea2f497d1d5c82ebad7d9b12001344e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeHOON?7r89q)M=mTg=N(h0HX&!9}V{<)r>~We7@z~=`p+nM6GHK}zsmF6Yy&1pc z>zU4wiC|L+A&^QpU4aBbJS2pg4I5UlKowN9i^2j4Dcxj;#0DggNcg^U?y>K9{I-N3kL!Nja{CjlxK_TvjpK-Tt-@eW0 zyMXZS!VrzXbE1e}MU06VQGi<(8=T6HVZYd0o%0X3DRtv7KRfvSOMmix1o^)CX_fgL zC>F&P@ieGs;hPcbZED$?ykG3`d53#zYU5BI(OA9`&Wcs^Iwx$=A!1XiFN0G+hXW`xtWZcK#-V1yH$T55f_;KJq;KRUA0QUnw2|NJ& z43Kr)2bbkJ?F=7uUHW%n=SEF zq#W?_J<}K_|5L^>Oz4*XDKp6bEc*yt*16079F3g^+HbV!I44(JmwqDWoG#~%@}GK} zI)U@qsr)CebFRtm)CHV>uBSu5G2o-X!@wiJqrhXp$AFImp8$RicpUh7;5g6^3;@3X zG=M=Mb#w?A2A%*$fKlKiFa|scd=hvH_!Mvo_(kAppzbT(q$hmF0knU-jcJj!nv{Ys?}l30UrE?S0Q^WtSW z2NkRcTBeT5*7VE%lYhydozlOAyyR^H+s^V_XS@7glLsF}{-@od$K zQq!oDg#^MpiLqgUtU@F5B&7b#!8>T<&_CSs>oM@AHS<4>grB&HXJP$Z5p$qc7K%1c zUU(Aaz>cB?*BTCkK5fx%=+7cQbsiys-t)YL)ND|GWm_v$zGmNE)<0#qt}h9iix}x; z{AhPwlp~&j6=1d1{j6iG2mYHuIiA%JE~3{3oHG^C^EuEi098u@uy2`GKueZHO0I?c zwpK+j{v3OK_N!`b{pDF1_Y#CTSkD*Gi~4mq28uT3rrjt!)1H+RWD991slz%0 zVhv?1vGGsmUvGc!*}K2~*Vq5>!sBb)WLKrS?&0>~dacj)Qx0(tMELiE3x|~N&V4oQ zekf{P=B=aCxCPA8dCU>5fJJ=QA^AARl!Y1i+5z=1&xG~@J6-=K@=^y7Xk$|2m!;;( zd8EGHnOJB?rKwgv3Hir+27R6=D{b?60qH+>^CZz{?zHua_UglPNOR<>Ru)jBy}04Z z|K=-ndt;tK)FV`wfL8Q1PbR@Pypw7K0nq1JHt$tO(hg}!J$({-A&sD}7KnIvbFUO=E=3qwBSdp{~D)93jtcd&*IP(kQ zY|oVIA&v$~ooW#&*`#RhRY7(m$wz7wdyz&C^(ltUR%A`J^+A$~ss zy~u!nDU*fx;|TO7kJZ6BqAnVZ`EjsbxjsjuHx*c-YHo&60#N>tR~)#Rp`DZZUaUjX zg-510v_tc)hW~78-f0)7eOnSsS>2a@XBhv z%CvOjo-8*qv$O^-A~%)MCtL12h4}LbtUmUuENxq!zH)Cuz8Xf^$DKGuOXf8zZGfqq>d z-;vNiYhbJD{rRh*);@0;`u|73eg7OJRStY^%iTI{HSXCw;?h+h&7_9GY5;_$HpabN=Pc?^`~FM-_Gu$y1P8KZiw zqUoNMI$Kd?xB2#`8Sort9}<1y=f31g1HY^BiPTIqJQMU!N5dh1Fqky_@tI)UZy0eS z5i?S$R3db3^VFQ}WKwp{a;7#DC(R3vRd&o$K3!Nzm(8Sk*;+4IWjk*bDvr5qSIjeZ zWp;JZEES!~D@9~8bLoxZDiW8hY9ycD7ka?d7pQY-h)$z9&l zZot-4ucAzOUYA9jl0Ets;gq!4c{?$Mw~F_*YWhIZo`0u58b`OiKyw7oKq>KpkZ%08 z0#4Pp`_O*7_dhkA`~P_VQ~&;ex9)roFb`hK%NrqDSIq(U@ACei?|gf?f2gNFhrLc- z?&vnQyiI6y_rg};{mGVF!saclrSPrhc{f;3pSSB4q{<3xh@u<|?*6^ELbZD63xhr- z0RIQ3)BaP;>ihqC`ic^F>FOnJ9PKE_>=i@;jx^ySjS2`^`7L z`+hI$Kc99gR{1wadM)40{c&d+VB*xx>#tt_$DzgR@7*~5gPXtRP;q1kye0b)rvCtj z>u(qW72D6P{gJVItnZ|I?>}3&lc3JF26cz8-c`Nchd%1IJ)NzInvAa>YrX^G{>ukG z=3Db)G~~~fi&pf9z zw0r1~axfSfk0{z8?Lx2o`@!S?UtHezmhsxco}Yf>@R6IB9({`))O@bp8vpmpzx|fi z*i`I{vg3{?11` Gfd2xXFqCot diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite deleted file mode 100644 index 389da5e19843afd44c9e50621fbe9d7fd9de3865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77824 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 From 7c9188ed037cc88f3bebc8c090cc3c7eaa20a202 Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Wed, 28 Aug 2019 19:50:59 +0530 Subject: [PATCH 16/23] Revert "Readable GitHub logo" --- .gitignore | 3 --- layouts/default.vue | 7 ++----- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 0d45b4fda..0a9095b32 100644 --- a/.gitignore +++ b/.gitignore @@ -88,6 +88,3 @@ sw.* # Vim swap files *.swp - -# Visual Studio -.vs/ \ No newline at end of file diff --git a/layouts/default.vue b/layouts/default.vue index 347e2ebcc..aa5f2f463 100644 --- a/layouts/default.vue +++ b/layouts/default.vue @@ -22,7 +22,7 @@
      • @@ -26,7 +28,7 @@
      - +
      • @@ -199,8 +201,7 @@
      • - + {{entry.status}}
      • @@ -212,11 +213,11 @@
      • - +
      • - +
      @@ -229,30 +230,30 @@ import section from "../components/section"; const statusCategories = [{ - name: 'informational', + name: 'informational', statusCodeRegex: new RegExp(/[1][0-9]+/), className: 'info-response' }, { - name: 'successful', + name: 'successful', statusCodeRegex: new RegExp(/[2][0-9]+/), className: 'success-response' }, { - name: 'redirection', + name: 'redirection', statusCodeRegex: new RegExp(/[3][0-9]+/), className: 'redir-response' }, { - name: 'client error', + name: 'client error', statusCodeRegex: new RegExp(/[4][0-9]+/), className: 'cl-error-response' }, { - name: 'server error', + name: 'server error', statusCodeRegex: new RegExp(/[5][0-9]+/), className: 'sv-error-response' - }, + }, { // this object is a catch-all for when no other objects match and should always be last name: 'unknown', @@ -261,33 +262,34 @@ } ]; const parseHeaders = xhr => { - const headers = xhr.getAllResponseHeaders().trim().split(/[\r\n]+/); - const headerMap = {}; - headers.forEach(line => { - const parts = line.split(': '); - const header = parts.shift().toLowerCase(); - const value = parts.join(': '); - headerMap[header] = value - }); - return headerMap + const headers = xhr.getAllResponseHeaders().trim().split(/[\r\n]+/); + const headerMap = {}; + headers.forEach(line => { + const parts = line.split(': '); + const header = parts.shift().toLowerCase(); + const value = parts.join(': '); + headerMap[header] = value + }); + return headerMap }; const findStatusGroup = responseStatus => statusCategories.find(status => status.statusCodeRegex.test(responseStatus)); export default { - components: { + components: { 'pw-section': section, VirtualList }, - data () { - return { - method: 'GET', - url: 'https://reqres.in', - auth: 'None', - path: '/api/users', - httpUser: '', - httpPassword: '', - bearerToken: '',headers: [], + data() { + return { + method: 'GET', + url: 'https://reqres.in', + auth: 'None', + path: '/api/users', + httpUser: '', + httpPassword: '', + bearerToken: '', + headers: [], params: [], bodyParams: [], rawParams: '', @@ -368,84 +370,87 @@ methods: { findEntryStatus(entry) { let foundStatusGroup = findStatusGroup(entry.status); - return foundStatusGroup || {className: ''}; - }, - deleteHistory(entry) { - this.history.splice(this.history.indexOf(entry), 1) - window.localStorage.setItem('history', JSON.stringify(this.history)) - }, - clearHistory() { - this.history = [] - window.localStorage.setItem('history', JSON.stringify(this.history)) - }, - useHistory({ - method, - url, - path - }) { - this.method = method - this.url = url - this.path = path - this.$refs.request.$el.scrollIntoView({ - behavior: 'smooth' - }) - }, - sendRequest() { + return foundStatusGroup || { + className: '' + }; + }, + deleteHistory(entry) { + this.history.splice(this.history.indexOf(entry), 1) + window.localStorage.setItem('history', JSON.stringify(this.history)) + }, + clearHistory() { + this.history = [] + window.localStorage.setItem('history', JSON.stringify(this.history)) + }, + useHistory({ + method, + url, + path + }) { + this.method = method + this.url = url + this.path = path + this.$refs.request.$el.scrollIntoView({ + behavior: 'smooth' + }) + }, + sendRequest() { if (!this.isValidURL) { alert('Please check the formatting of the URL'); return - } if (this.$refs.response.$el.classList.contains('hidden')) { - this.$refs.response.$el.classList.toggle('hidden') - } - this.$refs.response.$el.scrollIntoView({ - behavior: 'smooth' - }); + } + if (this.$refs.response.$el.classList.contains('hidden')) { + this.$refs.response.$el.classList.toggle('hidden') + } + this.$refs.response.$el.scrollIntoView({ + behavior: 'smooth' + }); this.previewEnabled = false; - this.response.status = 'Fetching...'; - this.response.body = 'Loading...'; - const xhr = new XMLHttpRequest(); - const user = this.auth === 'Basic' ? this.httpUser : null; - const password = this.auth === 'Basic' ? this.httpPassword : null; - xhr.open(this.method, this.url + this.path + this.queryString, true, user, password); - if (this.auth === 'Bearer Token') - xhr.setRequestHeader('Authorization', 'Bearer ' + this.bearerToken - ); - if (this.headers) { + this.response.status = 'Fetching...'; + this.response.body = 'Loading...'; + const xhr = new XMLHttpRequest(); + const user = this.auth === 'Basic' ? this.httpUser : null; + const password = this.auth === 'Basic' ? this.httpPassword : null; + xhr.open(this.method, this.url + this.path + this.queryString, true, user, password); + if (this.auth === 'Bearer Token') + xhr.setRequestHeader('Authorization', 'Bearer ' + this.bearerToken); + if (this.headers) { this.headers.forEach(function(element) { xhr.setRequestHeader(element.key, element.value) }) } - if (this.method === 'POST' || this.method === 'PUT') { - const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody; - xhr.setRequestHeader('Content-Length', requestBody.length); - xhr.setRequestHeader('Content-Type', `${this.contentType}; charset=utf-8`); - xhr.send(requestBody); - } else { - xhr.send(); - } - xhr.onload = e => { - this.response.status = xhr.status; - const headers = this.response.headers = parseHeaders(xhr); + if (this.method === 'POST' || this.method === 'PUT' || this.method === 'PATCH') { + const requestBody = this.rawInput ? this.rawParams : this.rawRequestBody; + xhr.setRequestHeader('Content-Length', requestBody.length); + xhr.setRequestHeader('Content-Type', `${this.contentType}; charset=utf-8`); + xhr.send(requestBody); + } else { + xhr.send(); + } + xhr.onload = e => { + this.response.status = xhr.status; + const headers = this.response.headers = parseHeaders(xhr); this.response.body = xhr.responseText; - if ((headers['content-type'] || '').startsWith('application/json')) { - this.response.body = JSON.stringify(JSON.parse( - this.response.body ), null, 2); - } - const n = new Date().toLocaleTimeString(); - this.history = [{ - status: xhr.status, - time: n, - method: this.method, - url: this.url, - path: this.path - }, ...this.history]; - window.localStorage.setItem('history', JSON.stringify(this.history)); - }; - xhr.onerror = e => { - this.response.status = xhr.status; - this.response.body = xhr.statusText; + if (this.method != 'HEAD') { + if ((headers['content-type'] || '').startsWith('application/json')) { + this.response.body = JSON.stringify(JSON.parse(this.response.body), null, 2); } - }, + } + const n = new Date().toLocaleTimeString(); + this.history = [{ + status: xhr.status, + time: n, + method: this.method, + url: this.url, + path: this.path + }, ...this.history]; + window.localStorage.setItem('history', JSON.stringify(this.history)); + }; + xhr.onerror = e => { + this.response.status = xhr.status; + this.response.body = xhr.statusText; + } + }, addRequestHeader() { this.headers.push({ key: '', From dc6ac391d714918d8c0b87581c967e6679eadd4b Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Thu, 29 Aug 2019 12:14:11 +0530 Subject: [PATCH 22/23] :pencil2: Updated methods list --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f02ae1aca..3c14dbeea 100644 --- a/README.md +++ b/README.md @@ -38,10 +38,12 @@ When I wrote this, only God and I understood what I was doing. Now, only God kno **Methods:** - `GET` - Retrieve information about the REST API resource + - `HEAD` - Asks for a response identical to that of a GET request, but without the response body. - `POST` - Create a REST API resource - `PUT` - Update a REST API resource - `DELETE` - Delete a REST API resource or related component - - `OPTIONS` - Describe the communication options for the target resource. + - `OPTIONS` - Describe the communication options for the target resource + - `PATCH` - Applies partial modifications to a REST API resource _History entries are synced with local session storage_ From 4237dfc9d12842ecb73d177d9421dcc6e808c47f Mon Sep 17 00:00:00 2001 From: Liyas Thomas Date: Thu, 29 Aug 2019 17:19:45 +0530 Subject: [PATCH 23/23] :bug: Fixes #81 :sparkles: Added Local Date to history entry and will be shown on hovering timestamp --- pages/index.vue | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pages/index.vue b/pages/index.vue index 997c1b178..bfa91faa1 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -197,7 +197,7 @@
      • - +
      • @@ -436,10 +436,12 @@ this.response.body = JSON.stringify(JSON.parse(this.response.body), null, 2); } } - const n = new Date().toLocaleTimeString(); + const d = new Date().toLocaleDateString(); + const t = new Date().toLocaleTimeString(); this.history = [{ status: xhr.status, - time: n, + date: d, + time: t, method: this.method, url: this.url, path: this.path