A newer version of this documentation is available.

View Latest

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.

      • basicCurlGet

      • Input Data/Mutation

      • Output Data/Logged

      // 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
          }
      }