From 2d7fd60bae19072681bd5ea67006b781ba9a141c Mon Sep 17 00:00:00 2001 From: pyed Date: Sun, 3 Jul 2016 08:13:30 +0300 Subject: [PATCH] pass update instead of &update passing a pointer to update wasn't a good idea to begin with, if a new update hits while the first one still processing it could crash the whole program --- transmission-telegram.go | 96 ++++++++++++++++++++-------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/transmission-telegram.go b/transmission-telegram.go index f07e9ed..2bc25dc 100644 --- a/transmission-telegram.go +++ b/transmission-telegram.go @@ -134,79 +134,79 @@ func main() { switch command { case "list", "/list": // list torrents - go list(&update, tokens[1:]) + go list(update, tokens[1:]) case "head", "/head": // list the first 5 or n torrents - go head(&update, tokens[1:]) + go head(update, tokens[1:]) case "tail", "/tail": // list the last 5 or n torrents - go tail(&update, tokens[1:]) + go tail(update, tokens[1:]) case "downs", "/downs": // list downloading - go downs(&update) + go downs(update) case "seeding", "/seeding": // list seeding - go seeding(&update) + go seeding(update) case "paused", "/paused": // list puased torrents - go paused(&update) + go paused(update) case "checking", "/checking": // list verifying torrents - go checking(&update) + go checking(update) case "active", "/active": // list active torrents - go active(&update) + go active(update) case "errors", "/errors": // list torrents with errors - go errors(&update) + go errors(update) case "sort", "/sort": // sort torrents - go sort(&update, tokens[1:]) + go sort(update, tokens[1:]) case "trackers", "/trackers": // list trackers - go trackers(&update) + go trackers(update) case "add", "/add": // takes url to a torrent to add it - go add(&update, tokens[1:]) + go add(update, tokens[1:]) case "search", "/search", "grep", "/grep": // search for a torrent - go search(&update, tokens[1:]) + go search(update, tokens[1:]) case "latest", "/latest": // get the latest torrents - go latest(&update, tokens[1:]) + go latest(update, tokens[1:]) case "info", "/info": // gets info on specific torrent - go info(&update, tokens[1:]) + go info(update, tokens[1:]) case "stop", "/stop": // stop one torrent or more - go stop(&update, tokens[1:]) + go stop(update, tokens[1:]) case "start", "/start": // starts one torrent or more - go start(&update, tokens[1:]) + go start(update, tokens[1:]) case "check", "/check": // verify a torrent or torrents - go check(&update, tokens[1:]) + go check(update, tokens[1:]) case "stats", "/stats": // print transmission stats - go stats(&update) + go stats(update) case "speed", "/speed": // print current download and upload speeds @@ -214,25 +214,25 @@ func main() { case "count", "/count": // sends current torrents count per status - go count(&update) + go count(update) case "del", "/del": // deletes a torrent but keep its data - go del(&update, tokens[1:]) + go del(update, tokens[1:]) case "deldata", "/deldata": // deletes a torrents and its data - go deldata(&update, tokens[1:]) + go deldata(update, tokens[1:]) case "help", "/help": // prints a help message case "version", "/version": // print transmission and transmission-telegram versions - go version(&update) + go version(update) case "": // might be a file received - go receiveTorrent(&update) + go receiveTorrent(update) default: // no such command, try help @@ -243,7 +243,7 @@ func main() { } // list will form and send a list of all the torrents -func list(ud *tgbotapi.Update, tokens []string) { +func list(ud tgbotapi.Update, tokens []string) { torrents, err := Client.GetTorrents() if err != nil { send("list: "+err.Error(), ud.Message.Chat.ID) @@ -280,7 +280,7 @@ func list(ud *tgbotapi.Update, tokens []string) { } // head will list the first 5 or n torrents -func head(ud *tgbotapi.Update, tokens []string) { +func head(ud tgbotapi.Update, tokens []string) { var ( n = 5 // default to 5 err error @@ -319,7 +319,7 @@ func head(ud *tgbotapi.Update, tokens []string) { } // tail lists the last 5 or n torrents -func tail(ud *tgbotapi.Update, tokens []string) { +func tail(ud tgbotapi.Update, tokens []string) { var ( n = 5 // default to 5 err error @@ -357,7 +357,7 @@ func tail(ud *tgbotapi.Update, tokens []string) { } // downs will send the names of torrents with status 'Downloading' or in queue to -func downs(ud *tgbotapi.Update) { +func downs(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("downs: "+err.Error(), ud.Message.Chat.ID) @@ -381,7 +381,7 @@ func downs(ud *tgbotapi.Update) { } // seeding will send the names of the torrents with the status 'Seeding' or in the queue to -func seeding(ud *tgbotapi.Update) { +func seeding(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("seeding: "+err.Error(), ud.Message.Chat.ID) @@ -406,7 +406,7 @@ func seeding(ud *tgbotapi.Update) { } // paused will send the names of the torrents with status 'Paused' -func paused(ud *tgbotapi.Update) { +func paused(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("paused: "+err.Error(), ud.Message.Chat.ID) @@ -432,7 +432,7 @@ func paused(ud *tgbotapi.Update) { } // checking will send the names of torrents with the status 'verifying' or in the queue to -func checking(ud *tgbotapi.Update) { +func checking(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("checking: "+err.Error(), ud.Message.Chat.ID) @@ -459,7 +459,7 @@ func checking(ud *tgbotapi.Update) { } // active will send torrents that are actively downloading or uploading -func active(ud *tgbotapi.Update) { +func active(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("active: "+err.Error(), ud.Message.Chat.ID) @@ -484,7 +484,7 @@ func active(ud *tgbotapi.Update) { } // errors will send torrents with errors -func errors(ud *tgbotapi.Update) { +func errors(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("errors: "+err.Error(), ud.Message.Chat.ID) @@ -506,7 +506,7 @@ func errors(ud *tgbotapi.Update) { } // sort changes torrents sorting -func sort(ud *tgbotapi.Update, tokens []string) { +func sort(ud tgbotapi.Update, tokens []string) { if len(tokens) == 0 { send(`sort takes one of (id, name, age, size, progress, downspeed, upspeed, download, upload, ratio) optionally start with (rev) for reversed order @@ -596,7 +596,7 @@ func sort(ud *tgbotapi.Update, tokens []string) { var trackerRegex = regexp.MustCompile(`[https?|udp]://([^:/]*)`) // trackers will send a list of trackers and how many torrents each one has -func trackers(ud *tgbotapi.Update) { +func trackers(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("trackers: "+err.Error(), ud.Message.Chat.ID) @@ -633,7 +633,7 @@ func trackers(ud *tgbotapi.Update) { } // add takes an URL to a .torrent file to add it to transmission -func add(ud *tgbotapi.Update, tokens []string) { +func add(ud tgbotapi.Update, tokens []string) { if len(tokens) == 0 { send("add: needs atleast one URL", ud.Message.Chat.ID) return @@ -659,7 +659,7 @@ func add(ud *tgbotapi.Update, tokens []string) { } // receiveTorrent gets an update that potentially has a .torrent file to add -func receiveTorrent(ud *tgbotapi.Update) { +func receiveTorrent(ud tgbotapi.Update) { if ud.Message.Document.FileID == "" { return // has no document } @@ -677,7 +677,7 @@ func receiveTorrent(ud *tgbotapi.Update) { } // search takes a query and returns torrents with match -func search(ud *tgbotapi.Update, tokens []string) { +func search(ud tgbotapi.Update, tokens []string) { // make sure that we got a query if len(tokens) == 0 { send("search: needs an argument", ud.Message.Chat.ID) @@ -712,7 +712,7 @@ func search(ud *tgbotapi.Update, tokens []string) { } // latest takes n and returns the latest n torrents -func latest(ud *tgbotapi.Update, tokens []string) { +func latest(ud tgbotapi.Update, tokens []string) { var ( n = 5 // default to 5 err error @@ -752,7 +752,7 @@ func latest(ud *tgbotapi.Update, tokens []string) { } // info takes an id of a torrent and returns some info about it -func info(ud *tgbotapi.Update, tokens []string) { +func info(ud tgbotapi.Update, tokens []string) { if len(tokens) == 0 { send("info: needs a torrent ID number", ud.Message.Chat.ID) return @@ -784,7 +784,7 @@ func info(ud *tgbotapi.Update, tokens []string) { } // stop takes id[s] of torrent[s] or 'all' to stop them -func stop(ud *tgbotapi.Update, tokens []string) { +func stop(ud tgbotapi.Update, tokens []string) { // make sure that we got at least one argument if len(tokens) == 0 { send("stop: needs an argument", ud.Message.Chat.ID) @@ -823,7 +823,7 @@ func stop(ud *tgbotapi.Update, tokens []string) { } // start takes id[s] of torrent[s] or 'all' to start them -func start(ud *tgbotapi.Update, tokens []string) { +func start(ud tgbotapi.Update, tokens []string) { // make sure that we got at least one argument if len(tokens) == 0 { send("start: needs an argument", ud.Message.Chat.ID) @@ -863,7 +863,7 @@ func start(ud *tgbotapi.Update, tokens []string) { } // check takes id[s] of torrent[s] or 'all' to verify them -func check(ud *tgbotapi.Update, tokens []string) { +func check(ud tgbotapi.Update, tokens []string) { // make sure that we got at least one argument if len(tokens) == 0 { send("check: needs an argument", ud.Message.Chat.ID) @@ -904,7 +904,7 @@ func check(ud *tgbotapi.Update, tokens []string) { } // stats echo back transmission stats -func stats(ud *tgbotapi.Update) { +func stats(ud tgbotapi.Update) { stats, err := Client.GetStats() if err != nil { send("stats: "+err.Error(), ud.Message.Chat.ID) @@ -976,7 +976,7 @@ func speed(ud tgbotapi.Update) { } // count returns current torrents count per status -func count(ud *tgbotapi.Update) { +func count(ud tgbotapi.Update) { torrents, err := Client.GetTorrents() if err != nil { send("count: "+err.Error(), ud.Message.Chat.ID) @@ -1012,7 +1012,7 @@ func count(ud *tgbotapi.Update) { } // del takes an id or more, and delete the corresponding torrent/s -func del(ud *tgbotapi.Update, tokens []string) { +func del(ud tgbotapi.Update, tokens []string) { // make sure that we got an argument if len(tokens) == 0 { send("del: needs an ID", ud.Message.Chat.ID) @@ -1038,7 +1038,7 @@ func del(ud *tgbotapi.Update, tokens []string) { } // deldata takes an id or more, and delete the corresponding torrent/s with their data -func deldata(ud *tgbotapi.Update, tokens []string) { +func deldata(ud tgbotapi.Update, tokens []string) { // make sure that we got an argument if len(tokens) == 0 { send("deldata: needs an ID", ud.Message.Chat.ID) @@ -1065,7 +1065,7 @@ func deldata(ud *tgbotapi.Update, tokens []string) { // help // version sends transmission version + transmission-telegram version -func version(ud *tgbotapi.Update) { +func version(ud tgbotapi.Update) { send(fmt.Sprintf("Transmission %s\nTransmission-telegram %s", Client.Version(), VERSION), ud.Message.Chat.ID) }