Преглед изворни кода

refactor: move remapping assets to media manager

Yeuoly пре 9 месеци
родитељ
комит
6adfe92393

+ 4 - 102
internal/core/plugin_manager/basic_manager/remap_assets.go

@@ -1,8 +1,6 @@
 package basic_manager
 
 import (
-	"fmt"
-
 	"github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
 )
 
@@ -11,107 +9,11 @@ func (r *BasicPluginRuntime) RemapAssets(
 	declaration *plugin_entities.PluginDeclaration,
 	assets map[string][]byte,
 ) error {
-	remapped_asset_ids := make(map[string]string)
-	remap := func(filename string) (string, error) {
-		if id, ok := remapped_asset_ids[filename]; ok {
-			return id, nil
-		}
-
-		file, ok := assets[filename]
-		if !ok {
-			return "", fmt.Errorf("file not found: %s", filename)
-		}
-
-		id, err := r.mediaManager.Upload(filename, file)
-		if err != nil {
-			return "", err
-		}
-
-		r.assets_ids = append(r.assets_ids, id)
-
-		remapped_asset_ids[filename] = id
-		return id, nil
-	}
-
-	var err error
-
-	if declaration.Model != nil {
-		if declaration.Model.IconSmall != nil {
-			if declaration.Model.IconSmall.EnUS != "" {
-				declaration.Model.IconSmall.EnUS, err = remap(declaration.Model.IconSmall.EnUS)
-				if err != nil {
-					return err
-				}
-			}
-
-			if declaration.Model.IconSmall.ZhHans != "" {
-				declaration.Model.IconSmall.ZhHans, err = remap(declaration.Model.IconSmall.ZhHans)
-				if err != nil {
-					return err
-				}
-			}
-
-			if declaration.Model.IconSmall.JaJp != "" {
-				declaration.Model.IconSmall.JaJp, err = remap(declaration.Model.IconSmall.JaJp)
-				if err != nil {
-					return err
-				}
-			}
-
-			if declaration.Model.IconSmall.PtBr != "" {
-				declaration.Model.IconSmall.PtBr, err = remap(declaration.Model.IconSmall.PtBr)
-				if err != nil {
-					return err
-				}
-			}
-		}
-
-		if declaration.Model.IconLarge != nil {
-			if declaration.Model.IconLarge.EnUS != "" {
-				declaration.Model.IconLarge.EnUS, err = remap(declaration.Model.IconLarge.EnUS)
-				if err != nil {
-					return err
-				}
-			}
-
-			if declaration.Model.IconLarge.ZhHans != "" {
-				declaration.Model.IconLarge.ZhHans, err = remap(declaration.Model.IconLarge.ZhHans)
-				if err != nil {
-					return err
-				}
-			}
-
-			if declaration.Model.IconLarge.JaJp != "" {
-				declaration.Model.IconLarge.JaJp, err = remap(declaration.Model.IconLarge.JaJp)
-				if err != nil {
-					return err
-				}
-			}
-
-			if declaration.Model.IconLarge.PtBr != "" {
-				declaration.Model.IconLarge.PtBr, err = remap(declaration.Model.IconLarge.PtBr)
-				if err != nil {
-					return err
-				}
-			}
-		}
-	}
-
-	if declaration.Tool != nil {
-		if declaration.Tool.Identity.Icon != "" {
-			declaration.Tool.Identity.Icon, err = remap(declaration.Tool.Identity.Icon)
-			if err != nil {
-				return err
-			}
-		}
-	}
-
-	if declaration.Icon != "" {
-		declaration.Icon, err = remap(declaration.Icon)
-		if err != nil {
-			return err
-		}
+	assets_ids, err := r.mediaManager.RemapAssets(declaration, assets)
+	if err != nil {
+		return err
 	}
 
+	r.assets_ids = assets_ids
 	return nil
 }

+ 12 - 0
internal/core/plugin_manager/manager.go

@@ -162,6 +162,18 @@ func (p *PluginManager) SavePackage(plugin_unique_identifier plugin_entities.Plu
 		return err
 	}
 
+	// get the assets
+	assets, err := package_decoder.Assets()
+	if err != nil {
+		return err
+	}
+
+	// remap the assets
+	_, err = p.mediaManager.RemapAssets(&declaration, assets)
+	if err != nil {
+		return err
+	}
+
 	unique_identifier, err := package_decoder.UniqueIdentity()
 	if err != nil {
 		return err

+ 114 - 0
internal/core/plugin_manager/media_manager/assets.go

@@ -0,0 +1,114 @@
+package media_manager
+
+import (
+	"fmt"
+
+	"github.com/langgenius/dify-plugin-daemon/internal/types/entities/plugin_entities"
+)
+
+func (m *MediaManager) RemapAssets(declaration *plugin_entities.PluginDeclaration, assets map[string][]byte) ([]string, error) {
+	remapped_asset_ids := make(map[string]string)
+	assets_ids := []string{}
+	remap := func(filename string) (string, error) {
+		if id, ok := remapped_asset_ids[filename]; ok {
+			return id, nil
+		}
+
+		file, ok := assets[filename]
+		if !ok {
+			return "", fmt.Errorf("file not found: %s", filename)
+		}
+
+		id, err := m.Upload(filename, file)
+		if err != nil {
+			return "", err
+		}
+
+		assets_ids = append(assets_ids, id)
+
+		remapped_asset_ids[filename] = id
+		return id, nil
+	}
+
+	var err error
+
+	if declaration.Model != nil {
+		if declaration.Model.IconSmall != nil {
+			if declaration.Model.IconSmall.EnUS != "" {
+				declaration.Model.IconSmall.EnUS, err = remap(declaration.Model.IconSmall.EnUS)
+				if err != nil {
+					return nil, err
+				}
+			}
+
+			if declaration.Model.IconSmall.ZhHans != "" {
+				declaration.Model.IconSmall.ZhHans, err = remap(declaration.Model.IconSmall.ZhHans)
+				if err != nil {
+					return nil, err
+				}
+			}
+
+			if declaration.Model.IconSmall.JaJp != "" {
+				declaration.Model.IconSmall.JaJp, err = remap(declaration.Model.IconSmall.JaJp)
+				if err != nil {
+					return nil, err
+				}
+			}
+
+			if declaration.Model.IconSmall.PtBr != "" {
+				declaration.Model.IconSmall.PtBr, err = remap(declaration.Model.IconSmall.PtBr)
+				if err != nil {
+					return nil, err
+				}
+			}
+		}
+
+		if declaration.Model.IconLarge != nil {
+			if declaration.Model.IconLarge.EnUS != "" {
+				declaration.Model.IconLarge.EnUS, err = remap(declaration.Model.IconLarge.EnUS)
+				if err != nil {
+					return nil, err
+				}
+			}
+
+			if declaration.Model.IconLarge.ZhHans != "" {
+				declaration.Model.IconLarge.ZhHans, err = remap(declaration.Model.IconLarge.ZhHans)
+				if err != nil {
+					return nil, err
+				}
+			}
+
+			if declaration.Model.IconLarge.JaJp != "" {
+				declaration.Model.IconLarge.JaJp, err = remap(declaration.Model.IconLarge.JaJp)
+				if err != nil {
+					return nil, err
+				}
+			}
+
+			if declaration.Model.IconLarge.PtBr != "" {
+				declaration.Model.IconLarge.PtBr, err = remap(declaration.Model.IconLarge.PtBr)
+				if err != nil {
+					return nil, err
+				}
+			}
+		}
+	}
+
+	if declaration.Tool != nil {
+		if declaration.Tool.Identity.Icon != "" {
+			declaration.Tool.Identity.Icon, err = remap(declaration.Tool.Identity.Icon)
+			if err != nil {
+				return nil, err
+			}
+		}
+	}
+
+	if declaration.Icon != "" {
+		declaration.Icon, err = remap(declaration.Icon)
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	return assets_ids, nil
+}