-
Notifications
You must be signed in to change notification settings - Fork 44
/
model_update_chart_request_body.go
65 lines (56 loc) · 1.71 KB
/
model_update_chart_request_body.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
package model
import (
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/utils"
"encoding/json"
"errors"
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/def"
"os"
"reflect"
"strings"
)
type UpdateChartRequestBody struct {
// 上传模板的配置参数,示例如下:\"{\\\"override\\\":true,\\\"skip_lint\\\":true,\\\"source\\\":\\\"package\\\"}\" - skip_lint: whether lint uploaded chart - override: whether override existed chart - visible: update chart visible
Parameters *def.MultiPart `json:"parameters,omitempty"`
// 模板包文件
Content *def.FilePart `json:"content"`
}
func (o UpdateChartRequestBody) String() string {
data, err := utils.Marshal(o)
if err != nil {
return "UpdateChartRequestBody struct{}"
}
return strings.Join([]string{"UpdateChartRequestBody", string(data)}, " ")
}
func (o *UpdateChartRequestBody) UnmarshalJSON(b []byte) error {
m := make(map[string]interface{})
err := json.Unmarshal(b, &m)
if err != nil {
return err
}
t := reflect.TypeOf(o).Elem()
v := reflect.ValueOf(o).Elem()
count := v.NumField()
for i := 0; i < count; i++ {
jsonTag := t.Field(i).Tag.Get("json")
jsonName := strings.Split(jsonTag, ",")[0]
if m[jsonName] == nil && strings.Contains(jsonTag, "omitempty") {
continue
}
field := v.FieldByName(utils.UnderscoreToCamel(jsonName))
switch v.Field(i).Interface().(type) {
case *def.FilePart:
filePath := m[jsonName].(string)
file, err := os.Open(filePath)
if err != nil {
return err
}
field.Set(reflect.ValueOf(def.NewFilePart(file)))
case *def.MultiPart:
field.Set(reflect.ValueOf(def.NewMultiPart(m[jsonName])))
default:
return errors.New(fmt.Sprintf("unmarshal %s failed", m[jsonName]))
}
}
return nil
}