From aa08ec9f67963f96485bcf9b4a64c2a7c46673ff Mon Sep 17 00:00:00 2001 From: pantsudev Date: Wed, 14 Jun 2017 16:36:38 +1000 Subject: [PATCH] Tidy up and remove useless code --- feeds/.travis.yml | 14 --- feeds/LICENSE | 22 ----- feeds/README.md | 140 ----------------------------- feeds/atom.go | 171 ------------------------------------ feeds/doc.go | 71 --------------- feeds/feed.go | 122 -------------------------- feeds/rss.go | 175 ------------------------------------- feeds/uuid.go | 28 ------ router/rss_handler.go | 14 +-- router/user_handler.go | 4 +- service/torrent/torrent.go | 30 +------ 11 files changed, 6 insertions(+), 785 deletions(-) delete mode 100644 feeds/.travis.yml delete mode 100644 feeds/LICENSE delete mode 100644 feeds/README.md delete mode 100644 feeds/atom.go delete mode 100644 feeds/doc.go delete mode 100644 feeds/feed.go delete mode 100644 feeds/rss.go delete mode 100644 feeds/uuid.go diff --git a/feeds/.travis.yml b/feeds/.travis.yml deleted file mode 100644 index 83ab8f59..00000000 --- a/feeds/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go -sudo: false -go: - - 1.3 - - 1.4 - - 1.5 - - tip -install: - - go get golang.org/x/tools/cmd/vet -script: - - go get -t -v ./... - - diff -u <(echo -n) <(gofmt -d -s .) - - go tool vet . - - go test -v -race ./... diff --git a/feeds/LICENSE b/feeds/LICENSE deleted file mode 100644 index a28d3501..00000000 --- a/feeds/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Original Work Copyright (c) 2013 The Gorilla Feeds Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/feeds/README.md b/feeds/README.md deleted file mode 100644 index e499be84..00000000 --- a/feeds/README.md +++ /dev/null @@ -1,140 +0,0 @@ -## gorilla/feeds -[![GoDoc](https://godoc.org/github.com/gorilla/feeds?status.svg)](https://godoc.org/github.com/gorilla/feeds) [![Build Status](https://travis-ci.org/gorilla/feeds.png?branch=master)](https://travis-ci.org/gorilla/feeds) - -feeds is a web feed generator library for generating RSS and Atom feeds from Go -applications. - -### Goals - - * Provide a simple interface to create both Atom & RSS 2.0 feeds - * Full support for Atom and RSS2.0 spec elements - * Ability to modify particulars for each spec - -### Usage - -```go -package main - -import ( - "fmt" - "log" - "time" - "github.com/gorilla/feeds" -) - -func main() { - now := time.Now() - feed := &feeds.Feed{ - Title: "jmoiron.net blog", - Link: &feeds.Link{Href: "http://jmoiron.net/blog"}, - Description: "discussion about tech, footie, photos", - Author: &feeds.Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"}, - Created: now, - } - - feed.Items = []*feeds.Item{ - &feeds.Item{ - Title: "Limiting Concurrency in Go", - Link: &feeds.Link{Href: "http://jmoiron.net/blog/limiting-concurrency-in-go/"}, - Description: "A discussion on controlled parallelism in golang", - Author: &feeds.Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"}, - Created: now, - }, - &feeds.Item{ - Title: "Logic-less Template Redux", - Link: &feeds.Link{Href: "http://jmoiron.net/blog/logicless-template-redux/"}, - Description: "More thoughts on logicless templates", - Created: now, - }, - &feeds.Item{ - Title: "Idiomatic Code Reuse in Go", - Link: &feeds.Link{Href: "http://jmoiron.net/blog/idiomatic-code-reuse-in-go/"}, - Description: "How to use interfaces effectively", - Created: now, - }, - } - - atom, err := feed.ToAtom() - if err != nil { - log.Fatal(err) - } - - rss, err := feed.ToRss() - if err != nil { - log.Fatal(err) - } - - fmt.Println(atom, "\n", rss) -} -``` - -Outputs: - -```xml - - - jmoiron.net blog - - http://jmoiron.net/blog - 2013-01-16T03:26:01-05:00 - discussion about tech, footie, photos - - Limiting Concurrency in Go - - 2013-01-16T03:26:01-05:00 - tag:jmoiron.net,2013-01-16:/blog/limiting-concurrency-in-go/ - A discussion on controlled parallelism in golang - - Jason Moiron - jmoiron@jmoiron.net - - - - Logic-less Template Redux - - 2013-01-16T03:26:01-05:00 - tag:jmoiron.net,2013-01-16:/blog/logicless-template-redux/ - More thoughts on logicless templates - - - - Idiomatic Code Reuse in Go - - 2013-01-16T03:26:01-05:00 - tag:jmoiron.net,2013-01-16:/blog/idiomatic-code-reuse-in-go/ - How to use interfaces <em>effectively</em> - - - - - - - - jmoiron.net blog - http://jmoiron.net/blog - discussion about tech, footie, photos - jmoiron@jmoiron.net (Jason Moiron) - 2013-01-16T03:22:24-05:00 - - Limiting Concurrency in Go - http://jmoiron.net/blog/limiting-concurrency-in-go/ - A discussion on controlled parallelism in golang - 2013-01-16T03:22:24-05:00 - - - Logic-less Template Redux - http://jmoiron.net/blog/logicless-template-redux/ - More thoughts on logicless templates - 2013-01-16T03:22:24-05:00 - - - Idiomatic Code Reuse in Go - http://jmoiron.net/blog/idiomatic-code-reuse-in-go/ - How to use interfaces <em>effectively</em> - 2013-01-16T03:22:24-05:00 - - - - -``` - diff --git a/feeds/atom.go b/feeds/atom.go deleted file mode 100644 index bba0c24b..00000000 --- a/feeds/atom.go +++ /dev/null @@ -1,171 +0,0 @@ -package feeds - -import ( - "encoding/xml" - "fmt" - "net/url" - "strconv" - "time" -) - -// ns : Generates Atom feed as XML -const ns = "http://www.w3.org/2005/Atom" - -// AtomPerson struct -type AtomPerson struct { - Name string `xml:"name,omitempty"` - URI string `xml:"uri,omitempty"` - Email string `xml:"email,omitempty"` -} - -// AtomSummary struct -type AtomSummary struct { - XMLName xml.Name `xml:"summary"` - Content string `xml:",chardata"` - Type string `xml:"type,attr"` -} - -// AtomContent struct -type AtomContent struct { - XMLName xml.Name `xml:"content"` - Content string `xml:",chardata"` - Type string `xml:"type,attr"` -} - -// AtomAuthor struct -type AtomAuthor struct { - XMLName xml.Name `xml:"author"` - AtomPerson -} - -// AtomContributor struct -type AtomContributor struct { - XMLName xml.Name `xml:"contributor"` - AtomPerson -} - -// AtomEntry struct -type AtomEntry struct { - XMLName xml.Name `xml:"entry"` - Xmlns string `xml:"xmlns,attr,omitempty"` - Title string `xml:"title"` // required - Updated string `xml:"updated"` // required - ID string `xml:"id"` // required - Category string `xml:"category,omitempty"` - Content *AtomContent - Rights string `xml:"rights,omitempty"` - Source string `xml:"source,omitempty"` - Published string `xml:"published,omitempty"` - Contributor *AtomContributor - Link *AtomLink // required if no child 'content' elements - Summary *AtomSummary // required if content has src or content is base64 - Author *AtomAuthor // required if feed lacks an author -} - -// AtomLink struct -type AtomLink struct { - //Atom 1.0 - XMLName xml.Name `xml:"link"` - Href string `xml:"href,attr"` - Rel string `xml:"rel,attr,omitempty"` - Type string `xml:"type,attr,omitempty"` - Length string `xml:"length,attr,omitempty"` -} - -// AtomFeed struct -type AtomFeed struct { - XMLName xml.Name `xml:"feed"` - Xmlns string `xml:"xmlns,attr"` - Title string `xml:"title"` // required - ID string `xml:"id"` // required - Updated string `xml:"updated"` // required - Category string `xml:"category,omitempty"` - Icon string `xml:"icon,omitempty"` - Logo string `xml:"logo,omitempty"` - Rights string `xml:"rights,omitempty"` // copyright used - Subtitle string `xml:"subtitle,omitempty"` - Link *AtomLink - Author *AtomAuthor `xml:"author,omitempty"` - Contributor *AtomContributor - Entries []*AtomEntry -} - -// Atom struct -type Atom struct { - *Feed -} - -func newAtomEntry(i *Item) *AtomEntry { - id := i.ID - // assume the description is html - c := &AtomContent{Content: i.Description, Type: "html"} - - if len(id) == 0 { - // if there's no id set, try to create one, either from data or just a uuid - if len(i.Link.Href) > 0 && (!i.Created.IsZero() || !i.Updated.IsZero()) { - dateStr := anyTimeFormat("2006-01-02", i.Updated, i.Created) - host, path := i.Link.Href, "/invalid.html" - if url, err := url.Parse(i.Link.Href); err == nil { - host, path = url.Host, url.Path - } - id = fmt.Sprintf("tag:%s,%s:%s", host, dateStr, path) - } else { - id = "urn:uuid:" + NewUUID().String() - } - } - var name, email string - if i.Author != nil { - name, email = i.Author.Name, i.Author.Email - } - - x := &AtomEntry{ - Title: i.Title, - Link: &AtomLink{Href: i.Link.Href, Rel: i.Link.Rel, Type: i.Link.Type}, - Content: c, - ID: id, - Updated: anyTimeFormat(time.RFC3339, i.Updated, i.Created), - } - - intLength, err := strconv.ParseInt(i.Link.Length, 10, 64) - - if err == nil && (intLength > 0 || i.Link.Type != "") { - i.Link.Rel = "enclosure" - x.Link = &AtomLink{Href: i.Link.Href, Rel: i.Link.Rel, Type: i.Link.Type, Length: i.Link.Length} - } - - if len(name) > 0 || len(email) > 0 { - x.Author = &AtomAuthor{AtomPerson: AtomPerson{Name: name, Email: email}} - } - return x -} - -// AtomFeed : create a new AtomFeed with a generic Feed struct's data -func (a *Atom) AtomFeed() *AtomFeed { - updated := anyTimeFormat(time.RFC3339, a.Updated, a.Created) - feed := &AtomFeed{ - Xmlns: ns, - Title: a.Title, - Link: &AtomLink{Href: a.Link.Href, Rel: a.Link.Rel}, - Subtitle: a.Description, - ID: a.Link.Href, - Updated: updated, - Rights: a.Copyright, - } - if a.Author != nil { - feed.Author = &AtomAuthor{AtomPerson: AtomPerson{Name: a.Author.Name, Email: a.Author.Email}} - } - for _, e := range a.Items { - feed.Entries = append(feed.Entries, newAtomEntry(e)) - } - return feed -} - -// FeedXML : return an XML-Ready object for an Atom object -func (a *Atom) FeedXML() interface{} { - return a.AtomFeed() -} - -// FeedXML : return an XML-ready object for an AtomFeed object -func (a *AtomFeed) FeedXML() interface{} { - return a -} diff --git a/feeds/doc.go b/feeds/doc.go deleted file mode 100644 index b1bd021a..00000000 --- a/feeds/doc.go +++ /dev/null @@ -1,71 +0,0 @@ -// Package feeds : -package feeds - -/* Syndication (feed) generator library for golang. - -Installing - - go get github.com/gorilla/feeds - -Feeds provides a simple, generic Feed interface with a generic Item object as well as RSS and Atom specific RssFeed and AtomFeed objects which allow access to all of each spec's defined elements. - -Examples - -Create a Feed and some Items in that feed using the generic interfaces: - - import ( - "time" - . "github.com/gorilla/feeds - ) - - now = time.Now() - - feed := &Feed{ - Title: "jmoiron.net blog", - Link: &Link{Href: "http://jmoiron.net/blog"}, - Description: "discussion about tech, footie, photos", - Author: &Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"}, - Created: now, - Copyright: "This work is copyright © Benjamin Button", - } - - feed.Items = []*Item{ - &Item{ - Title: "Limiting Concurrency in Go", - Link: &Link{Href: "http://jmoiron.net/blog/limiting-concurrency-in-go/"}, - Description: "A discussion on controlled parallelism in golang", - Author: &Author{Name: "Jason Moiron", Email: "jmoiron@jmoiron.net"}, - Created: now, - }, - &Item{ - Title: "Logic-less Template Redux", - Link: &Link{Href: "http://jmoiron.net/blog/logicless-template-redux/"}, - Description: "More thoughts on logicless templates", - Created: now, - }, - &Item{ - Title: "Idiomatic Code Reuse in Go", - Link: &Link{Href: "http://jmoiron.net/blog/idiomatic-code-reuse-in-go/"}, - Description: "How to use interfaces effectively", - Created: now, - }, - } - -From here, you can output Atom or RSS versions of this feed easily - - atom, err := feed.ToAtom() - rss, err := feed.ToRss() - -You can also get access to the underlying objects that feeds uses to export its XML - - atomFeed := &Atom{feed}.AtomFeed() - rssFeed := &Rss{feed}.RssFeed() - -From here, you can modify or add each syndication's specific fields before outputting - - atomFeed.Subtitle = "plays the blues" - atom, err := ToXML(atomFeed) - rssFeed.Generator = "gorilla/feeds v1.0 (github.com/gorilla/feeds)" - rss, err := ToXML(rssFeed) - -*/ diff --git a/feeds/feed.go b/feeds/feed.go deleted file mode 100644 index b2f6b677..00000000 --- a/feeds/feed.go +++ /dev/null @@ -1,122 +0,0 @@ -package feeds - -import ( - "encoding/xml" - "io" - "time" -) - -// Link Struct -type Link struct { - Href, Rel, Type, Length string -} - -// Author Struct -type Author struct { - Name, Email string -} - -// Torrent Struct modified for Nyaa -type Torrent struct { - FileName string - Seeds uint32 - Peers uint32 - InfoHash string - ContentLength int64 - MagnetURI string -} - -// Item Struct -type Item struct { - Title string - Link *Link - Author *Author - Description string // used as description in rss, summary in atom - ID string // used as guid in rss, id in atom - Updated time.Time - Created time.Time - - Torrent *Torrent // modified for Nyaa -} - -// Feed Struct -type Feed struct { - Title string - Link *Link - Description string - Author *Author - Updated time.Time - Created time.Time - ID string - Subtitle string - Items []*Item - Copyright string -} - -// Add a new Item to a Feed -func (f *Feed) Add(item *Item) { - f.Items = append(f.Items, item) -} - -// returns the first non-zero time formatted as a string or "" -func anyTimeFormat(format string, times ...time.Time) string { - for _, t := range times { - if !t.IsZero() { - return t.Format(format) - } - } - return "" -} - -// XMLFeed : interface used by ToXML to get a object suitable for exporting XML. -type XMLFeed interface { - FeedXML() interface{} -} - -// ToXML : turn a feed object (either a Feed, AtomFeed, or RssFeed) into xml -// returns an error if xml marshaling fails -func ToXML(feed XMLFeed) (string, error) { - x := feed.FeedXML() - data, err := xml.MarshalIndent(x, "", " ") - if err != nil { - return "", err - } - // strip empty line from default xml header - s := xml.Header[:len(xml.Header)-1] + string(data) - return s, nil -} - -// WriteXML : Write a feed object (either a Feed, AtomFeed, or RssFeed) as XML into -// the writer. Returns an error if XML marshaling fails. -func WriteXML(feed XMLFeed, w io.Writer) error { - x := feed.FeedXML() - // write default xml header, without the newline - if _, err := w.Write([]byte(xml.Header[:len(xml.Header)-1])); err != nil { - return err - } - e := xml.NewEncoder(w) - e.Indent("", " ") - return e.Encode(x) -} - -// ToAtom : creates an Atom representation of this feed -func (f *Feed) ToAtom() (string, error) { - a := &Atom{f} - return ToXML(a) -} - -// WriteAtom : Writes an Atom representation of this feed to the writer. -func (f *Feed) WriteAtom(w io.Writer) error { - return WriteXML(&Atom{f}, w) -} - -// ToRss : creates an Rss representation of this feed -func (f *Feed) ToRss() (string, error) { - r := &Rss{f} - return ToXML(r) -} - -// WriteRss : Writes an RSS representation of this feed to the writer. -func (f *Feed) WriteRss(w io.Writer) error { - return WriteXML(&Rss{f}, w) -} diff --git a/feeds/rss.go b/feeds/rss.go deleted file mode 100644 index 62b05020..00000000 --- a/feeds/rss.go +++ /dev/null @@ -1,175 +0,0 @@ -package feeds - -// rss support -// validation done according to spec here: -// http://cyber.law.harvard.edu/rss/rss.html - -import ( - "encoding/xml" - "fmt" - "strconv" - "time" -) - -// private wrapper around the RssFeed which gives us the .. xml -type rssFeedXML struct { - XMLName xml.Name `xml:"rss"` - Version string `xml:"version,attr"` - Channel *RssFeed - XMLNSTorrent string `xml:"xmlns:torrent,attr"` // modified for Nyaa -} - -// RssImage Struct -type RssImage struct { - XMLName xml.Name `xml:"image"` - URL string `xml:"url"` - Title string `xml:"title"` - Link string `xml:"link"` - Width int `xml:"width,omitempty"` - Height int `xml:"height,omitempty"` -} - -// RssTextInput Struct -type RssTextInput struct { - XMLName xml.Name `xml:"textInput"` - Title string `xml:"title"` - Description string `xml:"description"` - Name string `xml:"name"` - Link string `xml:"link"` -} - -// RssFeed Struct -type RssFeed struct { - XMLName xml.Name `xml:"channel"` - Title string `xml:"title"` // required - Link string `xml:"link"` // required - Description string `xml:"description"` // required - Language string `xml:"language,omitempty"` - Copyright string `xml:"copyright,omitempty"` - ManagingEditor string `xml:"managingEditor,omitempty"` // Author used - WebMaster string `xml:"webMaster,omitempty"` - PubDate string `xml:"pubDate,omitempty"` // created or updated - LastBuildDate string `xml:"lastBuildDate,omitempty"` // updated used - Category string `xml:"category,omitempty"` - Generator string `xml:"generator,omitempty"` - Docs string `xml:"docs,omitempty"` - Cloud string `xml:"cloud,omitempty"` - TTL int `xml:"ttl,omitempty"` - Rating string `xml:"rating,omitempty"` - SkipHours string `xml:"skipHours,omitempty"` - SkipDays string `xml:"skipDays,omitempty"` - Image *RssImage - TextInput *RssTextInput - Items []*RssItem -} - -// https://stackoverflow.com/questions/14191596/#answer-42056891 -type Derp struct { - XMLName xml.Name `xml:"link"` - Text string `xml:",cdata"` -} - -// RssItem Struct -type RssItem struct { - XMLName xml.Name `xml:"item"` - Title string `xml:"title"` // required - Link *Derp `xml:"link"` // required - Description string `xml:"description"` // required - Author string `xml:"author,omitempty"` - Category string `xml:"category,omitempty"` - Comments string `xml:"comments,omitempty"` - Enclosure *RssEnclosure - GUID string `xml:"guid,omitempty"` // Id used - PubDate string `xml:"pubDate,omitempty"` // created or updated - Source string `xml:"source,omitempty"` - - // modified for Nyaa - FileName string `xml:"torrent:fileName"` - Seeds uint32 `xml:"torrent:seeds"` - Peers uint32 `xml:"torrent:peers"` - InfoHash string `xml:"torrent:infoHash"` - ContentLength int64 `xml:"torrent:contentLength"` - MagnetURI string `xml:"torrent:magnetURI"` -} - -// RssEnclosure Struct -type RssEnclosure struct { - //RSS 2.0 - XMLName xml.Name `xml:"enclosure"` - URL string `xml:"url,attr"` - Length string `xml:"length,attr"` - Type string `xml:"type,attr"` -} - -// Rss Struct -type Rss struct { - *Feed -} - -// create a new RssItem with a generic Item struct's data -func newRssItem(i *Item) *RssItem { - item := &RssItem{ - Title: i.Title, - Link: &Derp{Text: i.Link.Href}, - Description: i.Description, - GUID: i.ID, - PubDate: anyTimeFormat(time.RFC1123Z, i.Created, i.Updated), - // modified for Nyaa - FileName: i.Torrent.FileName, - Seeds: i.Torrent.Seeds, - Peers: i.Torrent.Peers, - InfoHash: i.Torrent.InfoHash, - ContentLength: i.Torrent.ContentLength, - MagnetURI: i.Torrent.MagnetURI, - } - - intLength, err := strconv.ParseInt(i.Link.Length, 10, 64) - - if err == nil && (intLength > 0 || i.Link.Type != "") { - item.Enclosure = &RssEnclosure{URL: i.Link.Href, Type: i.Link.Type, Length: i.Link.Length} - } - if i.Author != nil { - item.Author = i.Author.Name - } - return item -} - -// RssFeed : create a new RssFeed with a generic Feed struct's data -func (r *Rss) RssFeed() *RssFeed { - pub := anyTimeFormat(time.RFC1123Z, r.Created, r.Updated) - build := anyTimeFormat(time.RFC1123Z, r.Updated) - author := "" - if r.Author != nil { - author = r.Author.Email - if len(r.Author.Name) > 0 { - author = fmt.Sprintf("%s (%s)", r.Author.Email, r.Author.Name) - } - } - - channel := &RssFeed{ - Title: r.Title, - Link: r.Link.Href, - Description: r.Description, - ManagingEditor: author, - PubDate: pub, - LastBuildDate: build, - Copyright: r.Copyright, - } - for _, i := range r.Items { - channel.Items = append(channel.Items, newRssItem(i)) - } - return channel -} - -// FeedXML : return an XML-Ready object for an Rss object -func (r *Rss) FeedXML() interface{} { - // only generate version 2.0 feeds for now - return r.RssFeed().FeedXML() - -} - -// FeedXML : return an XML-ready object for an RssFeed object -func (r *RssFeed) FeedXML() interface{} { - // modified for Nyaa - return &rssFeedXML{Version: "2.0", Channel: r, XMLNSTorrent: "http://xmlns.nyaa.pantsu.cat/torrent/"} -} diff --git a/feeds/uuid.go b/feeds/uuid.go deleted file mode 100644 index 525c33df..00000000 --- a/feeds/uuid.go +++ /dev/null @@ -1,28 +0,0 @@ -package feeds - -// relevant bits from https://github.com/abneptis/GoUUID/blob/master/uuid.go - -import ( - "crypto/rand" - "fmt" -) - -// UUID type -type UUID [16]byte - -// NewUUID : create a new uuid v4 -func NewUUID() *UUID { - u := &UUID{} - _, err := rand.Read(u[:16]) - if err != nil { - panic(err) - } - - u[8] = (u[8] | 0x80) & 0xBf - u[6] = (u[6] | 0x40) & 0x4f - return u -} - -func (u *UUID) String() string { - return fmt.Sprintf("%x-%x-%x-%x-%x", u[:4], u[4:6], u[6:8], u[8:10], u[10:]) -} diff --git a/router/rss_handler.go b/router/rss_handler.go index 6f17b8e4..2986dbbf 100644 --- a/router/rss_handler.go +++ b/router/rss_handler.go @@ -7,9 +7,9 @@ import ( "time" "github.com/NyaaPantsu/nyaa/config" - "github.com/NyaaPantsu/nyaa/feeds" userService "github.com/NyaaPantsu/nyaa/service/user" "github.com/NyaaPantsu/nyaa/util/search" + "github.com/gorilla/feeds" "github.com/gorilla/mux" ) @@ -78,20 +78,12 @@ func RSSHandler(w http.ResponseWriter, r *http.Request) { for i, torrent := range torrents { torrentJSON := torrent.ToJSON() feed.Items[i] = &feeds.Item{ - ID: config.WebAddress() + "/view/" + strconv.FormatUint(uint64(torrentJSON.ID), 10), - Title: torrent.Name, + Title: torrentJSON.Name, Link: &feeds.Link{Href: string(torrentJSON.Magnet)}, Description: string(torrentJSON.Description), + Author: &feeds.Author{Name: config.WebAddress() + "/view/" + strconv.FormatUint(uint64(torrentJSON.ID), 10)}, Created: torrent.Date, Updated: torrent.Date, - Torrent: &feeds.Torrent{ - FileName: torrent.Name, - Seeds: torrent.Seeders, - Peers: torrent.Leechers, - InfoHash: torrent.Hash, - ContentLength: torrent.Filesize, - MagnetURI: string(torrentJSON.Magnet), - }, } } // allow cross domain AJAX requests diff --git a/router/user_handler.go b/router/user_handler.go index eb3ce19a..e9cbd6dc 100644 --- a/router/user_handler.go +++ b/router/user_handler.go @@ -24,7 +24,7 @@ func UserRegisterFormHandler(w http.ResponseWriter, r *http.Request) { _, errorUser := userService.CurrentUser(r) // User is already connected, redirect to home if errorUser == nil { - HomeHandler(w, r) + SearchHandler(w, r) return } messages := msg.GetMessages(r) @@ -48,7 +48,7 @@ func UserLoginFormHandler(w http.ResponseWriter, r *http.Request) { _, errorUser := userService.CurrentUser(r) // User is already connected, redirect to home if errorUser == nil { - HomeHandler(w, r) + SearchHandler(w, r) return } diff --git a/service/torrent/torrent.go b/service/torrent/torrent.go index 78dd7058..728b5e3f 100644 --- a/service/torrent/torrent.go +++ b/service/torrent/torrent.go @@ -14,7 +14,6 @@ import ( "github.com/NyaaPantsu/nyaa/service/notifier" "github.com/NyaaPantsu/nyaa/service/user" "github.com/NyaaPantsu/nyaa/service/user/permission" - "github.com/NyaaPantsu/nyaa/util" "github.com/NyaaPantsu/nyaa/util/log" "github.com/NyaaPantsu/nyaa/util/publicSettings" "github.com/gorilla/mux" @@ -26,33 +25,6 @@ import ( * */ -// GetFeeds : don't need raw SQL once we get MySQL -func GetFeeds() (result []model.Feed, err error) { - result = make([]model.Feed, 0, 50) - rows, err := db.ORM.DB(). - Query( - "SELECT `torrent_id` AS `id`, `torrent_name` AS `name`, `torrent_hash` AS `hash`, `timestamp` FROM `" + config.Conf.Models.TorrentsTableName + - "` ORDER BY `timestamp` desc LIMIT 50") - if err != nil { - return nil, err - } - defer rows.Close() - - for rows.Next() { - item := model.Feed{} - err = rows.Scan(&item.ID, &item.Name, &item.Hash, &item.Timestamp) - if err != nil { - return - } - magnet := util.InfoHashToMagnet(strings.TrimSpace(item.Hash), item.Name, config.Conf.Torrents.Trackers.Default...) - item.Magnet = magnet - // TODO: memory hog - result = append(result, item) - } - err = rows.Err() - return -} - // GetTorrentByID : get a torrent with its id func GetTorrentByID(id string) (torrent model.Torrent, err error) { // Postgres DB integer size is 32-bit @@ -284,7 +256,7 @@ func UpdateTorrent(torrent model.Torrent) (int, error) { return http.StatusInternalServerError, errors.New("Torrent was not updated") } -// TODO Don't create a new client for each request + // TODO Don't create a new client for each request if db.ElasticSearchClient != nil { err := torrent.AddToESIndex(db.ElasticSearchClient) if err == nil {