// +build !rm_basic_commands allcommands downloadcmd

package main

import (
	"fmt"
	"strconv"
)

func init() {
	command := Command{
		Cmd:         []string{"download", "d"},
		Description: "$messageId $fileName - Download a file to user's downloadpath",
		Help:        "",
		Exec:        cmdDownloadFile,
	}

	RegisterCommand(command)
}

func cmdDownloadFile(cmd []string) {

	if len(cmd) < 2 {
		printInfo(fmt.Sprintf("%s%s $messageId $fileName - Download a file to user's downloadpath", cmdPrefix, cmd[0]))
		return
	}
	messageID, err := strconv.Atoi(cmd[1])
	if err != nil {
		printError("There was an error converting your messageID to an int")
		return
	}
	chat := k.NewChat(channel)
	api, err := chat.ReadMessage(messageID)
	if err != nil {
		printError(fmt.Sprintf("There was an error pulling message %d", messageID))
		return
	}
	if api.Result.Messages[0].Msg.Content.Type != "attachment" {
		printError("No attachment detected")
		return
	}
	var fileName string
	if len(cmd) == 3 {
		fileName = cmd[2]
	} else {
		fileName = api.Result.Messages[0].Msg.Content.Attachment.Object.Filename
	}

	_, err = chat.Download(messageID, fmt.Sprintf("%s/%s", downloadPath, fileName))
	channelName := messageLinkKeybaseColor.stylize(channel.Name)
	if err != nil {
		printErrorF(fmt.Sprintf("There was an error downloading %s from $TEXT", fileName), channelName)
	} else {
		printInfoF(fmt.Sprintf("Downloaded %s from $TEXT", fileName), channelName)
	}
}