in client_job.go [326:363]
func (e *ExportConfiguration) UnmarshalJSON(data []byte) error {
c := map[string]interface{}{}
if err := json.Unmarshal(data, &c); err != nil {
return err
}
sinkMap := c["sink"].(map[string]interface{})
t := sinkMap["type"].(string)
var sink DataSink
sinkBytes, err := json.Marshal(sinkMap)
if err != nil {
return err
} else if string(DataSinkOSS) == t {
sink = &AliyunOSSSink{}
} else if string(DataSinkODPS) == t {
sink = &AliyunODPSSink{}
} else if string(DataSinkGENERAL) == t {
sink = &AliyunGeneralSink{}
} else { // TODO: other sinks to be implemented
return errors.New(fmt.Sprintf("unsupported sink type:%s", t))
}
if err = json.Unmarshal(sinkBytes, sink); err != nil {
return err
}
parameters := map[string]string{}
for k, v := range c["parameters"].(map[string]interface{}) {
parameters[k] = v.(string)
}
*e = ExportConfiguration{
FromTime: int64(c["fromTime"].(float64)),
ToTime: int64(c["toTime"].(float64)),
LogStore: c["logstore"].(string),
Parameters: parameters,
RoleArn: c["roleArn"].(string),
Version: ExportVersion(c["version"].(string)),
DataSink: sink,
}
return nil
}