json-feed-0.0.6: JSON Feed

Safe HaskellNone
LanguageHaskell2010

JsonFeed

Contents

Description

Synopsis

Documentation

Types

data Feed Source #

Constructors

Feed 

Fields

  • feedAuthor :: Maybe Author

    The feed author. The author object has several members. These are all optional --- but if you provide an author object, then at least one is required.

  • feedDescription :: Maybe Text

    Provides more detail, beyond the title, on what the feed is about. A feed reader may display this text.

  • feedExpired :: Maybe Bool

    Says whether or not the feed is finished --- that is, whether or not it will ever update again. A feed for a temporary event, such as an instance of the Olympics, could expire. If the value is True, then it's expired. Any other value, or the absence of feedExpired, means the feed may continue to update.

  • feedFavicon :: Maybe Url

    The URL of an image for the feed suitable to be used in a source list. It should be square and relatively small, but not smaller than 64 x 64 (so that it can look good on retina displays). As with feedIcon, this image should use transparency where appropriate, since it may be rendered on a non-white background.

  • feedFeedUrl :: Maybe Url

    The URL of the feed, and serves as the unique identifier for the feed. As with feedHomePageUrl, this should be considered required for feeds on the public web.

  • feedHomePageUrl :: Maybe Url

    The URL of the resource that the feed describes. This resource may or may not actually be a "home" page, but it should be an HTML page. If a feed is published on the public web, this should be considered as required. But it may not make sense in the case of a file created on a desktop computer, when that file is not shared or is shared only privately.

  • feedHubs :: Maybe [Hub]

    Describes endpoints that can be used to subscribe to real-time notifications from the publisher of this feed. Each object has a type and URL, both of which are required.

  • feedIcon :: Maybe Url

    The URL of an image for the feed suitable to be used in a timeline, much the way an avatar might be used. It should be square and relatively large --- such as 512 x 512 --- so that it can be scaled-down and so that it can look good on retina displays. It should use transparency where appropriate, since it may be rendered on a non-white background.

  • feedItems :: [Item]

    An array of objects that describe each object in the list.

  • feedNextUrl :: Maybe Url

    The URL of a feed that provides the next n items, where n is determined by the publisher. This allows for pagination, but with the expectation that reader software is not required to use it and probably won't use it very often. feedNextUrl must not be the same as feedFeedUrl, and it must not be the same as a previous feedNextUrl (to avoid infinite loops).

  • feedTitle :: Text

    The name of the feed, which will often correspond to the name of the website (blog, for instance), though not necessarily.

  • feedUserComment :: Maybe Text

    A description of the purpose of the feed. This is for the use of people looking at the raw JSON, and should be ignored by feed readers.

  • feedVersion :: Url

    The URL of the version of the format the feed uses.

Instances

Eq Feed Source # 

Methods

(==) :: Feed -> Feed -> Bool #

(/=) :: Feed -> Feed -> Bool #

Show Feed Source # 

Methods

showsPrec :: Int -> Feed -> ShowS #

show :: Feed -> String #

showList :: [Feed] -> ShowS #

Generic Feed Source # 

Associated Types

type Rep Feed :: * -> * #

Methods

from :: Feed -> Rep Feed x #

to :: Rep Feed x -> Feed #

ToJSON Feed Source # 
FromJSON Feed Source # 
type Rep Feed Source # 
type Rep Feed = D1 * (MetaData "Feed" "JsonFeed" "json-feed-0.0.6-AGKNz4st44VCetKznpn2nz" False) (C1 * (MetaCons "Feed" PrefixI True) ((:*:) * ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "feedAuthor") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Author))) ((:*:) * (S1 * (MetaSel (Just Symbol "feedDescription") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Text))) (S1 * (MetaSel (Just Symbol "feedExpired") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Bool))))) ((:*:) * (S1 * (MetaSel (Just Symbol "feedFavicon") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))) ((:*:) * (S1 * (MetaSel (Just Symbol "feedFeedUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))) (S1 * (MetaSel (Just Symbol "feedHomePageUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url)))))) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "feedHubs") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe [Hub]))) ((:*:) * (S1 * (MetaSel (Just Symbol "feedIcon") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))) (S1 * (MetaSel (Just Symbol "feedItems") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * [Item])))) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "feedNextUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))) (S1 * (MetaSel (Just Symbol "feedTitle") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Text))) ((:*:) * (S1 * (MetaSel (Just Symbol "feedUserComment") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Text))) (S1 * (MetaSel (Just Symbol "feedVersion") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Url)))))))

