Function: Basic cURL GET
Goal: Perform a simple cURL GET using an external REST endpoint.
-
This function basicCurlGet communicates with a public REST service.
-
Requires Eventing Storage (or metadata collection) and a "source" collection.
-
Needs a Binding of type URL Alias (as documented in the Scriptlet).
-
Will operate on any mutation of the KEY "make_curl_request::1".
-
The actual cURL request from the Eventing Function will be equivalent to either of the following (but test to make sure the service is live):
curl -q -X GET 'https://api.frankfurter.app/latest' curl -q -X GET 'https://api.ratesapi.io/api/latest'
-
Only logs the REST response JSON payload to the Application log file.
-
For a more complete example using this public REST endpoint (or to make your own service), refer to External REST via cURL GET.
// To run configure the settings for this Function, basicCurlGet, as follows:
//
// Version 7.1+
// "Function Scope"
// *.* (or try bulk.data if non-privileged)
// Version 7.0+
// "Listen to Location"
// bulk.data.source
// "Eventing Storage"
// rr100.eventing.metadata
// Binding(s)
// 1. "binding type", "alias name...", "URL...", "misc.",
// "URL alias", "exchangeRateApi", "https://api.frankfurter.app/", "no auth"
//
// Version 6.X
// "Source Bucket"
// source
// "MetaData Bucket"
// metadata
// Binding(s)
// 1. "binding type", "alias name...", "URL...", "misc.",
// "URL alias", "exchangeRateApi", "https://api.frankfurter.app/", "no auth"
function OnUpdate(doc, meta) {
// You would typically filter to mutations of interest
if (meta.id !== 'make_curl_request::1') return;
try {
// only make a cURL GET request id we see a mutation on the above KEY
var request = { path: "latest" }; // easiest API call could supply YYYY-MM-DD
// perform the cURL request using the URL alias from the settings
var response = curl('GET', exchangeRateApi, request);
if (response.status != 200 && response.status != 302) {
log("cURL GET failed response.status:",response.status)
} else {
log("cURL GET success, response.body:",response.body)
// optional write to a bucket - requires a binding alias in settings
// dst_col[meta.id] = response.body;
}
} catch (e) {
log("cURL request had an exception:",e)
}
}
INPUT: KEY make_curl_request::1
{
"anything": 1
}
2021-07-18T18:13:57.566-07:00 [INFO] "cURL GET success, response.body:"
{
"amount": 1,
"base": "EUR",
"date": "2021-07-16",
"rates": {
"AUD": 1.5907,
"BGN": 1.9558,
"BRL": 6.0146,
"CAD": 1.4856,
"CHF": 1.0853,
"CNY": 7.6373,
"CZK": 25.538,
"DKK": 7.4381,
"GBP": 0.85298,
"HKD": 9.1684,
"HRK": 7.4968,
"HUF": 359.73,
"IDR": 17083,
"ILS": 3.8796,
"INR": 88.03,
"ISK": 145.9,
"JPY": 130.03,
"KRW": 1347.94,
"MXN": 23.459,
"MYR": 4.9681,
"NOK": 10.3878,
"NZD": 1.6836,
"PHP": 59.364,
"PLN": 4.5867,
"RON": 4.9285,
"RUB": 87.52,
"SEK": 10.2428,
"SGD": 1.5993,
"THB": 38.669,
"TRY": 10.0521,
"USD": 1.1802,
"ZAR": 16.984
}
}