heroku-api-plugin
Advanced tools
Comparing version 1.1.2 to 1.2.2
@@ -1,5 +0,6 @@ | ||
'use strict'; | ||
'use strict' | ||
let cli = require('heroku-cli-util'); | ||
let fs = require("co-fs"); | ||
const cli = require('heroku-cli-util') | ||
const fs = require('co-fs') | ||
const {inspect} = require('util') | ||
@@ -38,4 +39,4 @@ module.exports = { | ||
args: [ | ||
{name: 'method', description: 'GET, POST, PUT, PATCH, or DELETE', optional: false}, | ||
{name: 'path', description: 'endpoint to call', optional: false} | ||
{name: 'method', description: 'GET, POST, PUT, PATCH, or DELETE'}, | ||
{name: 'path', description: 'endpoint to call', optional: true} | ||
], | ||
@@ -46,29 +47,36 @@ flags: [ | ||
], | ||
run: cli.command(function* (context, heroku) { | ||
let request = {}; | ||
request.method = context.args.method.toUpperCase(); | ||
request.path = context.args.path; | ||
let version = context.flags.version || "3"; | ||
let headers = { 'Accept': `application/vnd.heroku+json; version=${version}` }; | ||
if (context.flags['accept-inclusion'] !== undefined) { | ||
headers['Accept-Inclusion'] = context.flags['accept-inclusion']; | ||
run: cli.command(async function (context, heroku) { | ||
let request = {} | ||
request.path = context.args.path | ||
request.method = context.args.method | ||
if (!request.path) { | ||
request.path = request.method | ||
request.method = 'GET' | ||
} | ||
request.headers = headers; | ||
if (request.method === "PATCH" || request.method === "PUT" || request.method === "POST") { | ||
let body = yield fs.readFile('/dev/stdin', 'utf8'); | ||
let parsedBody; | ||
request.method = request.method.toUpperCase() | ||
let version = context.flags.version || '3' | ||
request.headers = { 'Accept': `application/vnd.heroku+json; version=${version}` } | ||
if (context.flags['accept-inclusion']) { | ||
request.headers['Accept-Inclusion'] = context.flags['accept-inclusion'] | ||
} | ||
if (request.method === 'PATCH' || request.method === 'PUT' || request.method === 'POST') { | ||
let body = await fs.readFile('/dev/stdin', 'utf8') | ||
let parsedBody | ||
try { | ||
parsedBody = JSON.parse(body); | ||
} catch(e) { | ||
throw new Error("Request body must be valid JSON"); | ||
parsedBody = JSON.parse(body) | ||
} catch (e) { | ||
throw new Error('Request body must be valid JSON') | ||
} | ||
request.body = parsedBody; | ||
request.body = parsedBody | ||
} | ||
let response = yield heroku.request(request); | ||
let response | ||
try { | ||
response = await heroku.request(request) | ||
} catch (err) { | ||
if (!err.statusCode) throw err | ||
throw new Error(`HTTP: ${err.statusCode} ${request.path}\n${inspect(err.body)}`) | ||
} | ||
if (typeof response === "object") | ||
cli.styledJSON(response); | ||
else | ||
cli.log(response); | ||
if (typeof response === 'object') { cli.styledJSON(response) } else { cli.log(response) } | ||
}) | ||
}; | ||
} |
exports.topic = { | ||
name: 'api', | ||
description: 'call the Heroku API directly' | ||
}; | ||
} | ||
exports.commands = [ | ||
require('./commands/api') | ||
]; | ||
] |
{ | ||
"name": "heroku-api-plugin", | ||
"description": "access the Heroku API directly", | ||
"version": "1.1.2", | ||
"author": "Mark Pundsack @markpundsack", | ||
"repository": "heroku/heroku-api-plugin", | ||
"version": "1.2.2", | ||
"author": "Jeff Dickey @dickeyxxx", | ||
"bugs": { | ||
"url": "https://github.com/heroku/heroku-api-plugin/issues" | ||
}, | ||
"dependencies": { | ||
"co": "^4.5.4", | ||
"co-fs": "^1.2.0", | ||
"heroku-cli-util": "^6.2.0" | ||
}, | ||
"devDependencies": { | ||
"chai": "^4.0.2", | ||
"mocha": "^3.4.2", | ||
"nock": "^9.0.13", | ||
"sinon": "^2.3.5", | ||
"sinon-chai": "^2.8.0", | ||
"standard": "^10.0.2" | ||
}, | ||
"keywords": [ | ||
@@ -15,20 +27,9 @@ "heroku-plugin" | ||
"main": "index.js", | ||
"repository": "heroku/heroku-api-plugin", | ||
"scripts": { | ||
"test": "mocha && jshint .", | ||
"preversion": "npm test", | ||
"postversion": "npm publish && git push && git push --tags" | ||
"test": "mocha && standard" | ||
}, | ||
"dependencies": { | ||
"co": "^4.5.4", | ||
"co-fs": "^1.2.0", | ||
"heroku-cli-util": "5.8.4" | ||
}, | ||
"devDependencies": { | ||
"chai": "^3.0.0", | ||
"jshint": "*", | ||
"mocha": "^2.2.5", | ||
"nock": "^2.5.0", | ||
"sinon": "^1.15.3", | ||
"sinon-chai": "^2.8.0" | ||
"standard": { | ||
"env": "jest" | ||
} | ||
} |
@@ -1,32 +0,32 @@ | ||
'use strict'; | ||
'use strict' | ||
let cli = require('heroku-cli-util'); | ||
let nock = require('nock'); | ||
let sinon = require('sinon'); | ||
let cmd = require('../../commands/api'); | ||
let cli = require('heroku-cli-util') | ||
let nock = require('nock') | ||
let sinon = require('sinon') | ||
let cmd = require('../../commands/api') | ||
describe('api', function () { | ||
beforeEach(function () { | ||
this.cliDebug = sinon.stub(cli, 'debug'); | ||
}); | ||
this.cliDebug = sinon.stub(cli, 'debug') | ||
}) | ||
afterEach(function () { | ||
this.cliDebug.restore(); | ||
}); | ||
this.cliDebug.restore() | ||
}) | ||
it.skip('displays the app info', function () { | ||
let self = this; | ||
let method = "get"; | ||
let path = "/app/myapp"; | ||
let app = {name: 'myapp', web_url: 'https://myapp.herokuapp.com/'}; | ||
let self = this | ||
let method = 'get' | ||
let path = '/app/myapp' | ||
let app = {name: 'myapp', web_url: 'https://myapp.herokuapp.com/'} | ||
nock('https://api.heroku.com') | ||
.get('/apps/myapp') | ||
.reply(200, app); | ||
.reply(200, app) | ||
return cmd.run({args: {method, path}, flags: {}}) | ||
.then(function () { | ||
self.cliDebug.should.have.been.calledWith(app); | ||
}); | ||
}); | ||
}); | ||
self.cliDebug.should.have.been.calledWith(app) | ||
}) | ||
}) | ||
}) |
@@ -1,8 +0,8 @@ | ||
'use strict'; | ||
'use strict' | ||
let cli = require('heroku-cli-util'); | ||
cli.raiseErrors = true; | ||
let cli = require('heroku-cli-util') | ||
cli.raiseErrors = true | ||
let chai = require('chai'); | ||
chai.use(require('sinon-chai')); | ||
chai.should(); | ||
let chai = require('chai') | ||
chai.use(require('sinon-chai')) | ||
chai.should() |
61332
11
112
+ Added@heroku-cli/color@1.1.16(transitive)
+ Addedansi-escapes@3.2.0(transitive)
+ Addedansi-regex@3.0.14.1.1(transitive)
+ Addedansi-styles@3.2.1(transitive)
+ Addedcapture-stack-trace@1.0.2(transitive)
+ Addedcardinal@1.0.0(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedcolor-convert@1.9.3(transitive)
+ Addedcolor-name@1.1.3(transitive)
+ Addedcreate-error-class@3.0.2(transitive)
+ Addedduplexer3@0.1.5(transitive)
+ Addedesprima@3.0.0(transitive)
+ Addedget-stream@3.0.0(transitive)
+ Addedgot@6.7.1(transitive)
+ Addedhas-flag@3.0.0(transitive)
+ Addedheroku-cli-util@6.2.13(transitive)
+ Addedheroku-client@3.1.0(transitive)
+ Addedis-redirect@1.0.0(transitive)
+ Addedis-retry-allowed@1.2.0(transitive)
+ Addedis-stream@1.1.0(transitive)
+ Addedlex@1.7.9(transitive)
+ Addedlodash.ary@4.1.1(transitive)
+ Addedlodash.defaults@4.2.0(transitive)
+ Addedlodash.get@4.4.2(transitive)
+ Addedlodash.identity@3.0.0(transitive)
+ Addedlodash.keys@4.2.0(transitive)
+ Addedlodash.mapvalues@4.6.0(transitive)
+ Addedlodash.noop@3.0.1(transitive)
+ Addedlodash.partial@4.2.1(transitive)
+ Addedlodash.pickby@4.6.0(transitive)
+ Addedlodash.property@4.4.2(transitive)
+ Addedlodash.repeat@4.1.0(transitive)
+ Addedlodash.result@4.5.2(transitive)
+ Addedlowercase-keys@1.0.1(transitive)
+ Addednetrc-parser@2.0.6(transitive)
+ Addedprepend-http@1.0.4(transitive)
+ Addedredeyed@1.0.1(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedstrip-ansi@4.0.05.2.0(transitive)
+ Addedsupports-color@5.5.0(transitive)
+ Addedtimed-out@4.0.1(transitive)
+ Addedtslib@1.14.1(transitive)
+ Addedtunnel-agent@0.6.0(transitive)
+ Addedunzip-response@2.0.1(transitive)
+ Addedurl-parse-lax@1.0.0(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedansi-styles@2.2.1(transitive)
- Removedcardinal@0.6.0(transitive)
- Removedchalk@1.1.1(transitive)
- Removedesprima@2.7.3(transitive)
- Removedhas-ansi@2.0.0(transitive)
- Removedheroku-cli-util@5.8.4(transitive)
- Removedheroku-client@2.4.1(transitive)
- Removedinflection@1.13.41.3.8(transitive)
- Removedlodash@4.6.1(transitive)
- Removedpath-proxy@1.0.0(transitive)
- Removedq@1.5.1(transitive)
- Removedredeyed@0.6.0(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedsupports-color@2.0.0(transitive)
- Removedtunnel-agent@0.4.3(transitive)
Updatedheroku-cli-util@^6.2.0