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