in datahub/implement.go [265:307]
func (datahub *DataHub) CreateTopicWithPara(projectName, topicName string, para *CreateTopicParameter) (*CreateTopicWithParaResult, error) {
if !util.CheckProjectName(projectName) {
return nil, NewInvalidParameterErrorWithMessage(projectNameInvalid)
}
if !util.CheckTopicName(topicName) {
return nil, NewInvalidParameterErrorWithMessage(topicNameInvalid)
}
if para == nil {
return nil, NewInvalidParameterErrorWithMessage(parameterNull)
}
if !util.CheckComment(para.Comment) {
return nil, NewInvalidParameterErrorWithMessage(commentInvalid)
}
if para.RecordType != TUPLE && para.RecordType != BLOB {
return nil, NewInvalidParameterErrorWithMessage(fmt.Sprintf("Invalid RecordType: %s", para.RecordType))
}
if para.RecordType == TUPLE && para.RecordSchema == nil {
return nil, NewInvalidParameterErrorWithMessage("Tuple topic must set RecordSchema")
}
if para.LifeCycle <= 0 {
return nil, NewInvalidParameterErrorWithMessage(lifecycleInvalid)
}
path := fmt.Sprintf(topicPath, projectName, topicName)
reqPara := &RequestParameter{
Header: map[string]string{httpHeaderContentType: httpJsonContent},
}
ctr := &CreateTopicRequest{
Action: "create",
ShardCount: para.ShardCount,
Lifecycle: para.LifeCycle,
RecordType: para.RecordType,
RecordSchema: para.RecordSchema,
Comment: para.Comment,
ExpandMode: para.ExpandMode,
}
_, commonResp, err := datahub.Client.Post(path, ctr, reqPara)
if err != nil {
return nil, err
}
return NewCreateTopicWithParaResult(commonResp)
}