data Author Source #

Constructors

Author 

Fields

  • authorAvatar :: Maybe Url

    The URL for an image for the author. As with icon, it should be square and relatively large --- such as 512 x 512 --- and should use transparency where appropriate, since it may be rendered on a non-white background.

  • authorName :: Maybe Text

    The author's name.

  • authorUrl :: Maybe Url

    The URL of a site owned by the author. It could be a blog, micro-blog, Twitter account, and so on. Ideally the linked-to page provides a way to contact the author, but that's not required. The URL could be a mailto: link, though we suspect that will be rare.

data Item Source #

Constructors

Item 

Fields

  • itemAttachments :: Maybe [Attachment]

    Lists related resources. Podcasts, for instance, would include an attachment that's an audio or video file.

  • itemAuthor :: Maybe Author

    Has the same structure as the top-level feedAuthor. If not specified in an item, then the top-level author, if present, is the author of the item.

  • itemBannerImage :: Maybe Url

    The URL of an image to use as a banner. Some blogging systems (such as Medium) display a different banner image chosen to go with each post, but that image wouldn't otherwise appear in the content_html. A feed reader with a detail view may choose to show this banner image at the top of the detail view, possibly with the title overlaid.

  • itemContentHtml :: Maybe Html

    itemContentHtml and itemContentText are each optional strings --- but one or both must be present. This is the HTML or plain text of the item. Important: the only place HTML is allowed in this format is in itemContentHtml. A Twitter-like service might use itemContentText, while a blog might use itemContentHtml. Use whichever makes sense for your resource. (It doesn't even have to be the same for each item in a feed.)

  • itemContentText :: Maybe Text
  • itemDateModified :: Maybe UTCTime

    Specifies the modification date in RFC 3339 format.

  • itemDatePublished :: Maybe UTCTime

    Specifies the date in RFC 3339 format. (Example: 2010-02-07T14:04:00-05:00.)

  • itemExternalUrl :: Maybe Url

    The URL of a page elsewhere. This is especially useful for linkblogs. If itemUrl links to where you're talking about a thing, then itemExternalUrl links to the thing you're talking about.

  • itemId :: Value

    Unique for the item in the feed over time. If an item is ever updated, the ID should be unchanged. New items should never use a previously-used ID. If an ID is presented as a number or other type, a JSON Feed reader must coerce it to a string. Ideally, the ID is the full URL of the resource described by the item, since URLs make great unique identifiers.

  • itemImage :: Maybe Url

    The URL of the main image for the item. This image may also appear in the itemContentHtml --- if so, it's a hint to the feed reader that this is the main, featured image. Feed readers may use the image as a preview (probably resized as a thumbnail and placed in a timeline).

  • itemSummary :: Maybe Text

    A plain text sentence or two describing the item. This might be presented in a timeline, for instance, where a detail view would display all of itemContentHtml or itemContentText.

  • itemTags :: Maybe [Text]

    Can have any plain text values you want. Tags tend to be just one word, but they may be anything. Note: they are not the equivalent of Twitter hashtags. Some blogging systems and other feed formats call these categories.

  • itemTitle :: Maybe Text

    Plain text. Microblog items in particular may omit titles.

  • itemUrl :: Maybe Url

    The URL of the resource described by the item. It's the permalink. This may be the same as the ID --- but should be present regardless.

Instances

Eq Item Source # 

Methods

(==) :: Item -> Item -> Bool #

(/=) :: Item -> Item -> Bool #

Show Item Source # 

Methods

showsPrec :: Int -> Item -> ShowS #

show :: Item -> String #

showList :: [Item] -> ShowS #

Generic Item Source # 

Associated Types

type Rep Item :: * -> * #

Methods

from :: Item -> Rep Item x #

to :: Rep Item x -> Item #

ToJSON Item Source # 
FromJSON Item Source # 
type Rep Item Source # 
type Rep Item = D1 * (MetaData "Item" "JsonFeed" "json-feed-0.0.6-AGKNz4st44VCetKznpn2nz" False) (C1 * (MetaCons "Item" PrefixI True) ((:*:) * ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "itemAttachments") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe [Attachment]))) ((:*:) * (S1 * (MetaSel (Just Symbol "itemAuthor") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Author))) (S1 * (MetaSel (Just Symbol "itemBannerImage") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))))) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "itemContentHtml") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Html))) (S1 * (MetaSel (Just Symbol "itemContentText") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Text)))) ((:*:) * (S1 * (MetaSel (Just Symbol "itemDateModified") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe UTCTime))) (S1 * (MetaSel (Just Symbol "itemDatePublished") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe UTCTime)))))) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "itemExternalUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))) ((:*:) * (S1 * (MetaSel (Just Symbol "itemId") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Value)) (S1 * (MetaSel (Just Symbol "itemImage") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))))) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "itemSummary") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Text))) (S1 * (MetaSel (Just Symbol "itemTags") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe [Text])))) ((:*:) * (S1 * (MetaSel (Just Symbol "itemTitle") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Text))) (S1 * (MetaSel (Just Symbol "itemUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Url))))))))

