From b1494f3a3451545bee847479782c49060510938e Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 11:59:08 +0100 Subject: [PATCH 01/11] Added intial required packages --- package.json | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 package.json diff --git a/package.json b/package.json new file mode 100644 index 0000000..413ef74 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "digitalocean-droplet-sdk", + "version": "1.0.0", + "description": "A NodeJS wrapper for the DigitalOcean Droplet API", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/GeekyAubergine/digitalocean-droplet-sdk.git" + }, + "keywords": [ + "digitalocean", + "digital", + "ocean", + "droplet", + "sdk", + "api" + ], + "author": "Chris Aubert | GeekyAubergine", + "license": "MIT", + "bugs": { + "url": "https://github.com/GeekyAubergine/digitalocean-droplet-sdk/issues" + }, + "homepage": "https://github.com/GeekyAubergine/digitalocean-droplet-sdk#readme", + "dependencies": { + "request": "^2.74.0" + } +} From 976d1bf9cd61cdf09305d08accf6d9e6fb924156 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 13:39:03 +0100 Subject: [PATCH 02/11] Added dev/testing dependancies --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index 413ef74..809ab87 100644 --- a/package.json +++ b/package.json @@ -26,5 +26,10 @@ "homepage": "https://github.com/GeekyAubergine/digitalocean-droplet-sdk#readme", "dependencies": { "request": "^2.74.0" + }, + "devDependencies": { + "chai": "^3.5.0", + "chai-as-promised": "^5.3.0", + "mocha": "^3.0.2" } } From 39f54e91f29e87a4df9b11fd28a1a5d804364a1f Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 13:41:58 +0100 Subject: [PATCH 03/11] Added getMetadata --- index.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 index.js diff --git a/index.js b/index.js new file mode 100644 index 0000000..cf70cd9 --- /dev/null +++ b/index.js @@ -0,0 +1,18 @@ +var request = require('request'); + +module.exports = { + getMetadata: function() { + return new Promise(function(resolve, reject) { + var host = process.env.HOST || '169.254.169.254'; + var port = process.env.PORT ? (':' + process.env.PORT) : ''; + request('http://' + host + port + '/metadata/v1.json', function(error, response, body) { + if (!error && response.statusCode === 200) { + resolve(body); + } + else { + reject(error); + } + }); + }); + } +}; From fe30a155dca2025ff74d18e0eb0755fee0c9ba47 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 13:43:00 +0100 Subject: [PATCH 04/11] Added testing for getMetadata --- test/test.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/test.js diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..1c762df --- /dev/null +++ b/test/test.js @@ -0,0 +1,37 @@ +var http = require('http'), + chai = require('chai'), + should = chai.should(), + dropletSDK = require('../index'), + chaiAsPromised = require("chai-as-promised"); + +chai.use(chaiAsPromised); + +var exampleDroplet = { + +} + +var server = http.createServer(function(req, res) { + res.end(JSON.stringify({ + id: 123456, + })); +}); + +describe('#droplet-api', function() { + before(function() { + process.env.HOST = '127.0.0.1'; + process.env.PORT = '7997'; + server.listen(7997, '127.0.0.1', function() { + console.log('testing'); + }); + }); + + after(function() { + server.close(); + }); + + it('gets metadata', function() { + return dropletSDK.getMetadata().should.eventually.equal(JSON.stringify({ + id: 123456, + })); + }); +}); From b309fc6d2396c5400e44c09547b1a780ac529315 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 13:43:13 +0100 Subject: [PATCH 05/11] Added makefile --- Makefile | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Makefile diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a96b06a --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +test: + ./node_modules/.bin/mocha --reporter spec + +.PHONY: test From 3c124585fa4c8d711736cdcf80054039ab3333f1 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 13:44:20 +0100 Subject: [PATCH 06/11] Implemented npm test --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 809ab87..f4cf308 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "A NodeJS wrapper for the DigitalOcean Droplet API", "main": "index.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "make test" }, "repository": { "type": "git", From 272f60328ff6edee7219013b44974d72cd15c987 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 13:51:42 +0100 Subject: [PATCH 07/11] Added basic CI --- .travis.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..c8b7941 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,9 @@ +language: node_js + +node_js: + - node + - 6 + - 5 + - 4 + - 0.12 + - 0.10 \ No newline at end of file From e33e7a1385666373cf5321236a4d8c470b98b50e Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 14:00:55 +0100 Subject: [PATCH 08/11] Added code coverage --- .gitignore | 2 +- .travis.yml | 3 +-- package.json | 5 ++++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 5148e52..e9a3d6e 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,4 @@ jspm_packages .npm # Optional REPL history -.node_repl_history +.node_repl_history \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index c8b7941..9741424 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,5 +5,4 @@ node_js: - 6 - 5 - 4 - - 0.12 - - 0.10 \ No newline at end of file + - 0.12 \ No newline at end of file diff --git a/package.json b/package.json index f4cf308..ae4c441 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "A NodeJS wrapper for the DigitalOcean Droplet API", "main": "index.js", "scripts": { - "test": "make test" + "test": "make test", + "test-coverage": "istanbul cover node_modules/mocha/bin/_mocha && istanbul-coveralls" }, "repository": { "type": "git", @@ -30,6 +31,8 @@ "devDependencies": { "chai": "^3.5.0", "chai-as-promised": "^5.3.0", + "istanbul": "^0.4.5", + "istanbul-coveralls": "^1.0.3", "mocha": "^3.0.2" } } From d6e1384ac2ec40ce19a914c1d557877861fb042e Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 14:03:20 +0100 Subject: [PATCH 09/11] Derp, would help if it actually submitted coverage --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 9741424..161c207 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,7 @@ node_js: - 6 - 5 - 4 - - 0.12 \ No newline at end of file + - 0.12 + +after_script: + - npm run test-cov \ No newline at end of file From de4b3142c3ef87884fca9fa0fc5b67d2b70da5c6 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 14:05:54 +0100 Subject: [PATCH 10/11] I apparently can't spell --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 161c207..56b6c32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,4 +8,4 @@ node_js: - 0.12 after_script: - - npm run test-cov \ No newline at end of file + - npm run test-coverage \ No newline at end of file From 26ef035bbc95d72dcdbfe0d6795cf45338aaf803 Mon Sep 17 00:00:00 2001 From: Chris Aubert Date: Thu, 15 Sep 2016 14:26:37 +0100 Subject: [PATCH 11/11] Improved readme --- README.md | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dd2a31a..7490ea3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,25 @@ -# digitalocean-droplet-sdk -A NodeJs wrapper for the DigitalOcean droplet API +# DigitalOcean-Droplet-SDK + +[![Build Status](https://travis-ci.org/GeekyAubergine/digitalocean-droplet-sdk.svg?branch=develop)](https://travis-ci.org/GeekyAubergine/digitalocean-droplet-sdk) +[![Coverage Status](https://coveralls.io/repos/github/GeekyAubergine/digitalocean-droplet-sdk/badge.svg?branch=develop)](https://coveralls.io/github/GeekyAubergine/digitalocean-droplet-sdk?branch=develop) + +A simple interface to get metadata about a DigitalOcean Droplet. + +## Install + + npm install digitalocean-droplet-sdk --save + + +## Usage + +DigitalOcean-Droplet-SDK was designed to provide a simple and easy to use interface to get metadata about the droplet that it is running on. + +```js +var dropletSDK = require('digitalocean-droplet-sdk'); + +dropletSDK.getMetadata().then(function(metadata) { + /* do something with the result */ +}).catch(function() { + /* error :( */ +}) +```