-
Notifications
You must be signed in to change notification settings - Fork 46
/
model_codec.go
128 lines (109 loc) · 3.18 KB
/
model_codec.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package encodings
import (
"encoding/json"
"fmt"
"strings"
)
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See NOTICE.txt in the project root for license information.
type Codec interface {
}
func unmarshalCodecImplementation(input []byte) (Codec, error) {
if input == nil {
return nil, nil
}
var temp map[string]interface{}
if err := json.Unmarshal(input, &temp); err != nil {
return nil, fmt.Errorf("unmarshaling Codec into map[string]interface: %+v", err)
}
value, ok := temp["@odata.type"].(string)
if !ok {
return nil, nil
}
if strings.EqualFold(value, "#Microsoft.Media.AacAudio") {
var out AacAudio
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into AacAudio: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.Audio") {
var out Audio
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into Audio: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.CopyAudio") {
var out CopyAudio
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into CopyAudio: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.CopyVideo") {
var out CopyVideo
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into CopyVideo: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.DDAudio") {
var out DDAudio
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into DDAudio: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.H264Video") {
var out H264Video
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into H264Video: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.H265Video") {
var out H265Video
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into H265Video: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.Image") {
var out Image
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into Image: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.JpgImage") {
var out JpgImage
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into JpgImage: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.PngImage") {
var out PngImage
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into PngImage: %+v", err)
}
return out, nil
}
if strings.EqualFold(value, "#Microsoft.Media.Video") {
var out Video
if err := json.Unmarshal(input, &out); err != nil {
return nil, fmt.Errorf("unmarshaling into Video: %+v", err)
}
return out, nil
}
type RawCodecImpl struct {
Type string `json:"-"`
Values map[string]interface{} `json:"-"`
}
out := RawCodecImpl{
Type: value,
Values: temp,
}
return out, nil
}