nicholas-ramsey / ordway-tap

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ordway-tap

This is a Singer tap that produces JSON-formatted data following the Singer spec.

This tap:

  • Pulls raw data from OrdwayLabs
  • Extracts the following resources:
    • billing_runs
    • billing_schedules
    • charges
    • chart_of_accounts
    • contacts
    • coupons
    • credits
    • customer_notes
    • customers
    • invoices
    • orders
    • payment_methods
    • payment_runs
    • payments
    • plans
    • products
    • refunds
    • revenue_rules
    • revenue_schedules
    • statements
    • subscriptions
    • usages
    • webhooks
  • Outputs the schema for each resource
  • Incrementally pulls data based on the input state

Installation

Requirements

  • Python 3.6+
  • mkvirtualenv
  • pip

Steps

Run following commands on terminal from the project directory

python3 -m venv ~/.virtualenvs/ordway-tap
source ~/.virtualenvs/ordway-tap/bin/activate
pip install -e .

To Run

$ source ~/.virtualenvs/ordway-tap/bin/activate

$ ordway-tap -c config.json --catalog catalog.json -s state.json

You can generate the catalog.json by following command:

$ ordway-tap -c config.json --discover > catalog.json

The sample config JSON is format is given below:

{
  "api_credentials": {
    "x_company": "Rocky",
    "x_user_email": "me@example.com",
    "x_user_token": "123usertoken",
    "x_api_key": "123secret"
  },
  "start_date": "2019-12-01"
}

The start_date indicates the data at which the tap should start syncing data when no bookmark exists in the state for that particular stream.

The following configuration keys are optional:

  • staging - Whether or not to use the staging environment (staging.ordwaylabs.com)
  • api_version - Which Ordwaylabs API version to use (e.g. "v1")
  • api_url - An alternative URL to which the API requests will be made (e.g. "https://localhost:3000/v1/"). When specified, it will take precendence over staging and api_version.

The State JSON should be passed by user. The Tap will be printing the STATE message, the last state message should send when running next time.

Sample JSON:

{
    "currently_syncing": "credits",
    "bookmarks": {
      "credits": {
        "updated_date": "2020-11-14T05:59:48.842000Z"
      }
    }
}

Testing

  1. Install the dev extra requirements
pip install .[dev]
  1. Execute tox with the default environments: py36, py37, py38, and type (for static type checking via mypy)
tox

Additionally, you can generate a Coverage report by using the coverage environment:

tox -e coverage

For more information on tox, please refer to its documentation.

Testing with singer-check-tap

singer-check-tap is a tool for testing whether or not a tap adheres to the Singer specification. For more information, please review its documentation.

  1. Install the singer-tools package
pip install singer-tools
  1. Execute singer-check-tap
singer-check-tap --tap ordway-tap --config config.json

In this mode, singer-check-tap will execute the tap itself, run it in discover mode to generate a catalog, perform a stateless run and a stateful run, and validate the tap's output.

If you need to test with a modified catalog, you can do so by piping the tap's output directly into singer-check-tap like so:

ordway-tap --config config.json --catalog catalog.json | singer-check-tap

Copyright © 2020 OrdwayLabs

About

License:GNU Affero General Public License v3.0


Languages

Language:Python 100.0%