From 2a4d4c5aef4890beab324d81fc13d9b5a5e63c2a Mon Sep 17 00:00:00 2001 From: Justin Li Date: Wed, 16 Jul 2014 13:03:59 -0400 Subject: [PATCH] Simpler interface --- drivers/tracker/tracker.go | 6 +++--- http/announce.go | 4 ++-- http/announce_private_test.go | 5 ++--- http/api.go | 35 +++++------------------------------ http/scrape.go | 2 +- 5 files changed, 13 insertions(+), 39 deletions(-) diff --git a/drivers/tracker/tracker.go b/drivers/tracker/tracker.go index d57feaa..fa7eb11 100644 --- a/drivers/tracker/tracker.go +++ b/drivers/tracker/tracker.go @@ -69,6 +69,7 @@ type Pool interface { // Conn represents a connection to the data store that can be used // to make reads/writes. type Conn interface { + // Torrent interactions FindTorrent(infohash string) (*models.Torrent, error) PutTorrent(t *models.Torrent) error DeleteTorrent(infohash string) error @@ -78,14 +79,13 @@ type Conn interface { DeleteLeecher(infohash, peerkey string) error PutSeeder(infohash string, p *models.Peer) error DeleteSeeder(infohash, peerkey string) error -} -// PrivateConn represents a connection that can service queries for private trackers. -type PrivateConn interface { + // User interactions FindUser(passkey string) (*models.User, error) PutUser(u *models.User) error DeleteUser(passkey string) error + // Whitelist interactions FindClient(clientID string) error PutClient(clientID string) error DeleteClient(clientID string) error diff --git a/http/announce.go b/http/announce.go index 3761edb..15dde9c 100644 --- a/http/announce.go +++ b/http/announce.go @@ -30,7 +30,7 @@ func (t *Tracker) ServeAnnounce(w http.ResponseWriter, r *http.Request, p httpro } if t.cfg.Whitelist { - err = conn.(tracker.PrivateConn).FindClient(ann.ClientID()) + err = conn.FindClient(ann.ClientID()) if err == tracker.ErrClientUnapproved { fail(w, r, err) return http.StatusOK, nil @@ -41,7 +41,7 @@ func (t *Tracker) ServeAnnounce(w http.ResponseWriter, r *http.Request, p httpro var user *models.User if t.cfg.Private { - user, err = conn.(tracker.PrivateConn).FindUser(ann.Passkey) + user, err = conn.FindUser(ann.Passkey) if err == tracker.ErrUserDNE { fail(w, r, err) return http.StatusOK, nil diff --git a/http/announce_private_test.go b/http/announce_private_test.go index 3f39378..a265521 100644 --- a/http/announce_private_test.go +++ b/http/announce_private_test.go @@ -9,7 +9,6 @@ import ( "github.com/chihaya/bencode" "github.com/chihaya/chihaya/config" - "github.com/chihaya/chihaya/drivers/tracker" "github.com/chihaya/chihaya/models" ) @@ -76,7 +75,7 @@ func loadTestData(tkr *Tracker) error { } for i, passkey := range users { - err = conn.(tracker.PrivateConn).PutUser(&models.User{ + err = conn.PutUser(&models.User{ ID: uint64(i + 1), Passkey: passkey, }) @@ -86,7 +85,7 @@ func loadTestData(tkr *Tracker) error { } } - err = conn.(tracker.PrivateConn).PutClient("TR2820") + err = conn.PutClient("TR2820") if err != nil { return err } diff --git a/http/api.go b/http/api.go index cae7627..331e173 100644 --- a/http/api.go +++ b/http/api.go @@ -102,16 +102,11 @@ func (t *Tracker) delTorrent(w http.ResponseWriter, r *http.Request, p httproute } func (t *Tracker) getUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) (int, error) { - base, err := t.pool.Get() + conn, err := t.pool.Get() if err != nil { return http.StatusInternalServerError, err } - conn, private := base.(tracker.PrivateConn) - if !private { - return http.StatusNotFound, nil - } - user, err := conn.FindUser(p.ByName("passkey")) if err == tracker.ErrUserDNE { return http.StatusNotFound, err @@ -141,16 +136,11 @@ func (t *Tracker) putUser(w http.ResponseWriter, r *http.Request, p httprouter.P return http.StatusBadRequest, err } - base, err := t.pool.Get() + conn, err := t.pool.Get() if err != nil { return http.StatusInternalServerError, err } - conn, private := base.(tracker.PrivateConn) - if !private { - return http.StatusNotFound, nil - } - err = conn.PutUser(&user) if err != nil { return http.StatusInternalServerError, err @@ -160,16 +150,11 @@ func (t *Tracker) putUser(w http.ResponseWriter, r *http.Request, p httprouter.P } func (t *Tracker) delUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) (int, error) { - base, err := t.pool.Get() + conn, err := t.pool.Get() if err != nil { return http.StatusInternalServerError, err } - conn, private := base.(tracker.PrivateConn) - if !private { - return http.StatusNotFound, nil - } - err = conn.DeleteUser(p.ByName("passkey")) if err == tracker.ErrUserDNE { return http.StatusNotFound, err @@ -181,16 +166,11 @@ func (t *Tracker) delUser(w http.ResponseWriter, r *http.Request, p httprouter.P } func (t *Tracker) putClient(w http.ResponseWriter, r *http.Request, p httprouter.Params) (int, error) { - base, err := t.pool.Get() + conn, err := t.pool.Get() if err != nil { return http.StatusInternalServerError, err } - conn, private := base.(tracker.PrivateConn) - if !private { - return http.StatusNotFound, nil - } - err = conn.PutClient(p.ByName("clientID")) if err != nil { return http.StatusInternalServerError, err @@ -200,16 +180,11 @@ func (t *Tracker) putClient(w http.ResponseWriter, r *http.Request, p httprouter } func (t *Tracker) delClient(w http.ResponseWriter, r *http.Request, p httprouter.Params) (int, error) { - base, err := t.pool.Get() + conn, err := t.pool.Get() if err != nil { return http.StatusInternalServerError, err } - conn, private := base.(tracker.PrivateConn) - if !private { - return http.StatusNotFound, nil - } - err = conn.DeleteClient(p.ByName("clientID")) if err != nil { return http.StatusInternalServerError, err diff --git a/http/scrape.go b/http/scrape.go index 4dfdf08..b1135b2 100644 --- a/http/scrape.go +++ b/http/scrape.go @@ -29,7 +29,7 @@ func (t *Tracker) ServeScrape(w http.ResponseWriter, r *http.Request, p httprout } if t.cfg.Private { - _, err = conn.(tracker.PrivateConn).FindUser(scrape.Passkey) + _, err = conn.FindUser(scrape.Passkey) if err == tracker.ErrUserDNE { fail(w, r, err) return http.StatusOK, nil