Add comments; and add /v1/ rss feeds

This commit is contained in:
Joakim Hellsén 2026-01-29 02:08:36 +01:00
commit 22b95c7d2b
Signed by: Joakim Hellsén
SSH key fingerprint: SHA256:/9h/CsExpFp+PRhsfA0xznFx2CGfTT5R/kpuFfUgEQk

View file

@ -17,6 +17,124 @@ if TYPE_CHECKING:
app_name = "twitch" app_name = "twitch"
# We have /rss/ that is always the latest, and versioned version to not break users regexes.
rss_feeds_latest: list[URLPattern] = [
# /rss/campaigns - RSS feed for latest drop campaigns.
# Example:
# https://ttvdrops.lovinator.space/rss/campaigns/
# http://localhost:8000/rss/campaigns/
path(
"rss/campaigns/",
DropCampaignFeed(),
name="campaign_feed",
),
# /rss/games - RSS feed for latest games.
# Example:
# https://ttvdrops.lovinator.space/rss/games/
# http://localhost:8000/rss/games/
path(
"rss/games/",
GameFeed(),
name="game_feed",
),
# /rss/games/<twitch_id>/campaigns/ - RSS feed for the latest drop campaigns of a specific game.
# Example:
# https://ttvdrops.lovinator.space/rss/games/21779/campaigns/
# http://localhost:8000/rss/games/21779/campaigns/
path(
"rss/games/<str:twitch_id>/campaigns/",
GameCampaignFeed(),
name="game_campaign_feed",
),
# /rss/organizations/ - RSS feed for latest organizations.
# Example:
# https://ttvdrops.lovinator.space/rss/organizations/
# http://localhost:8000/rss/organizations/
path(
"rss/organizations/",
OrganizationFeed(),
name="organization_feed",
),
# /rss/organizations/<str:twitch_id>/campaigns/ - RSS feed for campaigns of a specific organization.
# Example:
# https://ttvdrops.lovinator.space/rss/organizations/931fd934-2149-4a85-a6d8-2190aa4439f3/campaigns/
# http://localhost:8000/rss/organizations/931fd934-2149-4a85-a6d8-2190aa4439f3/campaigns/
path(
"rss/organizations/<str:twitch_id>/campaigns/",
OrganizationCampaignFeed(),
name="organization_campaign_feed",
),
# /rss/reward-campaigns/ - RSS feed for campaigns of a specific organization.
# Example:
# https://ttvdrops.lovinator.space/rss/reward-campaigns
# http://localhost:8000/rss/organizations/931fd934-2149-4a85-a6d8-2190aa4439f3/campaigns/
path(
"rss/reward-campaigns/",
RewardCampaignFeed(),
name="reward_campaign_feed",
),
]
v1_rss_feeds: list[URLPattern] = [
# /rss/v1/campaigns - RSS feed for latest drop campaigns.
# Example:
# https://ttvdrops.lovinator.space/rss/campaigns/
# http://localhost:8000/rss/campaigns/
path(
"rss/v1/campaigns/",
DropCampaignFeed(),
name="campaign_feed_v1",
),
# /rss/v1/games - RSS feed for latest games.
# Example:
# https://ttvdrops.lovinator.space/rss/games/
# http://localhost:8000/rss/games/
path(
"rss/v1/games/",
GameFeed(),
name="game_feed_v1",
),
# /rss/games/<twitch_id>/campaigns/ - RSS feed for the latest drop campaigns of a specific game.
# Example:
# https://ttvdrops.lovinator.space/rss/games/21779/campaigns/
# http://localhost:8000/rss/games/21779/campaigns/
path(
"rss/v1/games/<str:twitch_id>/campaigns/",
GameCampaignFeed(),
name="game_campaign_feed_v1",
),
# /rss/organizations/ - RSS feed for latest organizations.
# Example:
# https://ttvdrops.lovinator.space/rss/organizations/
# http://localhost:8000/rss/organizations/
path(
"rss/v1/organizations/",
OrganizationFeed(),
name="organization_feed_v1",
),
# /rss/organizations/<str:twitch_id>/campaigns/ - RSS feed for campaigns of a specific organization.
# Example:
# https://ttvdrops.lovinator.space/rss/organizations/931fd934-2149-4a85-a6d8-2190aa4439f3/campaigns/
# http://localhost:8000/rss/organizations/931fd934-2149-4a85-a6d8-2190aa4439f3/campaigns/
path(
"rss/v1/organizations/<str:twitch_id>/campaigns/",
OrganizationCampaignFeed(),
name="organization_campaign_feed_v1",
),
# /rss/reward-campaigns/ - RSS feed for campaigns of a specific organization.
# Example:
# https://ttvdrops.lovinator.space/rss/reward-campaigns
# http://localhost:8000/rss/organizations/931fd934-2149-4a85-a6d8-2190aa4439f3/campaigns/
path(
"rss/v1/reward-campaigns/",
RewardCampaignFeed(),
name="reward_campaign_feed_v1",
),
]
urlpatterns: list[URLPattern] = [ urlpatterns: list[URLPattern] = [
path("", views.dashboard, name="dashboard"), path("", views.dashboard, name="dashboard"),
path("badges/", views.badge_list_view, name="badge_list"), path("badges/", views.badge_list_view, name="badge_list"),
@ -35,11 +153,7 @@ urlpatterns: list[URLPattern] = [
path("organizations/<str:twitch_id>/", views.organization_detail_view, name="organization_detail"), path("organizations/<str:twitch_id>/", views.organization_detail_view, name="organization_detail"),
path("reward-campaigns/", views.reward_campaign_list_view, name="reward_campaign_list"), path("reward-campaigns/", views.reward_campaign_list_view, name="reward_campaign_list"),
path("reward-campaigns/<str:twitch_id>/", views.reward_campaign_detail_view, name="reward_campaign_detail"), path("reward-campaigns/<str:twitch_id>/", views.reward_campaign_detail_view, name="reward_campaign_detail"),
path("rss/campaigns/", DropCampaignFeed(), name="campaign_feed"),
path("rss/games/", GameFeed(), name="game_feed"),
path("rss/games/<str:twitch_id>/campaigns/", GameCampaignFeed(), name="game_campaign_feed"),
path("rss/organizations/", OrganizationFeed(), name="organization_feed"),
path("rss/organizations/<str:twitch_id>/campaigns/", OrganizationCampaignFeed(), name="organization_campaign_feed"),
path("rss/reward-campaigns/", RewardCampaignFeed(), name="reward_campaign_feed"),
path("search/", views.search_view, name="search"), path("search/", views.search_view, name="search"),
*rss_feeds_latest,
*v1_rss_feeds,
] ]