This is an example that demonstrates how to build a Koop Provider. You can clone this project, and use it to start a new provider. This sample can run a local server, deploy to AWS Lambda or Docker for testing and operations. Once the provider is published to NPM, then it can be used with other Koop providers and outputs in a larger project.
The data source in this example is the TriMet Bus API. You can see this provider in action here.
Full documentation is provided here.
config/default.json
with any configurable parameterssrc/index.js
and change provider.name
to a unique namesrc/model.js
and implement getData
to call your provider and return GeoJSONnpm install
npm start
test/
File | Description | |
---|---|---|
src/index.js |
Mandatory | Configures provider for usage by Koop |
src/model.js |
Mandatory | Translates remote API to GeoJSON |
src/routes.js |
Optional | Specifies additional routes to be handled by this provider |
src/controller.js |
Optional | Handles additional routes specified in routes.js |
test/model-test.js |
Optional | tests the getData function on the model |
test/fixtures/input.json |
Optional | a sample of the raw input from the 3rd party API |
config/default.json |
Optional | used for advanced configuration, usually API keys. |
Run server:
npm install
npm start
Example API Query:
curl localhost:8080/example/FeatureServer/0/query?returnCountOnly=true
Tests:
npm test
During development you can output error callstack with
NODE_ENV=test npm start
npm init
and update the fields
koop-provider-foo
npm publish