shithub: hell

ref: 7723acd54c4cc96d2784a1c6e1067f0b47fb81ca
dir: /filehandler.go/

View raw version
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
	
}