data Attachment Source #

Constructors

Attachment 

Fields

  • attachmentDurationInSeconds :: Maybe Natural

    Specifies how long it takes to listen to or watch, when played at normal speed.

  • attachmentMimeType :: Mime

    Specifies the type of the attachment, such as audio/mpeg.

  • attachmentSizeInBytes :: Maybe Natural

    Specifies how large the file is.

  • attachmentTitle :: Maybe Text

    Is a name for the attachment. Important: if there are multiple attachments, and two or more have the exact same title (when title is present), then they are considered as alternate representations of the same thing. In this way a podcaster, for instance, might provide an audio recording in different formats.

  • attachmentUrl :: Url

    Specifies the location of the attachment.

Instances

Eq Attachment Source # 
Show Attachment Source # 
Generic Attachment Source # 

Associated Types

type Rep Attachment :: * -> * #

ToJSON Attachment Source # 
FromJSON Attachment Source # 
type Rep Attachment Source # 
type Rep Attachment = D1 * (MetaData "Attachment" "JsonFeed" "json-feed-0.0.6-AGKNz4st44VCetKznpn2nz" False) (C1 * (MetaCons "Attachment" PrefixI True) ((:*:) * ((:*:) * (S1 * (MetaSel (Just Symbol "attachmentDurationInSeconds") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Natural))) (S1 * (MetaSel (Just Symbol "attachmentMimeType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Mime))) ((:*:) * (S1 * (MetaSel (Just Symbol "attachmentSizeInBytes") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Natural))) ((:*:) * (S1 * (MetaSel (Just Symbol "attachmentTitle") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * (Maybe Text))) (S1 * (MetaSel (Just Symbol "attachmentUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Url))))))

data Hub Source #

Constructors

Hub 

Fields

Instances

Eq Hub Source # 

Methods

(==) :: Hub -> Hub -> Bool #

(/=) :: Hub -> Hub -> Bool #

Show Hub Source # 

Methods

showsPrec :: Int -> Hub -> ShowS #

show :: Hub -> String #

showList :: [Hub] -> ShowS #

Generic Hub Source # 

Associated Types

type Rep Hub :: * -> * #

Methods

from :: Hub -> Rep Hub x #

to :: Rep Hub x -> Hub #

ToJSON Hub Source # 
FromJSON Hub Source # 
type Rep Hub Source # 
type Rep Hub = D1 * (MetaData "Hub" "JsonFeed" "json-feed-0.0.6-AGKNz4st44VCetKznpn2nz" False) (C1 * (MetaCons "Hub" PrefixI True) ((:*:) * (S1 * (MetaSel (Just Symbol "hubType") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Text)) (S1 * (MetaSel (Just Symbol "hubUrl") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 * Url))))

Wrappers

newtype Html Source #

Constructors

Html 

Fields

newtype Mime Source #

Constructors

Mime 

Fields

newtype Url Source #

Constructors

Url 

Fields