func transResponseFormat()

in internal/service/handler.go [62:123]


func transResponseFormat(secret string, t model.ResponseType) (payload []byte, err error) {
	// alibaba cloud kms format
	if t == model.ResponseTypeForAliyunKMS {
		return []byte(secret), nil
	}

	var secretValue kmssdk.GetSecretValueResponseBody
	err = json.Unmarshal([]byte(secret), &secretValue)
	if err != nil {
		err = fmt.Errorf("unmarshal secret value error:%w", err)
		return
	}

	// aws format
	if t == model.ResponseTypeForAWSSecretManager {
		secretInfo := &model.SecretManagerResponse{
			Name:          *secretValue.SecretName,
			VersionId:     *secretValue.VersionId,
			SecretString:  *secretValue.SecretData,
			VersionStages: make([]string, 0),
			CreatedDate:   *secretValue.CreateTime,
		}
		if len(secretValue.VersionStages.VersionStage) > 0 {
			for _, v := range secretValue.VersionStages.VersionStage {
				secretInfo.VersionStages = append(secretInfo.VersionStages, *v)
			}
		}
		payload, err = json.MarshalIndent(secretInfo, "", "   ")
		if err != nil {
			err = fmt.Errorf("marshal secret info error:%w", err)
			return
		}
	}

	// vault kv format
	if t == model.ResponseTypeForVaultKvSecret {
		var data map[string]interface{}
		err = json.Unmarshal([]byte(*secretValue.SecretData), &data)
		if err != nil {
			err = errors.New("secret data not kv format")
			return
		}
		kvSecret := &model.KVSecret{
			Data: data,
			Metadata: &model.SecretMetadata{
				CreatedTime: *secretValue.CreateTime,
			},
		}

		kvV2SecretData := model.KvV2SecretData{
			Data: kvSecret,
		}

		payload, err = json.Marshal(kvV2SecretData)
		if err != nil {
			err = fmt.Errorf("marshal secret data error:%w", err)
			return
		}
	}

	return
}