koop-provider
Koop provider toolkit
Use this to create a provider module for Koop.
Install
npm install -S koop-provider
Usage
Provides methods for creating koop providers, models, and controllers.
provider(options)
To create a koop provider:
var pkg = var provider = var myProvider = moduleexports = myProvider
A type of 'provider'
is automatically set (cannot be overridden).
Required settings:
name
: provider nameversion
: provider version (from package.json)model
: provider model methodcontroller
: provider controller methodroutes
: provider routes module
Optional settings:
hosts
: boolean flag indicating whether or not this provider supports multiple instances (e.g. socrata data can be hosted in many socrata instances, github gist data is always on gist.github.com)
provider.model(koop)
To create a model:
var provider = /** * creates new model with access to koop instance * * @param */ { var model = provider var TABLE_NAME = 'my_table' modelconfig = koopconfig // model methods, e.g. /** * Method for retrieving data by ID. * * @param * @param */ model { var id = optionsid var query = optionsquery || {} koopCache } return model} moduleexports = myModel
Methods inherited from base model:
log
files
cacheDir
exportToFormat
exportLarge
exportFile
finishExport
parseSpatialReference
tileGet
plugin
generateThumbnail
getImageServiceTile
getServiceTile
getGeoHash
saveFile
getCount
getExtent
provider.controller()
To create a controller:
var provider = /** * creates new controller * * @param */ { var ctrl = provider // controller methods, e.g. /** * renders index view * * @param * @param */ ctrl { res } return ctrl} moduleexports = myController
Methods inherited from base controller:
errorResponse
processFeatureServer
Routes
The routes file in a koop provider maps http verbs and routes to controller methods.
Example from koop-gist
:
moduleexports = 'get /gist': 'index' 'get /gist/rate_limit': 'rate_limit' 'get /gist/raw/:id': 'find' 'get /gist/raw/:id/:layer': 'find' 'get /gist/:id': 'find' 'get /gist/:id.:format': 'find' 'get /gist/:id/preview': 'preview' 'get /gist/:id/FeatureServer': 'featureservice' 'get /gist/:id/FeatureServer/:layer': 'featureservice' 'get /gist/:id/FeatureServer/:layer/:method': 'featureservice'
Test
koop-provider
uses tape for testing.
npm test