-
-
Notifications
You must be signed in to change notification settings - Fork 212
/
fabricdl.go
48 lines (39 loc) · 1.23 KB
/
fabricdl.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package fabricdl
import (
"encoding/json"
"errors"
"github.com/pufferpanel/pufferpanel/v3"
"path"
)
const FabricMetadataUrl = "https://meta.fabricmc.net/v2/versions/installer"
type Fabricdl struct {
}
type FabricMetadata struct {
Url string `json:"url"`
}
func (f *Fabricdl) Run(env pufferpanel.Environment) pufferpanel.OperationResult {
env.DisplayToConsole(true, "Downloading metadata from %s\n", FabricMetadataUrl)
response, err := pufferpanel.HttpGet(FabricMetadataUrl)
if err != nil {
return pufferpanel.OperationResult{Error: err}
}
defer pufferpanel.Close(response.Body)
var metadata []FabricMetadata
err = json.NewDecoder(response.Body).Decode(&metadata)
if err != nil {
return pufferpanel.OperationResult{Error: err}
}
if len(metadata) == 0 {
err = errors.New("no metadata available from Fabric, unable to download installer")
return pufferpanel.OperationResult{Error: err}
}
file, err := pufferpanel.DownloadViaMaven(metadata[0].Url, env)
if err != nil {
return pufferpanel.OperationResult{Error: err}
}
err = pufferpanel.CopyFile(file, path.Join(env.GetRootDirectory(), "fabric-installer.jar"))
if err != nil {
return pufferpanel.OperationResult{Error: err}
}
return pufferpanel.OperationResult{Error: nil}
}