From cdf9390a203ff30127f466e1bca91d8dec24a0ca Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Tue, 19 Nov 2019 16:47:10 +0000 Subject: [PATCH 1/2] refactor: convert name API to async/await Depends on: * [ ] https://github.com/ipfs/interface-js-ipfs-core/pull/561 License: MIT Signed-off-by: Alan Shaw --- package.json | 2 +- src/name/index.js | 16 ++++++-------- src/name/publish.js | 43 ++++++++++++++++++++------------------ src/name/pubsub/cancel.js | 36 +++++++++++++++---------------- src/name/pubsub/index.js | 10 +++++---- src/name/pubsub/state.js | 32 +++++++++++++--------------- src/name/pubsub/subs.js | 29 ++++++++++++------------- src/name/resolve.js | 37 +++++++++++++++++--------------- src/utils/load-commands.js | 4 ++-- 9 files changed, 102 insertions(+), 107 deletions(-) diff --git a/package.json b/package.json index bfc80c569..9f6a6d147 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "browser-process-platform": "~0.1.1", "cross-env": "^6.0.0", "go-ipfs-dep": "^0.4.22", - "interface-ipfs-core": "^0.119.0", + "interface-ipfs-core": "github:ipfs/interface-js-ipfs-core#fix/allow-offline-camel-case", "ipfsd-ctl": "^0.47.1", "nock": "^11.4.0", "stream-equal": "^1.1.1" diff --git a/src/name/index.js b/src/name/index.js index 8f823311a..7a6837b82 100644 --- a/src/name/index.js +++ b/src/name/index.js @@ -1,13 +1,9 @@ 'use strict' -const moduleConfig = require('../utils/module-config') +const callbackify = require('callbackify') -module.exports = (arg) => { - const send = moduleConfig(arg) - - return { - publish: require('./publish')(send), - resolve: require('./resolve')(send), - pubsub: require('./pubsub')(send) - } -} +module.exports = config => ({ + publish: callbackify.variadic(require('./publish')(config)), + resolve: callbackify.variadic(require('./resolve')(config)), + pubsub: require('./pubsub')(config) +}) diff --git a/src/name/publish.js b/src/name/publish.js index cfc7482e3..e470606f9 100644 --- a/src/name/publish.js +++ b/src/name/publish.js @@ -1,25 +1,28 @@ 'use strict' -const promisify = require('promisify-es6') +const configure = require('../lib/configure') +const toCamel = require('../lib/object-to-camel') -const transform = function (res, callback) { - callback(null, { - name: res.Name, - value: res.Value - }) -} +module.exports = configure(({ ky }) => { + return async (path, options) => { + options = options || {} -module.exports = (send) => { - return promisify((args, opts, callback) => { - if (typeof (opts) === 'function') { - callback = opts - opts = {} - } + const searchParams = new URLSearchParams(options.searchParams) + searchParams.set('arg', path) + if (options.allowOffline != null) searchParams.set('allow-offline', options.allowOffline) + if (options.key) searchParams.set('key', options.key) + if (options.lifetime) searchParams.set('lifetime', options.lifetime) + if (options.quieter != null) searchParams.set('quieter', options.quieter) + if (options.resolve != null) searchParams.set('resolve', options.resolve) + if (options.ttl) searchParams.set('ttl', options.ttl) - send.andTransform({ - path: 'name/publish', - args: args, - qs: opts - }, transform, callback) - }) -} + const res = await ky.post('name/publish', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams + }).json() + + return toCamel(res) + } +}) diff --git a/src/name/pubsub/cancel.js b/src/name/pubsub/cancel.js index 32dbbb3af..ea5391e64 100644 --- a/src/name/pubsub/cancel.js +++ b/src/name/pubsub/cancel.js @@ -1,24 +1,22 @@ 'use strict' -const promisify = require('promisify-es6') +const configure = require('../../lib/configure') +const toCamel = require('../../lib/object-to-camel') -const transform = function (res, callback) { - callback(null, { - canceled: res.Canceled === undefined || res.Canceled === true - }) -} +module.exports = configure(({ ky }) => { + return async (name, options) => { + options = options || {} -module.exports = (send) => { - return promisify((args, opts, callback) => { - if (typeof (opts) === 'function') { - callback = opts - opts = {} - } + const searchParams = new URLSearchParams(options.searchParams) + searchParams.set('arg', name) - send.andTransform({ - path: 'name/pubsub/cancel', - args: args, - qs: opts - }, transform, callback) - }) -} + const res = await ky.post('name/pubsub/cancel', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams + }).json() + + return toCamel(res) + } +}) diff --git a/src/name/pubsub/index.js b/src/name/pubsub/index.js index aefc0f880..70db19874 100644 --- a/src/name/pubsub/index.js +++ b/src/name/pubsub/index.js @@ -1,7 +1,9 @@ 'use strict' -module.exports = (send) => ({ - cancel: require('./cancel')(send), - state: require('./state')(send), - subs: require('./subs')(send) +const callbackify = require('callbackify') + +module.exports = config => ({ + cancel: callbackify.variadic(require('./cancel')(config)), + state: callbackify.variadic(require('./state')(config)), + subs: callbackify.variadic(require('./subs')(config)) }) diff --git a/src/name/pubsub/state.js b/src/name/pubsub/state.js index cc9b0b369..03e18aa7f 100644 --- a/src/name/pubsub/state.js +++ b/src/name/pubsub/state.js @@ -1,23 +1,19 @@ 'use strict' -const promisify = require('promisify-es6') +const configure = require('../../lib/configure') +const toCamel = require('../../lib/object-to-camel') -const transform = function (res, callback) { - callback(null, { - enabled: res.Enabled - }) -} +module.exports = configure(({ ky }) => { + return async options => { + options = options || {} -module.exports = (send) => { - return promisify((opts, callback) => { - if (typeof (opts) === 'function') { - callback = opts - opts = {} - } + const res = await ky.post('name/pubsub/state', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams: options.searchParams + }).json() - send.andTransform({ - path: 'name/pubsub/state', - qs: opts - }, transform, callback) - }) -} + return toCamel(res) + } +}) diff --git a/src/name/pubsub/subs.js b/src/name/pubsub/subs.js index 3a3a54c2a..dc0265a59 100644 --- a/src/name/pubsub/subs.js +++ b/src/name/pubsub/subs.js @@ -1,21 +1,18 @@ 'use strict' -const promisify = require('promisify-es6') +const configure = require('../../lib/configure') -const transform = function (res, callback) { - callback(null, res.Strings || []) -} +module.exports = configure(({ ky }) => { + return async (name, options) => { + options = options || {} -module.exports = (send) => { - return promisify((opts, callback) => { - if (typeof (opts) === 'function') { - callback = opts - opts = {} - } + const res = await ky.get('name/pubsub/subs', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams: options.searchParams + }).json() - send.andTransform({ - path: 'name/pubsub/subs', - qs: opts - }, transform, callback) - }) -} + return res.Strings + } +}) diff --git a/src/name/resolve.js b/src/name/resolve.js index addb567d6..b6e8db47e 100644 --- a/src/name/resolve.js +++ b/src/name/resolve.js @@ -1,22 +1,25 @@ 'use strict' -const promisify = require('promisify-es6') +const configure = require('../lib/configure') -const transform = function (res, callback) { - callback(null, res.Path) -} +module.exports = configure(({ ky }) => { + return async (path, options) => { + options = options || {} -module.exports = (send) => { - return promisify((args, opts, callback) => { - if (typeof (opts) === 'function') { - callback = opts - opts = {} - } + const searchParams = new URLSearchParams(options.searchParams) + searchParams.set('arg', path) + if (options.dhtRecordCount != null) searchParams.set('dht-record-count', options.dhtRecordCount) + if (options.dhtTimeout != null) searchParams.set('dht-timeout', options.dhtTimeout) + if (options.noCache != null) searchParams.set('nocache', options.noCache) + if (options.recursive != null) searchParams.set('recursive', options.recursive) - send.andTransform({ - path: 'name/resolve', - args: args, - qs: opts - }, transform, callback) - }) -} + const res = await ky.post('name/resolve', { + timeout: options.timeout, + signal: options.signal, + headers: options.headers, + searchParams + }).json() + + return res.Path + } +}) diff --git a/src/utils/load-commands.js b/src/utils/load-commands.js index 3e51acdb2..dd95b7cdd 100644 --- a/src/utils/load-commands.js +++ b/src/utils/load-commands.js @@ -113,7 +113,8 @@ function requireCommands (send, config) { config: require('../config')(config), dag: require('../dag')(config), dht: require('../dht')(config), - diag: require('../diag')(config) + diag: require('../diag')(config), + name: require('../name')(config) } Object.assign(cmds.refs, { @@ -132,7 +133,6 @@ function requireCommands (send, config) { pin: require('../pin'), // Network - name: require('../name'), ping: require('../ping'), pingReadableStream: require('../ping-readable-stream'), pingPullStream: require('../ping-pull-stream'), From 28953840730d1f5c830298443158e891c08d3b11 Mon Sep 17 00:00:00 2001 From: Alan Shaw Date: Tue, 19 Nov 2019 17:19:44 +0000 Subject: [PATCH 2/2] fix: tests --- src/name/pubsub/subs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/name/pubsub/subs.js b/src/name/pubsub/subs.js index dc0265a59..f267183a0 100644 --- a/src/name/pubsub/subs.js +++ b/src/name/pubsub/subs.js @@ -13,6 +13,6 @@ module.exports = configure(({ ky }) => { searchParams: options.searchParams }).json() - return res.Strings + return res.Strings || [] } })