Home Download Docs Code Community
     1	// Copyright 2012 Evan Farrer. All rights reserved.
     2	// Use of this source code is governed by a BSD-style
     3	// license that can be found in the LICENSE file.
     4	
     5	// Package rss defines XML data structures for an RSS feed.
     6	package rss // import "perkeep.org/pkg/importer/feed/rss"
     7	
     8	type RSS struct {
     9		XMLName       string  `xml:"rss"`
    10		Title         string  `xml:"channel>title"`
    11		Link          []Link  `xml:"channel>link"`
    12		Description   string  `xml:"channel>description"`
    13		PubDate       string  `xml:"channel>pubDate,omitempty"`
    14		LastBuildDate string  `xml:"channel>lastBuildDate,omitempty"`
    15		Items         []*Item `xml:"channel>item"`
    16	}
    17	
    18	func (r *RSS) BaseLink() string {
    19		for _, l := range r.Link {
    20			if l.Rel == "" && l.Type == "" && l.Href == "" && l.Chardata != "" {
    21				return l.Chardata
    22			}
    23		}
    24		return ""
    25	}
    26	
    27	type Link struct {
    28		Rel      string `xml:"rel,attr"`
    29		Href     string `xml:"href,attr"`
    30		Type     string `xml:"type,attr"`
    31		Chardata string `xml:",chardata"`
    32	}
    33	
    34	type Item struct {
    35		Title       string        `xml:"title,omitempty"`
    36		Link        string        `xml:"link,omitempty"`
    37		Description string        `xml:"description,omitempty"`
    38		Author      string        `xml:"author,omitempty"`
    39		Enclosure   *Enclosure    `xml:"enclosure"`
    40		Guid        *Guid         `xml:"guid"`
    41		PubDate     string        `xml:"pubDate,omitempty"`
    42		Source      *Source       `xml:"source"`
    43		Content     string        `xml:"encoded,omitempty"`
    44		Date        string        `xml:"date,omitempty"`
    45		Published   string        `xml:"published,omitempty"`
    46		Media       *MediaContent `xml:"content"`
    47	}
    48	
    49	type MediaContent struct {
    50		XMLBase string `xml:"http://search.yahoo.com/mrss/ content"`
    51		URL     string `xml:"url,attr"`
    52		Type    string `xml:"type,attr"`
    53	}
    54	
    55	type Source struct {
    56		Source string `xml:",chardata"`
    57		Url    string `xml:"url,attr"`
    58	}
    59	
    60	type Guid struct {
    61		Guid        string `xml:",chardata"`
    62		IsPermaLink bool   `xml:"isPermaLink,attr,omitempty"`
    63	}
    64	
    65	type Enclosure struct {
    66		Url    string `xml:"url,attr"`
    67		Length string `xml:"length,attr,omitempty"`
    68		Type   string `xml:"type,attr"`
    69	}
Website layout inspired by memcached.
Content by the authors.