aboutsummaryrefslogblamecommitdiffstats
path: root/exporter/exporter.go
blob: 8e7ff12c31115693de0e614eb5724245dc2b0c5f (plain) (tree)














































                                                                                              
package exporter

import (
	"adammathes.com/neko/config"
	"adammathes.com/neko/models/feed"
	"encoding/json"
	"encoding/xml"
	"fmt"
	"html/template"
	"os"
	"path"
)

func ExportFeeds(format string) {
	feeds, err := feed.All()
	if err != nil {
		panic(err)
	}

	switch format {
	case "text":
		for _, f := range feeds {
			fmt.Printf("%s\n", f.Url)
		}

	case "opml":
		fmt.Printf(`<opml version="2.0"><head><title>neko feeds</title></head><body>`)
		fmt.Printf("\n")
		for _, f := range feeds {
			b, _ := xml.Marshal(f)
			fmt.Printf("%s\n", string(b))
		}
		fmt.Printf(`</body></opml>`)

	case "json":
		js, _ := json.Marshal(feeds)
		fmt.Printf("%s\n", js)

	case "html":
		tmplFile := path.Join(config.Config.StaticDir, "feeds.tmpl")
		feedsTmpl := template.Must(template.ParseFiles(tmplFile))
		err := feedsTmpl.Execute(os.Stdout, feeds)
		if err != nil {
			panic(err)
		}
	}
}