PodcastRSS.Category (Podcast RSS v0.3.0)
View SourceApple Podcasts category validation and utilities.
This module provides validation for Apple Podcasts categories to ensure only valid categories are used in RSS feeds, preventing feed invalidation.
Summary
Functions
Get all available categories.
Get all available subcategories for a given category.
Check if a category is valid.
Check if a category and subcategory combination is valid.
Validate a category, raising an error if invalid.
Validate a category and subcategory combination, raising an error if invalid.
Functions
@spec list_categories() :: [String.t()]
Get all available categories.
Examples
iex> categories = PodcastRSS.Category.list_categories()
iex> "Technology" in categories
true
Get all available subcategories for a given category.
Examples
iex> PodcastRSS.Category.list_subcategories("Health & Fitness")
["Alternative Health", "Fitness", "Medicine", "Mental Health", "Nutrition", "Sexuality"]
iex> PodcastRSS.Category.list_subcategories("Technology")
[]
iex> PodcastRSS.Category.list_subcategories("Invalid")
nil
Check if a category is valid.
Examples
iex> PodcastRSS.Category.valid?("Technology")
true
iex> PodcastRSS.Category.valid?("Invalid Category")
false
Check if a category and subcategory combination is valid.
Examples
iex> PodcastRSS.Category.valid?("Health & Fitness", "Nutrition")
true
iex> PodcastRSS.Category.valid?("Health & Fitness", "Invalid")
false
iex> PodcastRSS.Category.valid?("Invalid", "Nutrition")
false
Validate a category, raising an error if invalid.
Examples
iex> PodcastRSS.Category.validate!("Technology")
"Technology"
iex> PodcastRSS.Category.validate!("Invalid")
** (ArgumentError) Invalid iTunes category: "Invalid". Valid categories: Arts, Business, Comedy, Education, Fiction, Government, Health & Fitness, History, Kids & Family, Leisure, Music, News, Religion & Spirituality, Science, Society & Culture, Sports, TV & Film, Technology, True Crime
Validate a category and subcategory combination, raising an error if invalid.
Examples
iex> PodcastRSS.Category.validate!("Health & Fitness", "Nutrition")
{"Health & Fitness", "Nutrition"}
iex> PodcastRSS.Category.validate!("Health & Fitness", "Invalid")
** (ArgumentError) Invalid iTunes subcategory: "Invalid" for category "Health & Fitness". Valid subcategories: ["Alternative Health", "Fitness", "Medicine", "Mental Health", "Nutrition", "Sexuality"]