exit if url or user/pass is wrong

This commit is contained in:
pyed 2016-07-05 07:42:00 +03:00
parent cc726dd758
commit 2fd5c8a1ce

View File

@ -36,6 +36,8 @@ var (
// interval in seconds for live updates, affects "active", "info", "speed" // interval in seconds for live updates, affects "active", "info", "speed"
interval time.Duration = 2 interval time.Duration = 2
// duration controls how many intervals will happen
duration = 10
) )
// init flags // init flags
@ -58,7 +60,7 @@ func init() {
// make sure that we have the two madatory arguments: telegram token & master's handler. // make sure that we have the two madatory arguments: telegram token & master's handler.
if BotToken == "" || if BotToken == "" ||
Master == "" { Master == "" {
fmt.Fprintf(os.Stderr, "Error: Mandatory argument missing!\n\n") fmt.Fprintf(os.Stderr, "Error: Mandatory argument missing! (-token or -master)\n\n")
flag.Usage() flag.Usage()
os.Exit(1) os.Exit(1)
} }
@ -71,29 +73,13 @@ func init() {
// init transmission // init transmission
func init() { func init() {
// set transmission.Config, needed to establish a connection with transmission var err error
// conf := transmission.Config{ Client, err = transmission.New(RpcUrl, Username, Password)
// Address: RpcUrl, if err != nil {
// User: Username, fmt.Fprintf(os.Stderr, "ERROR: Make sure you have the right URL, Username and Password\n")
// Password: Password, os.Exit(1)
// } }
// transmission.New() never returns an error, we will ignore it and test with client.Session.Update()
Client = transmission.New(RpcUrl, Username, Password)
// if err := Client.Session.Update(); err != nil {
// try to predict the error message, as it vague coming from pyed/transmission
// if strings.HasPrefix(err.Error(), "invalid character") { // means the user or the pass is wrong.
// fmt.Fprintf(os.Stderr, "Transmission's Username or Password is wrong.\n\n")
// } else { // any other error is probaby because of the URL
// fmt.Fprintf(os.Stderr, "Error: Couldn't connect to: %s\n", RpcUrl)
// fmt.Fprintf(os.Stderr, "Make sure to pass the right full RPC URL e.g. http://localhost:9091/transmission/rpc\n\n")
// }
// // send the vague error message too
// fmt.Fprintf(os.Stderr, "JSONError: %s\n", err)
// os.Exit(1)
// }
} }
// init telegram // init telegram
@ -486,9 +472,9 @@ func active(ud tgbotapi.Update) {
msgID := send(buf.String(), ud.Message.Chat.ID) msgID := send(buf.String(), ud.Message.Chat.ID)
// keep the active list live for 20 seconds // keep the active list live for 'duration * interval'
time.Sleep(time.Second * interval) time.Sleep(time.Second * interval)
for i := 0; i < 10; i++ { for i := 0; i < duration; i++ {
// reset the buffer to reuse it // reset the buffer to reuse it
buf.Reset() buf.Reset()
@ -839,10 +825,10 @@ func info(ud tgbotapi.Update, tokens []string) {
// send it // send it
msgID := send(info, ud.Message.Chat.ID) msgID := send(info, ud.Message.Chat.ID)
// this go-routine will make the info live for 20 seconds // this go-routine will make the info live for 'duration * interval'
// takes trackers so we don't have to regex them over and over. // takes trackers so we don't have to regex them over and over.
go func(trackers string, torrentID, msgID int) { go func(trackers string, torrentID, msgID int) {
for i := 0; i < 10; i++ { for i := 0; i < duration; i++ {
torrent, err := Client.GetTorrent(torrentID) torrent, err := Client.GetTorrent(torrentID)
if err != nil { if err != nil {
continue // skip this iteration if there's an error retrieving the torrent's info continue // skip this iteration if there's an error retrieving the torrent's info
@ -1038,7 +1024,7 @@ func stats(ud tgbotapi.Update) {
func speed(ud tgbotapi.Update) { func speed(ud tgbotapi.Update) {
// keep track of the returned message ID from 'send()' to edit the message. // keep track of the returned message ID from 'send()' to edit the message.
var msgID int var msgID int
for i := 0; i < 10; i++ { for i := 0; i < duration; i++ {
stats, err := Client.GetStats() stats, err := Client.GetStats()
if err != nil { if err != nil {
send("speed: "+err.Error(), ud.Message.Chat.ID) send("speed: "+err.Error(), ud.Message.Chat.ID)