Skip to content

runnerty/executor-http

Repository files navigation

Smart Processes Management

NPM version Downloads code style: prettier

Executor for Runnerty: HTTP

Installation:

Through NPM

npm i @runnerty/executor-http

You can also add modules to your project with runnerty

npx runnerty add @runnerty/executor-http

This command installs the module in your project, adds example configuration in your config.json and creates an example plan of use.

If you have installed runnerty globally you can include the module with this command:

runnerty add @runnerty/executor-http

Configuration sample:

Add in config.json:

{
  "id": "http_default",
  "type": "@runnerty-executor-http"
}

Plan sample:

Add in plan.json:

{
  "id": "http_default",
  "headers": { "User-Agent": "runnerty" },
  "method": "get",
  "url": "https://api.github.com/search/repositories",
  "params": { "q": "runnerty" },
  "responseType": "json"
}
{
  "id": "http_default",
  "headers": { "User-Agent": "runnerty" },
  "url": "http://www.sample.com/form",
  "method": "post",
  "data": {
    "key1": "value1",
    "key2": "value2"
  },
  "responseType": "json",
  "withCredentials": true
}
{
  "id": "http_default",
  "headers": { "User-Agent": "runnerty" },
  "url": "http://www.sample.com/uploadfile",
  "method": "post",
  "files": [
    { "name": "fileOne", "path": "/var/myfile.txt" },
    { "name": "fileTwo", "path": "/var/www/runnerty.jpg" }
  ],
  "responseType": "json",
  "returnHeaderDataOutput": true
}
{
  "id": "http_default",
  "headers": { "User-Agent": "runnerty", "Content-Type": "application/xml" },
  "method": "post",
  "url": "https://sample.com/api-sample",
  "auth": {
    "username": "@GV(MY_USER_AUTH)",
    "password": "@GV(MY_PASS_AUTH)"
  },
  "data": "@GV(SAMPLE_BODY)"
}

Pagination:

It is possible to make calls to APIs that return JSON data that requires paging. The parameters available for paging are.

Parameter Description
start page from which the query is initiated, by default 1
limit maximum elements per page
pages total pages to consult
total total items for automatic page calculation
total_from_header header from which to get the total of items for automatic page calculation
total_from_response params path of the response data from which to get the total of items for automatic page calculation
next_page_url_from_response params path of the response data from which to get the url for the next page
token.query_param_name name of parameter to send in url query with token of next page
token.data_param_name name of the parameter to be sent in the body with the token of next page
token.next_token_from_response params path of the response data from which to get the next page token
token.next_token_from_header params path of the header data from which to get the next page token

Some paginations examples:

{
  "id": "http_default",
  "method": "get",
  "url": "https://endpoint.sample.com/items",
  "pagination": {
    "limit": "2000",
    "total_from_header": "x-total-items"
  },
  "responseType": "json",
  "responseToFile": "/var/www/data/sample.json",
  "noReturnDataOutput": true
}
{
  "id": "http_default",
  "method": "get",
  "url": "https://endpoint.sample.com/items",
  "pagination": {
    "limit": "2000",
    "next_page_url_from_response": "paging.nextPage"
  },
  "responseType": "json",
  "responseToFile": "/var/www/data/sample.json",
  "noReturnDataOutput": true
}
{
  "id": "http_default",
  "method": "get",
  "url": "https://endpoint.sample.com/items",
  "pagination": {
    "limit": "2000",
    "token": {
      "next_token_from_response": "paging.continuationToken",
      "query_param_name": "nextPageToken"
    }
  },
  "responseType": "json",
  "responseToFile": "/var/www/data/sample.json",
  "noReturnDataOutput": true
}

Output (Process values):

  • PROCESS_EXEC_DATA_OUTPUT: Response output data. It is possible to return the header response in dataoutput by activating the returnHeaderDataOutput (boolean) parameter
  • EXTRA_DATA: If the response is a JSON it is possible to work with the parsed values of the response using the "responseType": "json" parameter. If we receive for example:
{
  "planet": {
    "name": "Mars",
    "satellites": [
      {
        "name": "phobos"
      },
      {
        "name": "deimos"
      }
    ]
  }
}

It is possible to access the values by (GETVALUE function): PROCESS_EXEC_PLANET_NAME: "Mars", PROCESS_EXEC_PLANET_NAME_SATELLITES_1_NAME:"phobos"

  • PROCESS_EXEC_ERR_OUTPUT: Error output message.

Other considerations

If the result is very large, you should consider using the "noReturnDataOutput" (boolean) property to prevent a large amount of data from entering memory and being interpreted by Runnerty, which could cause performance problems.

{
  "id": "http_default",
  "headers": { "User-Agent": "runnerty" },
  "method": "get",
  "url": "http://host.com/big_file.zip",
  "responseToFile": "/etc/runnerty/big_file.zip",
  "noReturnDataOutput": true
}