-- |
--
-- Copyright:
--   This file is part of the package themoviedb.  It is subject to
--   the license terms in the LICENSE file found in the top-level
--   directory of this distribution and at:
--
--     https://github.com/pjones/themoviedb
--
--   No part of this package, including this file, may be copied,
--   modified, propagated, or distributed except according to the terms
--   contained in the LICENSE file.
--
-- License: MIT
--
-- This library provides some data types and functions for fetching movie
-- metadata from <http://TheMovieDB.org>.  To use this library start by
-- requesting an API key from <http://docs.themoviedb.apiary.io>.
--
-- Example:
--
-- @
-- import Network.API.TheMovieDB
--
-- main :: IO ()
-- main = do
--   -- The API key assigned to you (as a 'Text' value).
--   let key = "your API key"
--
--   -- The 'fetch' function will get a 'Movie' record based on its ID.
--   result <- runTheMovieDB (defaultSettings key) (fetchMovie 9340)
--
--   -- Do something with the result (or error).
--   putStrLn (show result)
-- @
--
-- This library also includes an example executable in the @example@
-- directory.
module Network.API.TheMovieDB
  ( -- * Types
    Movie (..),
    TV (..),
    Season (..),
    Episode (..),
    Genre (..),
    Error (..),
    ItemID,

    -- * Library Settings
    Settings (..),
    defaultSettings,
    Key,
    LanguageCode,

    -- * API Functions
    TheMovieDB,
    runTheMovieDB,
    runTheMovieDBWithManager,
    searchMovies,
    fetchMovie,
    searchTV,
    fetchTV,
    fetchTVSeason,
    fetchFullTVSeries,

    -- * Utility Types and Functions
    Configuration,
    config,
    moviePosterURLs,
    tvPosterURLs,
    seasonPosterURLs,
    episodeStillURLs,
  )
where

import Network.API.TheMovieDB.Actions
import Network.API.TheMovieDB.Internal.Configuration
import Network.API.TheMovieDB.Internal.Settings
import Network.API.TheMovieDB.Internal.TheMovieDB
import Network.API.TheMovieDB.Internal.Types
import Network.API.TheMovieDB.Types.Episode
import Network.API.TheMovieDB.Types.Genre
import Network.API.TheMovieDB.Types.Movie
import Network.API.TheMovieDB.Types.Season
import Network.API.TheMovieDB.Types.TV