func()

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)
}