-
Notifications
You must be signed in to change notification settings - Fork 1
/
updateInfo.go
93 lines (72 loc) · 2.53 KB
/
updateInfo.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
86
87
88
89
90
91
92
93
package updateApiClient
import (
"github.com/monaco-io/request"
)
const (
updateInfoPath = "/update-platform/programs/update/info"
NewConfigurationAndOrPlatformUpdateType = "NewConfigurationAndOrPlatform" // - РабочееОбновление
NewProgramOrRedactionUpdateType = "NewProgramOrRedaction" // - ПереходНаДругуюПрограммуИлиРедакцию
NewPlatformUpdateType = "NewPlatform" // Новая платформа
defaultPlatformVersion = "8.3.3.641"
)
type UpdateInfoRequest struct {
ProgramVersion
UpdateType string `json:"updateType"`
PlatformVersion string `json:"platformVersion"`
}
func (c *Client) GetUpdateInfo(programName, version string, updateTypeAndPlatformVersion ...string) (UpdateInfoResponse, error) {
var result UpdateInfoResponse
updateType := NewProgramOrRedactionUpdateType
platformVersion := defaultPlatformVersion
if len(updateTypeAndPlatformVersion) == 1 {
updateType = updateTypeAndPlatformVersion[0]
}
if len(updateTypeAndPlatformVersion) == 2 {
platformVersion = updateTypeAndPlatformVersion[1]
}
data := UpdateInfoRequest{
ProgramVersion{programName,
version},
updateType,
platformVersion,
}
resp, err := c.doRequest(apiRequest{
updateInfoPath,
request.POST,
data,
})
if err != nil {
return result, err
}
resp.Scan(&result)
return result, result.Error()
}
type UpdateInfoResponse struct {
ErrorResponse
ConfigurationUpdate ConfigurationUpdateInfo `json:"configurationUpdateResponse"`
PlatformUpdate PlatformUpdateInfo `json:"platformUpdateResponse"`
AdditionalParameters map[string]string `json:"additionalParameters"`
}
func (c UpdateInfoResponse) Error() error {
if len(c.ErrorName) == 0 {
return nil
}
return c.ErrorResponse
}
type ConfigurationUpdateInfo struct {
ConfigurationVersion string `json:"configurationVersion"`
Size int `json:"size"`
PlatformVersion string `json:"platformVersion"`
UpdateInfoUrl string `json:"updateInfoUrl"`
HowToUpdateInfoUrl string `json:"howToUpdateInfoUrl"`
UpgradeSequence []string `json:"upgradeSequence"`
ProgramVersionUin string `json:"programVersionUin"`
}
type PlatformUpdateInfo struct {
PlatformVersion string `json:"platformVersion"`
TransitionInfoUrl string `json:"transitionInfoUrl"`
ReleaseUrl string `json:"releaseUrl"`
DistributionUin string `json:"distributionUin"`
Size int `json:"size"`
Recommended bool `json:"recommended"`
}