Skip to content

Commit 123b9b6

Browse files
committed
Swift Package Manager Publishing using commandline throws error (#33990)
1 parent 2a59dfb commit 123b9b6

File tree

1 file changed

+43
-4
lines changed

1 file changed

+43
-4
lines changed

routers/api/packages/swift/swift.go

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,52 @@ func UploadPackageFile(ctx *context.Context) {
304304

305305
packageVersion := v.Core().String()
306306

307-
file, _, err := ctx.Req.FormFile("source-archive")
307+
// Get the multipart reader
308+
reader, err := ctx.Req.MultipartReader()
308309
if err != nil {
309-
apiError(ctx, http.StatusBadRequest, err)
310+
log.Error("Failed to get multipart reader: %v", err)
311+
apiError(ctx, http.StatusBadRequest, fmt.Errorf("invalid multipart form: %v", err))
312+
return
313+
}
314+
315+
var file io.Reader
316+
var metadata string
317+
318+
// Read through all parts
319+
for {
320+
part, err := reader.NextPart()
321+
if err == io.EOF {
322+
break
323+
}
324+
if err != nil {
325+
log.Error("Error reading multipart: %v", err)
326+
apiError(ctx, http.StatusBadRequest, fmt.Errorf("invalid multipart form: %v", err))
327+
return
328+
}
329+
330+
formName := part.FormName()
331+
fileName := part.FileName()
332+
333+
log.Debug("Processing form part - Name: %s, FileName: %s", formName, fileName)
334+
335+
if formName == "source-archive" {
336+
file = part
337+
} else if formName == "metadata" {
338+
metadataBytes, err := io.ReadAll(part)
339+
if err != nil {
340+
log.Error("Error reading metadata: %v", err)
341+
apiError(ctx, http.StatusBadRequest, fmt.Errorf("invalid metadata: %v", err))
342+
return
343+
}
344+
metadata = string(metadataBytes)
345+
}
346+
}
347+
348+
if file == nil {
349+
log.Error("No source-archive found in request")
350+
apiError(ctx, http.StatusBadRequest, errors.New("no source-archive found in request"))
310351
return
311352
}
312-
defer file.Close()
313353

314354
buf, err := packages_module.CreateHashedBufferFromReader(file)
315355
if err != nil {
@@ -319,7 +359,6 @@ func UploadPackageFile(ctx *context.Context) {
319359
defer buf.Close()
320360

321361
var mr io.Reader
322-
metadata := ctx.Req.FormValue("metadata")
323362
if metadata != "" {
324363
mr = strings.NewReader(metadata)
325364
}

0 commit comments

Comments
 (0)