rss-bridge/docs/06_Helper_functions/index.md
Bocki f0e5ef0fc5
[Various] getKey replacements and docu (#3283)
* [Various] getKey replacements and docu

* more bridges and fix to the abstract

* linting

* revert bandcampdaily. doing more than i thought
2023-03-06 20:01:51 +01:00

7.4 KiB

getInput

The getInput function is used to receive a value for a parameter, specified in const PARAMETERS

$this->getInput('your input name here');

getInput will either return the value for your parameter or null if the parameter is unknown or not specified.

getKey

The getKey function is used to receive the key name to a selected list value given the name of the list, specified in const PARAMETERS Is able to work with multidimensional list arrays.

// Given a multidimensional array like this
const PARAMETERS = [[
        'country' => [
            'name' => 'Country',
            'type' => 'list',
            'values' => [
                'North America' => [
                    'Mexico' => 'mx',
                    'United States' => 'us'
                ],
                'South America' => [
                    'Uruguay' => 'uy',
                    'Venezuela' => 've'
                ],
            ]
        ]
]],
// Provide the list name to the function
$this->getKey('country');
// if the selected value was "ve", this function will return "Venezuela"

getKey will either return the key name for your parameter or null if the parameter is unknown or not specified.

getContents

The getContents function uses cURL to acquire data from the specified URI while respecting the various settings defined at a global level by RSS-Bridge (i.e., proxy host, user agent, etc.). This function accepts a few parameters:

Parameter Type Optional Description
url string required The URL of the contents to acquire
header array optional An array of HTTP header fields to set, in the format array('Content-type: text/plain', 'Content-length: 100'), see CURLOPT_HTTPHEADER
opts array optional An array of cURL options in the format array(CURLOPT_POST => 1);, see curl_setopt for a complete list of options.
returnFull boolean optional Specifies whether to return the response body from cURL (default) or the response body, code, headers, etc.
$header = array('Content-type:text/plain', 'Content-length: 100');
$opts = array(CURLOPT_POST => 1);
$html = getContents($url, $header, $opts);

getSimpleHTMLDOM

The getSimpleHTMLDOM function is a wrapper for the simple_html_dom file_get_html function in order to provide context by design.

$html = getSimpleHTMLDOM('your URI');

getSimpleHTMLDOMCached

The getSimpleHTMLDOMCached function does the same as the getSimpleHTMLDOM function, except that the content received for the given URI is stored in a cache and loaded from cache on the next request if the specified cache duration was not reached. Use this function for data that is very unlikely to change between consecutive requests to RSS-Bridge. This function allows to specify the cache duration with the second parameter (default is 24 hours / 86400 seconds).

$html = getSimpleHTMLDOMCached('your URI', 86400); // Duration 24h

Notice: Due to the current implementation a value greater than 86400 seconds (24 hours) will not work as the cache is purged every 24 hours automatically.

returnError

Notice: Whenever possible make use of returnClientError or returnServerError

The returnError function aborts execution of the current bridge and returns the given error message with the provided error number:

returnError('Your error message', 404);

Check the list of error codes for applicable error numbers.

returnClientError

The returnClientError function aborts execution of the current bridge and returns the given error message with error code 400:

returnClientError('Your error message')

Use this function when the user provided invalid parameter or a required parameter is missing.

returnServerError

The returnServerError function aborts execution of the current bridge and returns the given error message with error code 500:

returnServerError('Your error message')

Use this function when a problem occurs that has nothing to do with the parameters provided by the user. (like: Host service gone missing, empty data received, etc...)

defaultLinkTo

Automatically replaces any relative URL in a given string or DOM object (i.e. the one returned by getSimpleHTMLDOM) with an absolute URL.

defaultLinkTo ( mixed $content, string $server ) : object

Returns a DOM object (even if provided a string).

Remarks

  • Only handles <a> and <img> tags.

Example

$html = '<img src="/blob/master/README.md">';

$html = defaultLinkTo($html, 'https://www.github.com/rss-bridge/rss-bridge'); // Using custom server
$html = defaultLinkTo($html, $this->getURI()); // Using bridge URL

// Output
// <img src="https://www.github.com/rss-bridge/rss-bridge/blob/master/README.md">

backgroundToImg

Replaces tags with styles of backgroud-image by <img /> tags.

backgroundToImg(mixed $htmlContent) : object

Returns a DOM object (even if provided a string).

extractFromDelimiters

Extract the first part of a string matching the specified start and end delimiters.

function extractFromDelimiters(string $string, string $start, string $end) : mixed

Returns the extracted string if delimiters were found and false otherwise.

Example

$string = '<div>Post author: John Doe</div>';
$start = 'author: ';
$end = '<';
$extracted = extractFromDelimiters($string, $start, $end);

// Output
// 'John Doe'

stripWithDelimiters

Remove one or more part(s) of a string using a start and end delimiter. It is the inverse of extractFromDelimiters.

function stripWithDelimiters(string $string, string $start, string $end) : string

Returns the cleaned string, even if no delimiters were found.

Example

$string = 'foo<script>superscript()</script>bar';
$start = '<script>';
$end = '</script>';
$cleaned = stripWithDelimiters($string, $start, $end);

// Output
// 'foobar'

stripRecursiveHTMLSection

Remove HTML sections containing one or more sections using the same HTML tag.

function stripRecursiveHTMLSection(string $string, string $tag_name, string $tag_start) : string

Example

$string = 'foo<div class="ads"><div>ads</div>ads</div>bar';
$tag_name = 'div';
$tag_start = '<div class="ads">';
$cleaned = stripRecursiveHTMLSection($string, $tag_name, $tag_start);

// Output
// 'foobar'

markdownToHtml

Converts markdown input to HTML using Parsedown.

function markdownToHtml(string $string) : string

Example

$input = <<<EOD
RELEASE-2.8
 * Share QR code of a token
 * Dark mode improvemnet
 * Fix some layout issues
 * Add shortcut to launch the app with screenshot mode on
 * Translation improvements
EOD;
$html = markdownToHtml($input);

// Output:
// <p>RELEASE-2.8</p>
// <ul>
// <li>Share QR code of a token</li>
// <li>Dark mode improvemnet</li>
// <li>Fix some layout issues</li>
// <li>Add shortcut to launch the app with screenshot mode on</li>
// <li>Translation improvements</li>
// </ul>