PodcastRSS.Category (Podcast RSS v0.3.0)

View Source

Apple 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

list_categories()

@spec list_categories() :: [String.t()]

Get all available categories.

Examples

iex> categories = PodcastRSS.Category.list_categories()
iex> "Technology" in categories
true

list_subcategories(category)

@spec list_subcategories(String.t()) :: [String.t()] | nil

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

valid?(category)

@spec valid?(String.t()) :: boolean()

Check if a category is valid.

Examples

iex> PodcastRSS.Category.valid?("Technology")
true

iex> PodcastRSS.Category.valid?("Invalid Category")
false

valid?(category, subcategory)

@spec valid?(String.t(), String.t()) :: boolean()

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!(category)

@spec validate!(String.t()) :: String.t()

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!(category, subcategory)

@spec validate!(String.t(), String.t()) :: {String.t(), String.t()}

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"]