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