Simple, Sessionless api-token authentication for deployd with Ganalytics API metrics support
$ npm install dpd-acl-roles-permissions dpd-api-token --save
app.js:
require('dpd-api-token')( require('deployd/lib/router'), 'users','apikey') // <----- add this
try{
var deployd = require('deployd')
var dpd = deployd({port:3000});
dpd.listen();
}catch(e){
console.error(err.toString()) // becomes exception in analytics
}
test on the commandline:
$ curl -X GET "http://localhost:1882/foo"
{"message":"no permission / not loggedin (session expired)", "status":401, "statusCode":401}
$ curl -X GET -H 'X-API-VERSION: 1.0' -H 'X-API-TOKEN: foo' "http://localhost:1882/foo"
[]
NOTE: Follow dpd-acl-roles-permissions tutorial. Once you got permissions going, come back here, and specify your resource-usercollection above ('users') and its property which holds the apikey ('apikey').
- both
X-API-VERSION
andX-API-TOKEN
should be specified (version is only used for analytics ) { req.user
orctx.req.user
is populated with the user when anX-API-TOKEN
-header matchesapikey
of ausers
-collection.
make sure you set these environment variables:
- export GA_TOKEN=XX-XXXXXX
- export NODE_ENV=production
- export APINAME=myapi
- export GA_BUFFERTIME=5000
Basically each request is buffered, and sent as google analytics events every GA_BUFFERTIME
milliseconds.
You can view realtime requests at Realtime > Events
, or create dashboards to sort/display the events.
NOTE: you can add events to analytics, anywhere from within deployd :
process.server.ga.event("action name", "label/value") // buffered event (adviced)
process.server.ga.timing("category", "actionname", 12) // buffered event (adviced)
console.error("something went wrong") // sends exception
process.server.ga.ua // universal analytics object for unbuffered use
}
for more info on ua
usage see docs
NOTE: this module also tracks the processing time of each request (see 'Server Response Time' in google analytics pageviews)