From 40b31856880e2fe13b8d87a166226529dd7b1f70 Mon Sep 17 00:00:00 2001 From: Bhargav yadati Date: Mon, 4 Sep 2017 19:13:06 +0530 Subject: [PATCH 1/4] Removed setheader function and reshuffled the functions for headers and body construction --- index.js | 57 ++++++++++++++++++++++++-------------------------------- 1 file changed, 24 insertions(+), 33 deletions(-) diff --git a/index.js b/index.js index 3661fa3..baebbac 100644 --- a/index.js +++ b/index.js @@ -50,34 +50,44 @@ class R2 { let failSet = () => { throw new Error('Cannot set read-only property.') } Object.defineProperty(this, 'json', { - get: () => this.response.then(resp => resp.clone().json()), + get: () => this.response.then(resp => resp.json()), set: failSet }) Object.defineProperty(this, 'text', { - get: () => this.response.then(resp => resp.clone().text()), + get: () => this.response.then(resp => resp.text()), set: failSet }) Object.defineProperty(this, 'arrayBuffer', { - get: () => this.response.then(resp => resp.clone().arrayBuffer()), + get: () => this.response.then(resp => resp.arrayBuffer()), set: failSet }) Object.defineProperty(this, 'blob', { - get: () => this.response.then(resp => resp.clone().blob()), + get: () => this.response.then(resp => resp.blob()), set: failSet }) - Object.defineProperty(this, 'formData', { + Object.defineProperty(this, 'fromData', { /* This isn't implemented in the shim yet */ get: /* istanbul ignore next */ - () => this.response.then(resp => resp.clone().formData()), + () => this.response.then(resp => resp.formData()), set: failSet }) this._args(...args) - + this.opts.headers = makeHeaders(this._headers) // follow FP paradigm :: construct headers + if (this.opts.body) { // construct body + this.opts.body = makeBody(this.opts.body) + } setTimeout(() => { - this._request() + this._request() // make API call }, 0) } + setHeaders (obj) { + for (let key in obj) { + this._caseless.set(key, obj[key]) + } + return this + } + _args (...args) { let opts = this.opts if (typeof args[0] === 'string') { @@ -87,6 +97,12 @@ class R2 { opts = Object.assign(opts, args.shift()) } if (opts.headers) this.setHeaders(opts.headers) + + if (opts.json) { + opts.body = JSON.stringify(opts.json) + this.setHeaders({'content-type': 'application/json'}) + delete opts.json + } this.opts = opts } put (...args) { @@ -123,35 +139,10 @@ class R2 { let url = this.opts.url delete this.opts.url - if (this.opts.json) { - this.opts.body = JSON.stringify(this.opts.json) - this.setHeader('content-type', 'application/json') - delete this.opts.json - } - - if (this.opts.body) { - this.opts.body = makeBody(this.opts.body) - } - - // TODO: formData API. - - this.opts.headers = makeHeaders(this._headers) - fetch(url, this.opts) .then(resp => this.response.resolve(resp)) .catch(err => this.response.reject(err)) } - setHeaders (obj) { - for (let key in obj) { - this._caseless.set(key, obj[key]) - } - return this - } - setHeader (key, value) { - let o = {} - o[key] = value - return this.setHeaders(o) - } } module.exports = (...args) => new R2(...args) From 975b9b644193fae50f9d6e353714a56ef3557e5a Mon Sep 17 00:00:00 2001 From: Bhargav yadati Date: Mon, 4 Sep 2017 19:20:41 +0530 Subject: [PATCH 2/4] rollback clone changes --- index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index baebbac..0536bf4 100644 --- a/index.js +++ b/index.js @@ -50,19 +50,19 @@ class R2 { let failSet = () => { throw new Error('Cannot set read-only property.') } Object.defineProperty(this, 'json', { - get: () => this.response.then(resp => resp.json()), + get: () => this.response.then(resp => resp.clone().json()), set: failSet }) Object.defineProperty(this, 'text', { - get: () => this.response.then(resp => resp.text()), + get: () => this.response.then(resp => resp.clone().text()), set: failSet }) Object.defineProperty(this, 'arrayBuffer', { - get: () => this.response.then(resp => resp.arrayBuffer()), + get: () => this.response.then(resp => resp.clone().arrayBuffer()), set: failSet }) Object.defineProperty(this, 'blob', { - get: () => this.response.then(resp => resp.blob()), + get: () => this.response.then(resp => resp.clone().blob()), set: failSet }) Object.defineProperty(this, 'fromData', { From 7c6a034c56d18464addbcb0194031565b830e256 Mon Sep 17 00:00:00 2001 From: Bhargav yadati Date: Mon, 4 Sep 2017 19:21:49 +0530 Subject: [PATCH 3/4] rollback clone changes --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 0536bf4..4439138 100644 --- a/index.js +++ b/index.js @@ -68,7 +68,7 @@ class R2 { Object.defineProperty(this, 'fromData', { /* This isn't implemented in the shim yet */ get: /* istanbul ignore next */ - () => this.response.then(resp => resp.formData()), + () => this.response.then(resp => resp.clone().formData()), set: failSet }) From 056b6f129f857d7173f740aef1d924afe82f3872 Mon Sep 17 00:00:00 2001 From: Bhargav yadati Date: Wed, 6 Sep 2017 11:40:14 +0530 Subject: [PATCH 4/4] spell check --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 4439138..1c22ed9 100644 --- a/index.js +++ b/index.js @@ -65,7 +65,7 @@ class R2 { get: () => this.response.then(resp => resp.clone().blob()), set: failSet }) - Object.defineProperty(this, 'fromData', { + Object.defineProperty(this, 'formData', { /* This isn't implemented in the shim yet */ get: /* istanbul ignore next */ () => this.response.then(resp => resp.clone().formData()),