generated from hashicorp/terraform-provider-scaffolding-framework
/
available_languages.go
85 lines (74 loc) · 1.52 KB
/
available_languages.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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package helpers
import (
"encoding/json"
"fmt"
"io"
"net/http"
"strings"
)
// Languages is the available language list.
// var Languages, _ = GetLanguages().
var Languages = []string{
"Unknown",
"English",
"French",
"Spanish",
"German",
"Italian",
"Danish",
"Dutch",
"Japanese",
"Icelandic",
"Chinese",
"Russian",
"Polish",
"Vietnamese",
"Swedish",
"Norwegian",
"Finnish",
"Turkish",
"Portuguese",
"Flemish",
"Greek",
"Korean",
"Hungarian",
"Hebrew",
"Lithuanian",
"Czech",
"Arabic",
"Hindi",
"Bulgarian",
"Malayalam",
"Ukrainian",
}
// GetLanguages pull languages from Sonarr source code and converts it to slice.
// using static slice to avoid github dependency.
func GetLanguages() ([]string, error) {
var languages []string
resp, err := http.Get("https://raw.githubusercontent.com/Sonarr/Sonarr/develop/src/NzbDrone.Core/Languages/Language.cs")
if err != nil {
fmt.Println(err)
return nil, err
}
defer resp.Body.Close()
b, err := io.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return nil, err
}
r := strings.NewReplacer(" ", "", "\n", "\"", ",", "\",", "{", "[", "}", "]")
if err := json.Unmarshal([]byte(r.Replace(strings.Split(strings.Split(string(b), "return new List<Language>\n")[1], ";")[0])), &languages); err != nil {
panic(err)
}
return languages, nil
}
// GetLanguageID retrieve language ID of a given language.
func GetLanguageID(language string) int64 {
languages := Languages
for i, l := range languages {
if l == language {
return int64(i)
}
}
return 0
}