Skip to content

koopjs/koop-provider-example

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Koop Provider Example

Build Status Greenkeeper badge

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.

Getting started

  1. Open config/default.json with any configurable parameters
  2. Open src/index.js and change provider.name to a unique name
  3. Open src/model.js and implement getData to call your provider and return GeoJSON
  4. Install dependencies npm install
  5. Run a local dev server npm start
  6. Add tests to test/

Koop provider file structure

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.

Test it out

Run server:

  • npm install
  • npm start

Example API Query:

  • curl localhost:8080/example/FeatureServer/0/query?returnCountOnly=true

Tests:

  • npm test

Development output callstack logs

During development you can output error callstack with

  • NODE_ENV=test npm start

Publish to npm

  • run npm init and update the fields
    • Choose a name like koop-provider-foo
  • run npm publish

Releases

No releases published

Packages

No packages published