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.
View the releases page and download the latest version for your operating system, then add it to PATH.
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 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
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>
JSON:
- CryptoCompare: Simplest example.
- AlphaVantage: Uses GET param authentication, param passthrough.
- RapidAPI: Two adaptors specified, header authentication and param & form passthrough.
Interface implementations:
- CryptoCompare: Simplest example.
- API Aggregator: Aggregates multiple endpoints using mean/median/mode.
- Wolfram Alpha: Short answers API, non-JSON, uses string splitting.
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)
}
- Increase test coverage
- Support S3 urls for adaptor fetching
- Look at the validity of doing a Docker Hub style adaptor repository
We welcome all contributors, please raise any issues for any feature request, issue or suggestion you may have.