@@ -102,8 +102,9 @@ type SeedArtifact struct {
102102 Path string `json:"path,omitempty"`
103103}
104104
105- func seedFormats (params SeedGenerateParams ) ([]string , error ) {
106- formats := append ([]string (nil ), params .Formats ... )
105+ // NormalizeSeedFormats validates and deduplicates a list of seed format names.
106+ func NormalizeSeedFormats (rawFormats []string ) ([]string , error ) {
107+ formats := append ([]string (nil ), rawFormats ... )
107108 if len (formats ) == 1 && strings .TrimSpace (formats [0 ]) == "" {
108109 formats [0 ] = setting .GetStr (conf .SeedDefaultFormat , "oss" )
109110 }
@@ -129,6 +130,17 @@ func seedFormats(params SeedGenerateParams) ([]string, error) {
129130 return result , nil
130131}
131132
133+ func seedFormats (params SeedGenerateParams ) ([]string , error ) {
134+ formats , err := NormalizeSeedFormats (params .Formats )
135+ if err != nil {
136+ return nil , err
137+ }
138+ if len (formats ) == 0 {
139+ formats = []string {setting .GetStr (conf .SeedDefaultFormat , "oss" )}
140+ }
141+ return formats , nil
142+ }
143+
132144func seedMatrixEmpty (matrix SeedHashMatrix ) bool {
133145 return ! matrix .MD5 .Whole && ! matrix .MD5 .Pieces && ! matrix .SHA1 .Whole && ! matrix .SHA1 .Pieces && ! matrix .SHA256 .Whole && ! matrix .SHA256 .Pieces
134146}
@@ -205,7 +217,8 @@ func applySeedMatrix(file *torrent.SeedFile, matrix SeedHashMatrix) {
205217 }
206218}
207219
208- func encodeGeneratedSeed (seed * torrent.Seed , format string , standardPieces []byte ) ([]byte , error ) {
220+ // EncodeGeneratedSeed serializes a seed in the requested container format.
221+ func EncodeGeneratedSeed (seed * torrent.Seed , format string , standardPieces []byte ) ([]byte , error ) {
209222 if format != "torrent" {
210223 return torrent .EncodeSeed (seed , format )
211224 }
@@ -440,7 +453,7 @@ func GenerateSeedArtifacts(ctx context.Context, user *model.User, params SeedGen
440453 continue
441454 }
442455 seenFormats [format ] = struct {}{}
443- data , err := encodeGeneratedSeed (seed , format , globalHasher .GetPieceHashes ())
456+ data , err := EncodeGeneratedSeed (seed , format , globalHasher .GetPieceHashes ())
444457 if err != nil {
445458 return nil , nil , fmt .Errorf ("generate %s seed: %w" , format , err )
446459 }
0 commit comments