package service import ( "strings" "github.com/QuantumNous/new-api/common" ) type AssetOperation string const ( AssetOperationAssetCreate AssetOperation = "asset.create" AssetOperationAssetList AssetOperation = "asset.list" AssetOperationAssetGet AssetOperation = "asset.get" AssetOperationAssetUpdate AssetOperation = "asset.update" AssetOperationAssetDelete AssetOperation = "asset.delete" AssetOperationAssetGroupCreate AssetOperation = "asset_group.create" AssetOperationAssetGroupList AssetOperation = "asset_group.list" AssetOperationAssetGroupGet AssetOperation = "asset_group.get" AssetOperationAssetGroupUpdate AssetOperation = "asset_group.update" AssetOperationAssetGroupDelete AssetOperation = "asset_group.delete" ) type AssetActionSpec struct { Action string Operation AssetOperation Delete bool } var assetActionSpecs = map[string]AssetActionSpec{ "createassetgroup": {Action: "CreateAssetGroup", Operation: AssetOperationAssetGroupCreate}, "createasset": {Action: "CreateAsset", Operation: AssetOperationAssetCreate}, "listassetgroups": {Action: "ListAssetGroups", Operation: AssetOperationAssetGroupList}, "listassets": {Action: "ListAssets", Operation: AssetOperationAssetList}, "getasset": {Action: "GetAsset", Operation: AssetOperationAssetGet}, "getassetgroup": {Action: "GetAssetGroup", Operation: AssetOperationAssetGroupGet}, "updateasset": {Action: "UpdateAsset", Operation: AssetOperationAssetUpdate}, "updateassetgroup": {Action: "UpdateAssetGroup", Operation: AssetOperationAssetGroupUpdate}, "deleteasset": {Action: "DeleteAsset", Operation: AssetOperationAssetDelete, Delete: true}, "deleteassetgroup": {Action: "DeleteAssetGroup", Operation: AssetOperationAssetGroupDelete, Delete: true}, } func ParseAssetAction(action string) (AssetActionSpec, bool) { spec, ok := assetActionSpecs[strings.ToLower(strings.TrimSpace(action))] return spec, ok } type assetResponseMetadata struct { RequestID string `json:"RequestId,omitempty"` Action string `json:"Action"` Version string `json:"Version"` Service string `json:"Service"` Region string `json:"Region"` } func BuildAssetSuccessResponse(action string, version string, result any) ([]byte, error) { return buildAssetSuccessResponseWithRequestID(action, version, "", result) } func buildAssetSuccessResponseWithRequestID(action string, version string, requestID string, result any) ([]byte, error) { if strings.TrimSpace(version) == "" { version = "2024-01-01" } payload := map[string]any{ "ResponseMetadata": assetResponseMetadata{ RequestID: requestID, Action: action, Version: version, Service: "ark", Region: "cn-beijing", }, } if result != nil { payload["Result"] = result } return common.Marshal(payload) }