]> Sergey Matveev's repositories - mmfileget.git/blob - main.go
Better .netrc handling
[mmfileget.git] / main.go
1 package main
2
3 import (
4         "fmt"
5         "io/ioutil"
6         "os"
7         "strings"
8
9         "github.com/mattermost/mattermost-server/v5/model"
10 )
11
12 func main() {
13         url := strings.TrimPrefix(os.Args[1], "-") // -?https://MACHINE/api/v4/files/FILE
14         s := strings.Split(url, "/")
15         machine, fileId := s[2], s[6]
16
17         login, password := findInNetrc(machine)
18         if login == "" || password == "" {
19                 fmt.Fprintln(os.Stderr, "No credentials found for:", machine)
20                 os.Exit(1)
21         }
22
23         Client := model.NewAPIv4Client("https://" + machine)
24         Client.Login(login, password)
25         info, resp := Client.GetFileInfo(fileId)
26         if info == nil {
27                 fmt.Fprintln(os.Stderr, resp)
28                 os.Exit(1)
29         }
30         filename := info.Name
31         if len(os.Args) > 2 {
32                 filename = os.Args[2]
33         } else {
34                 fmt.Fprintln(os.Stderr, "Name:", info.Name)
35                 fmt.Fprintln(os.Stderr, "Type:", info.MimeType)
36                 fmt.Fprintln(os.Stderr, "Size:", info.Size)
37                 fmt.Fprintln(os.Stderr, "Download? Ctrl-D/C")
38                 os.Stdin.Read(make([]byte, 1))
39         }
40         data, _ := Client.GetFile(fileId)
41         if err := ioutil.WriteFile(filename, data, os.FileMode(0666)); err != nil {
42                 panic(err)
43         }
44 }