Skip to content

Commit a130ffa

Browse files
authored
Merge pull request #226 from os2display/feature/2533_colibo_feed_type
Colibo feed type
2 parents 6b6e07a + 779a9fa commit a130ffa

26 files changed

+792
-199
lines changed

.env

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ REDIS_CACHE_DSN=redis://redis:6379/0
9393
###< redis ###
9494

9595
###> Calendar Api Feed Source ###
96-
# See docs/calendar-api-feed.md for variable explainations.
96+
# See docs/feed/calendar-api-feed.md for variable explainations.
9797
CALENDAR_API_FEED_SOURCE_LOCATION_ENDPOINT=
9898
CALENDAR_API_FEED_SOURCE_RESOURCE_ENDPOINT=
9999
CALENDAR_API_FEED_SOURCE_EVENT_ENDPOINT=

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
- [#226](https://github.com/os2display/display-api-service/pull/226)
8+
- Added Colibo feed type.
9+
710
## [2.4.0] - 2025-03-31
811

912
- [#238](https://github.com/os2display/display-api-service/pull/238)

composer.json

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"rlanvin/php-rrule": "^2.2",
2828
"symfony/asset": "~6.4.0",
2929
"symfony/console": "~6.4.0",
30+
"symfony/dom-crawler": "~6.4.0",
3031
"symfony/dotenv": "~6.4.0",
3132
"symfony/expression-language": "~6.4.0",
3233
"symfony/flex": "^2.0",

composer.lock

+135-135
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
File renamed without changes.

docs/feed/feed-overview.md

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Feed Overview
2+
3+
"Feeds" in OS2display are external data sources that can provide up-to-data to slides. The idea is that if you can set
4+
up slide based on a feed and publish it. The Screen Client will then fetch new data from the feed whenever the Slide is
5+
shown on screen.
6+
7+
The simplest example is a classic RSS news feed. You can set up a slide based on the RSS slide template, configure the
8+
RSS source URL, and whenever the slide is on screen it will show the latest entries from the RSS feed.
9+
10+
This means that administrators can set up slides and playlists that stays up to date automatically.
11+
12+
## Architecture
13+
14+
The "Feed" architecture is designed to enable both generic and custom feed types. To enable this all feed based screen
15+
templates are designed to support a given "feed output model". These are normalized data sets from a given feed type.
16+
17+
Each feed implementation defines which output model it supports. Thereby multiple feed implementations can support the
18+
same output model. This is done to enable decoupling of the screen templates from the feed implementation.
19+
20+
For example:
21+
22+
* If you have a news source that is not a RSS feed you can implement a "FeedSource" that fetches data from your source
23+
then normalizes the data and outputs it as the RSS output model. When setting up RSS slides this feed source can then
24+
be selected as the source for the slide.
25+
* OS2display has calendar templates that can show bookings or meetings. To show data from your specific calendar or
26+
booking system you can implement a "FeedSource" that fetches booking data from your source and normalizes it to match
27+
the calendar output model.

psalm-baseline.xml

-27
Original file line numberDiff line numberDiff line change
@@ -285,33 +285,6 @@
285285
<code><![CDATA[null !== $user]]></code>
286286
</RedundantConditionGivenDocblockType>
287287
</file>
288-
<file src="src/Feed/EventDatabaseApiFeedType.php">
289-
<MissingClosureParamType>
290-
<code><![CDATA[$organizer]]></code>
291-
<code><![CDATA[$place]]></code>
292-
<code><![CDATA[$tag]]></code>
293-
</MissingClosureParamType>
294-
<PossiblyNullArgument>
295-
<code><![CDATA[$organizers]]></code>
296-
<code><![CDATA[$places]]></code>
297-
<code><![CDATA[$tags]]></code>
298-
</PossiblyNullArgument>
299-
<PossiblyNullReference>
300-
<code><![CDATA[getId]]></code>
301-
<code><![CDATA[setPublishedTo]]></code>
302-
</PossiblyNullReference>
303-
</file>
304-
<file src="src/Feed/KobaFeedType.php">
305-
<RiskyTruthyFalsyComparison>
306-
<code><![CDATA[$filterList]]></code>
307-
<code><![CDATA[$rewriteBookedTitles]]></code>
308-
</RiskyTruthyFalsyComparison>
309-
</file>
310-
<file src="src/Feed/SparkleIOFeedType.php">
311-
<UndefinedInterfaceMethod>
312-
<code><![CDATA[getItem]]></code>
313-
</UndefinedInterfaceMethod>
314-
</file>
315288
<file src="src/Filter/CampaignFilter.php">
316289
<MissingParamType>
317290
<code><![CDATA[$value]]></code>

0 commit comments

Comments
 (0)