ref: 7723acd54c4cc96d2784a1c6e1067f0b47fb81ca
dir: /filehandler.go/
package main
import (
"path"
"net/url"
"net/http"
"os"
"io"
"github.com/mattn/go-mastodon"
"fmt"
"strings"
"os/exec"
)
func downloadPostImages(target *mastodon.Status, commandstring string) (err error){
var files []*os.File
var pathnames []string
for media := range target.MediaAttachments {
err, mediafile := downloadImage(target.MediaAttachments[media].URL)
if(err != nil) {
fmt.Printf("Media download error:%v\n", err)
}
defer os.Remove(mediafile.Name())
files = append(files, mediafile)
pathnames = append(pathnames, mediafile.Name())
}
//pathargument := strings.Join(pathnames," ")
args := strings.Fields(commandstring)
var command string
if(len(args) > 0) {
command = args[0]
args = args[1:]
}
args = append(args, pathnames...)
cmd := exec.Command(command, args...)
err = cmd.Run()
return
}
func downloadImage(target string) (err error, file *os.File) {
response, err := http.Get(target)
parsedurl, err := url.Parse(target)
filename := path.Base(parsedurl.Path)
file, err = os.CreateTemp("","*"+filename)
if err != nil {
return
}
if response.StatusCode != http.StatusOK {
return
}
_, err = io.Copy(file, response.Body)
if err != nil {
return
}
if err != nil {
return
}
defer response.Body.Close()
return
}