<?php /** * This file is part of RSS-Bridge, a PHP project capable of generating RSS and * Atom feeds for websites that don't have one. * * For the full license information, please view the UNLICENSE file distributed * with this source code. * * @package Core * @license http://unlicense.org/ UNLICENSE * @link https://github.com/rss-bridge/rss-bridge */ /** * The bridge interface * * A bridge is a class that is responsible for collecting and transforming data * from one hosting provider into an internal representation of feed data, that * can later be transformed into different feed formats (see {@see FormatInterface}). * * For this purpose, all bridges need to perform three common operations: * * 1. Collect data from a remote site. * 2. Extract the required contents. * 3. Add the contents to the internal data structure. * * Bridges can optionally specify parameters to customize bridge behavior based * on user input. For example, a user could specify how many items to return in * the feed and where to get them. * * In order to present a bridge on the home page, and for the purpose of bridge * specific behaviour, additional information must be provided by the bridge: * * * **Name** * The name of the bridge that can be displayed to users. * * * **Description** * A brief description for the bridge that can be displayed to users. * * * **URI** * A link to the hosting provider. * * * **Maintainer** * The GitHub username of the bridge maintainer * * * **Parameters** * A list of parameters for customization * * * **Icon** * A link to the favicon of the hosting provider * * * **Cache timeout** * The default cache timeout for the bridge. */ interface BridgeInterface { /** * Collects data from the site */ public function collectData(); /** * Get the user's supplied configuration for the bridge */ public function getConfiguration(); /** * Returns the value for the selected configuration * * @param string $input The option name * @return mixed|null The option value or null if the input is not defined */ public function getOption($name); /** * Returns the description * * @return string Description */ public function getDescription(); /** * Returns an array of collected items * * @return array Associative array of items */ public function getItems(); /** * Returns the bridge maintainer * * @return string Bridge maintainer */ public function getMaintainer(); /** * Returns the bridge name * * @return string Bridge name */ public function getName(); /** * Returns the bridge icon * * @return string Bridge icon */ public function getIcon(); /** * Returns the bridge parameters * * @return array Bridge parameters */ public function getParameters(); /** * Returns the bridge URI * * @return string Bridge URI */ public function getURI(); /** * Returns the cache timeout * * @return int Cache timeout */ public function getCacheTimeout(); /** * Returns parameters from given URL or null if URL is not applicable * * @param string $url URL to extract parameters from * @return array|null List of bridge parameters or null if detection failed. */ public function detectParameters($url); }