Albirew/nyaa-pantsu
Archivé
1
0
Bifurcation 0

get the proper magnet and infohash for upload

Cette révision appartient à :
Andrew Zhao 2017-05-06 17:48:24 -07:00
Parent 4340579bcd
révision eeab38b90d
2 fichiers modifiés avec 23 ajouts et 5 suppressions

Voir le fichier

@ -1,17 +1,22 @@
package router package router
import ( import (
"encoding/hex"
"errors" "errors"
"fmt"
"github.com/ewhal/nyaa/util" "github.com/ewhal/nyaa/util"
"github.com/ewhal/nyaa/util/metainfo" "github.com/ewhal/nyaa/util/metainfo"
"github.com/zeebo/bencode" "github.com/zeebo/bencode"
"net/http" "net/http"
"net/url"
"strings"
) )
// UploadForm serializing HTTP form for torrent upload // UploadForm serializing HTTP form for torrent upload
type UploadForm struct { type UploadForm struct {
Name string Name string
Magnet string Magnet string
Infohash string
Category string Category string
Description string Description string
} }
@ -85,8 +90,23 @@ func (f *UploadForm) ExtractInfo(r *http.Request) error {
} }
// generate magnet // generate magnet
f.Magnet = util.InfoHashToMagnet(torrent.Infohash(), f.Name) binInfoHash := torrent.Infohash()
f.Infohash = hex.EncodeToString(binInfoHash[:])
f.Magnet = util.InfoHashToMagnet(f.Infohash, f.Name)
} else {
magnetUrl, parseErr := url.Parse(f.Magnet)
if parseErr != nil {
return metainfo.ErrInvalidTorrentFile
}
fmt.Println(magnetUrl)
exactTopic := magnetUrl.Query().Get("xt")
if !strings.HasPrefix(exactTopic, "urn:btih:") {
return metainfo.ErrInvalidTorrentFile
} else {
f.Infohash = strings.ToUpper(strings.TrimPrefix(exactTopic, "urn:btih:"))
}
} }
return nil return nil
} }

Voir le fichier

@ -1,15 +1,13 @@
package util package util
import ( import (
"encoding/hex"
"fmt" "fmt"
"net/url" "net/url"
) )
// convert a binary infohash to a magnet uri given a display name and tracker urls // convert a binary infohash to a magnet uri given a display name and tracker urls
func InfoHashToMagnet(ih [20]byte, name string, trackers ...url.URL) (str string) { func InfoHashToMagnet(ih string, name string, trackers ...url.URL) (str string) {
str = hex.EncodeToString(ih[:]) str = fmt.Sprintf("magnet:?xt=urn:btih:%s", ih)
str = fmt.Sprintf("magnet:?xt=urn:btih:%s", str)
if len(name) > 0 { if len(name) > 0 {
str += fmt.Sprintf("&dn=%s", name) str += fmt.Sprintf("&dn=%s", name)
} }