ledger-rest
Advanced tools
Comparing version 0.0.8 to 0.1.0
/*global module:false*/ | ||
module.exports = function(grunt) { | ||
// Project configuration. | ||
grunt.initConfig({ | ||
// Metadata. | ||
pkg: grunt.file.readJSON('package.json'), | ||
@@ -13,22 +10,3 @@ banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' + | ||
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n', | ||
// Task configuration. | ||
concat: { | ||
options: { | ||
banner: '<%= banner %>', | ||
stripBanners: true | ||
}, | ||
dist: { | ||
src: ['lib/<%= pkg.name %>.js'], | ||
dest: 'dist/<%= pkg.name %>.js' | ||
} | ||
}, | ||
uglify: { | ||
options: { | ||
banner: '<%= banner %>' | ||
}, | ||
dist: { | ||
src: '<%= concat.dist.dest %>', | ||
dest: 'dist/<%= pkg.name %>.min.js' | ||
} | ||
}, | ||
jshint: { | ||
@@ -47,3 +25,5 @@ options: { | ||
eqnull: true, | ||
globals: {} | ||
globals: { | ||
jQuery: true | ||
} | ||
}, | ||
@@ -53,10 +33,34 @@ gruntfile: { | ||
}, | ||
lib_test: { | ||
src: ['lib/**/*.js', 'spec/**/*.js'] | ||
lib: { | ||
options: { | ||
globals: { | ||
require: true, | ||
module: true, | ||
console: true | ||
} | ||
}, | ||
src: ['lib/**/*.js'] | ||
}, | ||
spec: { | ||
options: { | ||
globals: { | ||
require: true, | ||
describe: true, | ||
beforeEach: true, | ||
afterEach: true, | ||
it: true, | ||
expect: true | ||
} | ||
}, | ||
src: ['spec/**/*.js'] | ||
} | ||
}, | ||
jasmine : { | ||
src : 'lib/**/*.js', | ||
specs : 'spec/**/*.js' | ||
'mochaTest': { | ||
src: ['spec/**/*.spec.js'], | ||
options: { | ||
reporter: 'spec' | ||
} | ||
}, | ||
watch: { | ||
@@ -67,5 +71,9 @@ gruntfile: { | ||
}, | ||
lib_test: { | ||
files: '<%= jshint.lib_test.src %>', | ||
tasks: ['jshint:lib_test', 'nodeunit'] | ||
lib: { | ||
files: '<%= jshint.lib.src %>', | ||
tasks: ['jshint:lib'] | ||
}, | ||
spec: { | ||
files: '<%= jshint.spec.src %>', | ||
tasks: ['jshint:spec', 'spec'] | ||
} | ||
@@ -77,7 +85,8 @@ } | ||
grunt.loadNpmTasks('grunt-contrib-watch'); | ||
grunt.loadNpmTasks('grunt-jasmine-runner'); | ||
grunt.loadNpmTasks('grunt-mocha-test'); | ||
grunt.registerTask('spec', ['mochaTest']); | ||
// Default task. | ||
grunt.registerTask('default', ['jshint']); | ||
}; | ||
grunt.registerTask('default', ['jshint', 'spec']); | ||
}; |
@@ -1,27 +0,24 @@ | ||
/*global exports, require */ | ||
(function () { | ||
var JSONStream = require('JSONStream'); | ||
var JSONStream = require('JSONStream'); | ||
var Balance = (function() { | ||
function Balance(ledger) { | ||
this.ledger = ledger; | ||
} | ||
var Balance = (function() { | ||
function Balance(ledger) { | ||
this.ledger = ledger; | ||
} | ||
Balance.prototype.handle = function(req, res, next) { | ||
res.setHeader('content-type', 'application/json'); | ||
Balance.prototype.handle = function(req, res, next) { | ||
res.setHeader('content-type', 'application/json'); | ||
this.ledger.balance() | ||
.pipe(JSONStream.stringify()) | ||
.pipe(res) | ||
.once('error', function (err) { | ||
res.statusCode = 500; | ||
res.end(String(err)); | ||
}) | ||
.once('end', next); | ||
}; | ||
this.ledger.balance() | ||
.pipe(JSONStream.stringify()) | ||
.pipe(res) | ||
.once('error', function (err) { | ||
res.statusCode = 500; | ||
res.end(String(err)); | ||
}) | ||
.once('end', next); | ||
}; | ||
return Balance; | ||
})(); | ||
return Balance; | ||
})(); | ||
exports.Balance = Balance; | ||
})(); | ||
module.exports.Balance = Balance; |
@@ -1,33 +0,30 @@ | ||
/*global exports, require */ | ||
(function () { | ||
var JSONStream = require('JSONStream'); | ||
var JSONStream = require('JSONStream'); | ||
var Register = (function() { | ||
function Register(ledger) { | ||
this.ledger = ledger; | ||
} | ||
var Register = (function() { | ||
function Register(ledger) { | ||
this.ledger = ledger; | ||
Register.prototype.handle = function(req, res, next) { | ||
var options = { }; | ||
if (req.params.account) { | ||
options.account = req.params.account; | ||
} | ||
Register.prototype.handle = function(req, res, next) { | ||
var options = { }; | ||
if (req.params.account) { | ||
options.account = req.params.account; | ||
} | ||
res.setHeader('content-type', 'application/json'); | ||
res.setHeader('content-type', 'application/json'); | ||
this.ledger.register(options) | ||
.pipe(JSONStream.stringify()) | ||
.pipe(res) | ||
.once('error', function (err) { | ||
res.statusCode = 500; | ||
res.end(String(err)); | ||
}) | ||
.once('end', next); | ||
}; | ||
this.ledger.register(options) | ||
.pipe(JSONStream.stringify()) | ||
.pipe(res) | ||
.once('error', function (err) { | ||
res.statusCode = 500; | ||
res.end(String(err)); | ||
}) | ||
.once('end', next); | ||
}; | ||
return Register; | ||
})(); | ||
return Register; | ||
})(); | ||
exports.Register = Register; | ||
})(); | ||
module.exports.Register = Register; |
@@ -1,24 +0,21 @@ | ||
/*global exports */ | ||
(function () { | ||
var Version = (function() { | ||
function Version(ledger) { | ||
this.ledger = ledger; | ||
} | ||
Version.prototype.handle = function(req, res, next) { | ||
this.ledger.version(function(err, version) { | ||
if (err) { | ||
return res.send(err); | ||
} | ||
res.send({ version: version }); | ||
return next(); | ||
}); | ||
}; | ||
var Version = (function() { | ||
function Version(ledger) { | ||
this.ledger = ledger; | ||
} | ||
Version.prototype.handle = function(req, res, next) { | ||
this.ledger.version(function(err, version) { | ||
if (err) { | ||
return res.send(err); | ||
} | ||
res.send({ version: version }); | ||
return next(); | ||
}); | ||
}; | ||
return Version; | ||
})(); | ||
return Version; | ||
})(); | ||
exports.Version = Version; | ||
})(); | ||
module.exports.Version = Version; |
@@ -1,78 +0,75 @@ | ||
/*global exports, require, console */ | ||
(function () { | ||
var _ = require('lodash'), | ||
restify = require('restify'), | ||
Ledger = require('ledger-cli').Ledger, | ||
Version = require('./handlers/version').Version, | ||
Balance = require('./handlers/balance').Balance, | ||
Register = require('./handlers/register').Register; | ||
var LedgerRest = (function() { | ||
var defaultConfig = { | ||
name: 'ledger-rest', | ||
debug: false | ||
}; | ||
function LedgerRest(options) { | ||
this.options = _.defaults({}, options, defaultConfig); | ||
var _ = require('lodash'), | ||
restify = require('restify'), | ||
Ledger = require('ledger-cli').Ledger, | ||
Version = require('./handlers/version').Version, | ||
Balance = require('./handlers/balance').Balance, | ||
Register = require('./handlers/register').Register; | ||
this.ledger = new Ledger(this.options); | ||
this.createServer(this.options); | ||
this.configureRouting(); | ||
} | ||
var LedgerRest = (function() { | ||
var defaultConfig = { | ||
name: 'ledger-rest', | ||
debug: false | ||
}; | ||
function LedgerRest(options) { | ||
this.options = _.defaults({}, options, defaultConfig); | ||
LedgerRest.prototype.createServer = function(config) { | ||
this.server = restify.createServer({ | ||
name: config.name | ||
}); | ||
this.server.use([ | ||
restify.acceptParser(this.server.acceptable), | ||
restify.gzipResponse() | ||
]); | ||
}; | ||
this.ledger = new Ledger(this.options); | ||
LedgerRest.prototype.listen = function(port, callback) { | ||
this.server.listen(port, function() { | ||
this.log('%s listening at %s', this.server.name, this.server.url); | ||
if (callback) { | ||
callback(); | ||
} | ||
}.bind(this)); | ||
}; | ||
this.createServer(this.options); | ||
this.configureRouting(); | ||
} | ||
LedgerRest.prototype.createServer = function(config) { | ||
this.server = restify.createServer({ | ||
name: config.name | ||
}); | ||
LedgerRest.prototype.close = function(callback) { | ||
this.log('%s is closing...', this.server.name); | ||
this.server.use([ | ||
restify.acceptParser(this.server.acceptable), | ||
restify.gzipResponse() | ||
]); | ||
}; | ||
LedgerRest.prototype.listen = function(port, callback) { | ||
this.server.listen(port, function() { | ||
this.log('%s listening at %s', this.server.name, this.server.url); | ||
this.server.close(function() { | ||
this.log('%s has closed', this.server.name); | ||
if (callback) { | ||
callback(); | ||
} | ||
}.bind(this)); | ||
}; | ||
if (callback) { | ||
callback(); | ||
} | ||
}.bind(this)); | ||
}; | ||
LedgerRest.prototype.close = function(callback) { | ||
this.log('%s is closing...', this.server.name); | ||
LedgerRest.prototype.configureRouting = function() { | ||
var version = new Version(this.ledger), | ||
balance = new Balance(this.ledger), | ||
register = new Register(this.ledger); | ||
this.server.get('/version', version.handle.bind(version)); | ||
this.server.get('/balance', balance.handle.bind(balance)); | ||
this.server.get('/register', register.handle.bind(register)); | ||
this.server.get('/register/:account', register.handle.bind(register)); | ||
}; | ||
LedgerRest.prototype.log = function() { | ||
if (this.options.debug) { | ||
console.log.apply(console, arguments); | ||
this.server.close(function() { | ||
this.log('%s has closed', this.server.name); | ||
if (callback) { | ||
callback(); | ||
} | ||
}; | ||
}.bind(this)); | ||
}; | ||
LedgerRest.prototype.configureRouting = function() { | ||
var version = new Version(this.ledger), | ||
balance = new Balance(this.ledger), | ||
register = new Register(this.ledger); | ||
return LedgerRest; | ||
})(); | ||
this.server.get('/version', version.handle.bind(version)); | ||
this.server.get('/balance', balance.handle.bind(balance)); | ||
this.server.get('/register', register.handle.bind(register)); | ||
this.server.get('/register/:account', register.handle.bind(register)); | ||
}; | ||
LedgerRest.prototype.log = function() { | ||
if (this.options.debug) { | ||
console.log.apply(console, arguments); | ||
} | ||
}; | ||
return LedgerRest; | ||
})(); | ||
exports.LedgerRest = LedgerRest; | ||
})(); | ||
module.exports.LedgerRest = LedgerRest; |
@@ -1,12 +0,9 @@ | ||
/*global exports */ | ||
(function () { | ||
var setLastModifiedHeader = function(handler, date) { | ||
return function(req, res, next) { | ||
res.header('Last-Modified', date); | ||
var setLastModifiedHeader = function(handler, date) { | ||
return function(req, res, next) { | ||
res.header('Last-Modified', date); | ||
handler.handle(req, res, next); | ||
}; | ||
handler.handle(req, res, next); | ||
}; | ||
exports.setLastModifiedHeader = setLastModifiedHeader; | ||
})(); | ||
}; | ||
module.exports.setLastModifiedHeader = setLastModifiedHeader; |
{ | ||
"name": "ledger-rest", | ||
"version": "0.0.8", | ||
"version": "0.1.0", | ||
"description": "REST web service API to access ledger cli data.", | ||
@@ -30,14 +30,16 @@ "repository": { | ||
"devDependencies": { | ||
"chai": "~1.9.0", | ||
"grunt": "~0.4.2", | ||
"grunt-contrib-jshint": "~0.3.0", | ||
"grunt-contrib-watch": "~0.3.1", | ||
"jasmine-node": "~1.9.1", | ||
"grunt-jasmine-runner": "~0.6.0" | ||
"grunt-contrib-jshint": "~0.8.0", | ||
"grunt-contrib-watch": "~0.5.3", | ||
"grunt-mocha-test": "~0.9.0", | ||
"mocha": "~1.17.1" | ||
}, | ||
"dependencies": { | ||
"JSONStream": "~0.6.4", | ||
"ledger-cli": "0.0.8", | ||
"restify": "~2.6.0", | ||
"lodash": "~1.3.1" | ||
} | ||
"JSONStream": "~0.8.0", | ||
"ledger-cli": "0.1.1", | ||
"lodash": "~2.4.1", | ||
"restify": "~2.6.1" | ||
}, | ||
"readmeFilename": "README.md" | ||
} |
@@ -26,11 +26,14 @@ # ledger-rest | ||
Use the `LedgerRest` class to create a RESTful server. | ||
Use the `LedgerRest` class to create a new RESTful server and start listening on a given port. | ||
LedgerRest = require('ledger-rest').LedgerRest; | ||
var LedgerRest = require('ledger-rest').LedgerRest; | ||
var server = new LedgerRest({ file: 'path/to/ledger/journal/file.dat' }); | ||
server.listen(3000); | ||
Or use the command line runner to start a server listening on the given port and serving a single Ledger `.dat` file. | ||
npm install ledger-rest -g | ||
ledger-rest -p <port> -f path/to/ledger/journal/file.dat |
@@ -1,2 +0,4 @@ | ||
var restify = require('restify'), | ||
var chai = require('chai'), | ||
expect = chai.expect, | ||
restify = require('restify'), | ||
LedgerRest = require('../lib/ledger-rest').LedgerRest; | ||
@@ -32,3 +34,3 @@ | ||
startServer(); | ||
createClient(); | ||
createClient(); | ||
}); | ||
@@ -55,14 +57,14 @@ | ||
it("should return balance for two accounts", function() { | ||
expect(balances.length).toBe(2); | ||
it('should return balance for two accounts', function() { | ||
expect(balances.length).to.equal(2); | ||
}); | ||
it("should parse first balance", function() { | ||
expect(balances[0]).toEqual({ | ||
total : { | ||
currency : '£', | ||
amount : 1000, | ||
formatted : '£1,000.00' | ||
it('should parse first balance', function() { | ||
expect(balances[0]).to.eql({ | ||
total: { | ||
currency : '£', | ||
amount : 1000, | ||
formatted : '£1,000.00' | ||
}, | ||
account: { | ||
account: { | ||
fullname: 'Assets:Checking', | ||
@@ -75,14 +77,14 @@ shortname: 'Assets:Checking', | ||
it("should parse second balance", function() { | ||
expect(balances[1]).toEqual({ | ||
total : { | ||
currency : '£', | ||
amount : -1000, | ||
formatted : '£-1,000.00' | ||
it('should parse second balance', function() { | ||
expect(balances[1]).to.eql({ | ||
total: { | ||
currency : '£', | ||
amount : -1000, | ||
formatted : '£-1,000.00' | ||
}, | ||
account: { | ||
fullname: 'Income:Salary', | ||
account: { | ||
fullname: 'Income:Salary', | ||
shortname: 'Income:Salary', | ||
depth: 2, | ||
} | ||
} | ||
}); | ||
@@ -89,0 +91,0 @@ }); |
@@ -1,2 +0,4 @@ | ||
var restify = require('restify'), | ||
var chai = require('chai'), | ||
expect = chai.expect, | ||
restify = require('restify'), | ||
LedgerRest = require('../lib/ledger-rest').LedgerRest; | ||
@@ -32,3 +34,3 @@ | ||
startServer(); | ||
createClient(); | ||
createClient(); | ||
}); | ||
@@ -55,6 +57,6 @@ | ||
it("should return register entries", function() { | ||
expect(entries.length).toBe(11); | ||
it('should return register entries', function() { | ||
expect(entries.length).to.equal(11); | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
38
13935
6
324
+ AddedJSONStream@0.8.4(transitive)
+ Addedcore-util-is@1.0.3(transitive)
+ Addedcsv-streamify@0.9.1(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedisarray@0.0.1(transitive)
+ Addedledger-cli@0.1.1(transitive)
+ Addedlodash@2.4.2(transitive)
+ Addedreadable-stream@1.1.14(transitive)
+ Addedstring_decoder@0.10.31(transitive)
+ Addedthrough@2.3.8(transitive)
- RemovedJSONStream@0.6.4(transitive)
- Removedcsv@0.2.9(transitive)
- Removedledger-cli@0.0.8(transitive)
- Removedlodash@1.0.21.3.1(transitive)
- Removedthrough@2.2.7(transitive)
UpdatedJSONStream@~0.8.0
Updatedledger-cli@0.1.1
Updatedlodash@~2.4.1
Updatedrestify@~2.6.1