mirror of
https://github.com/sot-tech/mochi.git
synced 2026-07-26 17:38:14 -07:00
Tracker.Conn API made more RESTful
This commit is contained in:
+18
-10
@@ -86,36 +86,41 @@ func (t *Tracker) ServeAnnounce(w http.ResponseWriter, r *http.Request, p httpro
|
||||
|
||||
func updateTorrent(c tracker.Conn, a *models.Announce, p *models.Peer, t *models.Torrent) (created bool, err error) {
|
||||
if !t.Active && a.Left == 0 {
|
||||
err = c.MarkActive(t)
|
||||
err = c.MarkActive(t.Infohash)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
t.Active = true
|
||||
}
|
||||
|
||||
switch {
|
||||
case t.InSeederPool(p):
|
||||
err = c.SetSeeder(t, p)
|
||||
err = c.PutSeeder(t.Infohash, p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
t.Seeders[p.Key()] = *p
|
||||
|
||||
case t.InLeecherPool(p):
|
||||
err = c.SetLeecher(t, p)
|
||||
err = c.PutLeecher(t.Infohash, p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
t.Leechers[p.Key()] = *p
|
||||
|
||||
default:
|
||||
if a.Left == 0 {
|
||||
err = c.AddSeeder(t, p)
|
||||
err = c.PutSeeder(t.Infohash, p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
t.Seeders[p.Key()] = *p
|
||||
} else {
|
||||
err = c.AddLeecher(t, p)
|
||||
err = c.PutLeecher(t.Infohash, p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
t.Leechers[p.Key()] = *p
|
||||
}
|
||||
created = true
|
||||
}
|
||||
@@ -127,27 +132,30 @@ func handleEvent(c tracker.Conn, a *models.Announce, p *models.Peer, u *models.U
|
||||
switch {
|
||||
case a.Event == "stopped" || a.Event == "paused":
|
||||
if t.InSeederPool(p) {
|
||||
err = c.RemoveSeeder(t, p)
|
||||
err = c.DeleteSeeder(t.Infohash, p.Key())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
delete(t.Seeders, p.Key())
|
||||
}
|
||||
if t.InLeecherPool(p) {
|
||||
err = c.RemoveLeecher(t, p)
|
||||
err = c.DeleteLeecher(t.Infohash, p.Key())
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
delete(t.Leechers, p.Key())
|
||||
}
|
||||
|
||||
case a.Event == "completed":
|
||||
err = c.IncrementSnatches(t)
|
||||
err = c.IncrementSnatches(t.Infohash)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
snatched = true
|
||||
t.Snatches++
|
||||
|
||||
if t.InLeecherPool(p) {
|
||||
err = tracker.LeecherFinished(c, t, p)
|
||||
err = tracker.LeecherFinished(c, t.Infohash, p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -155,7 +163,7 @@ func handleEvent(c tracker.Conn, a *models.Announce, p *models.Peer, u *models.U
|
||||
|
||||
case t.InLeecherPool(p) && a.Left == 0:
|
||||
// A leecher completed but the event was never received.
|
||||
err = tracker.LeecherFinished(c, t, p)
|
||||
err = tracker.LeecherFinished(c, t.Infohash, p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
@@ -32,21 +32,21 @@ func loadTestData(tkr *Tracker) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
err = conn.AddUser(&models.User{
|
||||
err = conn.PutUser(&models.User{
|
||||
ID: 1,
|
||||
Passkey: "yby47f04riwpndba456rqxtmifenqxx1",
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = conn.AddUser(&models.User{
|
||||
err = conn.PutUser(&models.User{
|
||||
ID: 2,
|
||||
Passkey: "yby47f04riwpndba456rqxtmifenqxx2",
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = conn.AddUser(&models.User{
|
||||
err = conn.PutUser(&models.User{
|
||||
ID: 3,
|
||||
Passkey: "yby47f04riwpndba456rqxtmifenqxx3",
|
||||
})
|
||||
@@ -54,7 +54,7 @@ func loadTestData(tkr *Tracker) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
err = conn.AddClient("TR2820")
|
||||
err = conn.PutClient("TR2820")
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
@@ -66,12 +66,12 @@ func loadTestData(tkr *Tracker) (err error) {
|
||||
Leechers: make(map[string]models.Peer),
|
||||
}
|
||||
|
||||
err = conn.AddTorrent(torrent)
|
||||
err = conn.PutTorrent(torrent)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = conn.AddLeecher(torrent, &models.Peer{
|
||||
err = conn.PutLeecher(torrent.Infohash, &models.Peer{
|
||||
ID: "-TR2820-l71jtqkl8xx1",
|
||||
UserID: 1,
|
||||
TorrentID: torrent.ID,
|
||||
@@ -83,7 +83,7 @@ func loadTestData(tkr *Tracker) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
err = conn.AddLeecher(torrent, &models.Peer{
|
||||
err = conn.PutLeecher(torrent.Infohash, &models.Peer{
|
||||
ID: "-TR2820-l71jtqkl8xx3",
|
||||
UserID: 3,
|
||||
TorrentID: torrent.ID,
|
||||
|
||||
+4
-4
@@ -45,7 +45,7 @@ func (t *Tracker) delTorrent(w http.ResponseWriter, r *http.Request, p httproute
|
||||
return http.StatusInternalServerError
|
||||
}
|
||||
|
||||
err = conn.RemoveTorrent(p.ByName("infohash"))
|
||||
err = conn.DeleteTorrent(p.ByName("infohash"))
|
||||
if err == tracker.ErrTorrentDNE {
|
||||
return http.StatusNotFound
|
||||
} else if err != nil {
|
||||
@@ -87,7 +87,7 @@ func (t *Tracker) delUser(w http.ResponseWriter, r *http.Request, p httprouter.P
|
||||
return http.StatusInternalServerError
|
||||
}
|
||||
|
||||
err = conn.RemoveUser(p.ByName("passkey"))
|
||||
err = conn.DeleteUser(p.ByName("passkey"))
|
||||
if err == tracker.ErrUserDNE {
|
||||
return http.StatusNotFound
|
||||
} else if err != nil {
|
||||
@@ -103,7 +103,7 @@ func (t *Tracker) putClient(w http.ResponseWriter, r *http.Request, p httprouter
|
||||
return http.StatusInternalServerError
|
||||
}
|
||||
|
||||
err = conn.FindClient(p.ByName("clientID"))
|
||||
err = conn.PutClient(p.ByName("clientID"))
|
||||
if err != nil {
|
||||
return http.StatusInternalServerError
|
||||
}
|
||||
@@ -117,7 +117,7 @@ func (t *Tracker) delClient(w http.ResponseWriter, r *http.Request, p httprouter
|
||||
return http.StatusInternalServerError
|
||||
}
|
||||
|
||||
err = conn.RemoveClient(p.ByName("clientID"))
|
||||
err = conn.DeleteClient(p.ByName("clientID"))
|
||||
if err != nil {
|
||||
return http.StatusInternalServerError
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user