Skip to content

Latest commit

 

History

History

apiaggregator

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

API Aggregator Bridge

Bridges implementation that can generically aggregate numerical values for any given amount of APIs.

Supported Aggregation Methods:

  • Mode
  • Median
  • Mean

Setup Instructions

Local Install

Make sure Golang is installed.

Build (in the root of the bridges repository):

GO111MODULE=on go build examples/apiaggregator/main -o apiaggregator

Then run the bridge:

./apiaggregator

Docker

To run the container:

docker run -it -p 8080:8080 linkpool/apiaggregator-bridge:latest

AWS Lambda

zip api_aggregator.zip ./apiaggregator

Upload the the zip file into AWS and then use apiaggregator as the handler.

Important: Set the LAMBDA environment variable to true in AWS for the adaptor to be compatible with Lambda.

Solidity Usage

Example: https://github.com/linkpoolio/example-chainlinks/blob/master/contracts/APIAggregatorConsumer.sol

Testing

To call the API, you need to send a POST request to http://localhost:<port>/ with the request body being of the ChainLink RunResult type.

For example:

curl -X POST http://localhost:8080/ \
-H 'Content-Type: application/json' \
-d @- << EOF
{
	"jobId": "1234",
	"data": {
		"api": ["https://www.bitstamp.net/api/v2/ticker/btcusd/", "https://api.pro.coinbase.com/products/btc-usd/ticker"],
		"paths": ["$.last", "$.price"],
		"aggregationType": "median"
	}
}
EOF

Should return something similar to:

{
    "jobRunId": "1234",
    "status": "completed",
    "error": null,
    "pending": false,
    "data": {
        "EUR": 141.65,
        "JPY": 17864.71,
        "USD": 160.11,
        "aggregationType": "median",
        "api": [
            "https://www.bitstamp.net/api/v2/ticker/btcusd/",
            "https://api.pro.coinbase.com/products/btc-usd/ticker"
        ],
        "paths": [
            "$.last",
            "$.price"
        ]
    }
}