Skip to content

Chainlink adaptor framework. Create your own adapters with an easy to use interface.

License

Notifications You must be signed in to change notification settings

crypto-zone/linkpool-bridges

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status codecov Go Report Card

Bridges is a Chainlink adaptor framework, lowering the barrier of entry for anyone to create their own:

  • Bridges CLI application, allowing you to quickly run an adaptor.
  • Create adaptors with an easy to interpret JSON schema.
  • Simple interface to implement your own custom adaptors that can do anything.
  • Supports running in serverless environments such as AWS Lambda & GCP functions.

Install

View the releases page and download the latest version for your operating system, then add it to PATH.

Quick Usage

For the simplest adaptor, run the following:

bridges -b https://s3.linkpool.io/bridges/cryptocompare.json

Once running, the adaptor will be started on port 8080.

Usage

Usage of bridges:
  -b, --bridge string   Filepath/URL of bridge JSON file
  -p, --port int        Server port (default 8080)

With the -b flag, either URLs or relative file paths can be specified, for example:

bridges -b https://s3.linkpool.io/bridges/rapidapi.json

is equal to

bridges -b json/rapidapi.json

Lambda Usage

View the releases page and download the lambda zip. Upload this zip into Lambda and set the handler as bridges.

Then set the following environment variables:

  • LAMBDA=true
  • BRIDGE=<your bridge url>

Examples

JSON:

  • CryptoCompare: Simplest example.
  • AlphaVantage: Uses GET param authentication, param passthrough.
  • RapidAPI: Two adaptors specified, header authentication and param & form passthrough.

Interface implementations:

Implement your own

package main

import (
	"github.com/linkpoolio/bridges/bridge"
)

type MyAdaptor struct{}

func (ma *MyAdaptor) Run(h *bridge.Helper) (interface{}, error) {
	return map[string]string{"hello": "world"}, nil
}

func (ma *MyAdaptor) Opts() *bridge.Opts {
	return &bridge.Opts{
		Name:   "MyAdaptor",
		Lambda: true,
	}
}

func main() {
	bridge.NewServer(&MyAdaptor{}).Start(8080)
}

TODO

  • Increase test coverage
  • Support S3 urls for adaptor fetching
  • Look at the validity of doing a Docker Hub style adaptor repository

Contributing

We welcome all contributors, please raise any issues for any feature request, issue or suggestion you may have.

About

Chainlink adaptor framework. Create your own adapters with an easy to use interface.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%