github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/tools/blog/atom/atom.go (about) 1 // Copyright 2009 The Go Authors. 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 // Adapted from encoding/xml/read_test.go. 6 7 // Package atom defines XML data structures for an Atom feed. 8 package atom // import "golang.org/x/tools/blog/atom" 9 10 import ( 11 "encoding/xml" 12 "time" 13 ) 14 15 type Feed struct { 16 XMLName xml.Name `xml:"http://www.w3.org/2005/Atom feed"` 17 Title string `xml:"title"` 18 ID string `xml:"id"` 19 Link []Link `xml:"link"` 20 Updated TimeStr `xml:"updated"` 21 Author *Person `xml:"author"` 22 Entry []*Entry `xml:"entry"` 23 } 24 25 type Entry struct { 26 Title string `xml:"title"` 27 ID string `xml:"id"` 28 Link []Link `xml:"link"` 29 Published TimeStr `xml:"published"` 30 Updated TimeStr `xml:"updated"` 31 Author *Person `xml:"author"` 32 Summary *Text `xml:"summary"` 33 Content *Text `xml:"content"` 34 } 35 36 type Link struct { 37 Rel string `xml:"rel,attr"` 38 Href string `xml:"href,attr"` 39 } 40 41 type Person struct { 42 Name string `xml:"name"` 43 URI string `xml:"uri,omitempty"` 44 Email string `xml:"email,omitempty"` 45 InnerXML string `xml:",innerxml"` 46 } 47 48 type Text struct { 49 Type string `xml:"type,attr"` 50 Body string `xml:",chardata"` 51 } 52 53 type TimeStr string 54 55 func Time(t time.Time) TimeStr { 56 return TimeStr(t.Format("2006-01-02T15:04:05-07:00")) 57 }