Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ REDIS_CACHE_DSN=redis://redis:6379/0
###< redis ###

###> Calendar Api Feed Source ###
# See docs/calendar-api-feed.md for variable explainations.
# See docs/feed/calendar-api-feed.md for variable explainations.
CALENDAR_API_FEED_SOURCE_LOCATION_ENDPOINT=
CALENDAR_API_FEED_SOURCE_RESOURCE_ENDPOINT=
CALENDAR_API_FEED_SOURCE_EVENT_ENDPOINT=
Expand Down
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

- [#226](https://github.com/os2display/display-api-service/pull/226)
- Added Colibo feed type.
- [#225](https://github.com/os2display/display-api-service/pull/225)
- Added ADRs.
- [#215](https://github.com/os2display/display-api-service/pull/215)
Expand Down
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"rlanvin/php-rrule": "^2.2",
"symfony/asset": "~6.4.0",
"symfony/console": "~6.4.0",
"symfony/dom-crawler": "~6.4.0",
"symfony/dotenv": "~6.4.0",
"symfony/expression-language": "~6.4.0",
"symfony/flex": "^2.0",
Expand Down
270 changes: 135 additions & 135 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

File renamed without changes.
27 changes: 27 additions & 0 deletions docs/feed/feed-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Feed Overview

"Feeds" in OS2display are external data sources that can provide up-to-data to slides. The idea is that if you can set
up slide based on a feed and publish it. The Screen Client will then fetch new data from the feed whenever the Slide is
shown on screen.

The simplest example is a classic RSS news feed. You can set up a slide based on the RSS slide template, configure the
RSS source URL, and whenever the slide is on screen it will show the latest entries from the RSS feed.

This means that administrators can set up slides and playlists that stays up to date automatically.

## Architecture

The "Feed" architecture is designed to enable both generic and custom feed types. To enable this all feed based screen
templates are designed to support a given "feed output model". These are normalized data sets from a given feed type.

Each feed implementation defines which output model it supports. Thereby multiple feed implementations can support the
same output model. This is done to enable decoupling of the screen templates from the feed implementation.

For example:

* If you have a news source that is not a RSS feed you can implement a "FeedSource" that fetches data from your source
then normalizes the data and outputs it as the RSS output model. When setting up RSS slides this feed source can then
be selected as the source for the slide.
* OS2display has calendar templates that can show bookings or meetings. To show data from your specific calendar or
booking system you can implement a "FeedSource" that fetches booking data from your source and normalizes it to match
the calendar output model.
27 changes: 0 additions & 27 deletions psalm-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -285,33 +285,6 @@
<code><![CDATA[null !== $user]]></code>
</RedundantConditionGivenDocblockType>
</file>
<file src="src/Feed/EventDatabaseApiFeedType.php">
<MissingClosureParamType>
<code><![CDATA[$organizer]]></code>
<code><![CDATA[$place]]></code>
<code><![CDATA[$tag]]></code>
</MissingClosureParamType>
<PossiblyNullArgument>
<code><![CDATA[$organizers]]></code>
<code><![CDATA[$places]]></code>
<code><![CDATA[$tags]]></code>
</PossiblyNullArgument>
<PossiblyNullReference>
<code><![CDATA[getId]]></code>
<code><![CDATA[setPublishedTo]]></code>
</PossiblyNullReference>
</file>
<file src="src/Feed/KobaFeedType.php">
<RiskyTruthyFalsyComparison>
<code><![CDATA[$filterList]]></code>
<code><![CDATA[$rewriteBookedTitles]]></code>
</RiskyTruthyFalsyComparison>
</file>
<file src="src/Feed/SparkleIOFeedType.php">
<UndefinedInterfaceMethod>
<code><![CDATA[getItem]]></code>
</UndefinedInterfaceMethod>
</file>
<file src="src/Filter/CampaignFilter.php">
<MissingParamType>
<code><![CDATA[$value]]></code>
Expand Down
Loading
Loading