/*
GoCheese -- Python private package repository and caching proxy
-Copyright (C) 2019-2021 Sergey Matveev <stargrave@stargrave.org>
- 2019-2021 Elena Balakhonova <balakhonova_e@riseup.net>
+Copyright (C) 2019-2022 Sergey Matveev <stargrave@stargrave.org>
+ 2019-2022 Elena Balakhonova <balakhonova_e@riseup.net>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
"crypto/sha256"
"encoding/hex"
"io"
- "io/ioutil"
"log"
"net/http"
"os"
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
- sig, err := ioutil.ReadAll(src)
+ sig, err := io.ReadAll(src)
src.Close()
if err != nil {
log.Println("error", r.RemoteAddr, filename, err)
var buf bytes.Buffer
wr := recfile.NewWriter(&buf)
- for formField, recField := range map[string]string{
- "name": MetadataFieldName,
- "version": MetadataFieldVersion,
- "platform": MetadataFieldPlatform,
- "supported_platform": MetadataFieldSupportedPlatform,
- "summary": MetadataFieldSummary,
- "description": MetadataFieldDescription,
- "description_content_type": MetadataFieldDescriptionContentType,
- "keywords": MetadataFieldKeywords,
- "home_page": MetadataFieldHomePage,
- "author": MetadataFieldAuthor,
- "author_email": MetadataFieldAuthorEmail,
- "maintainer": MetadataFieldMaintainer,
- "maintainer_email": MetadataFieldMaintainerEmail,
- "license": MetadataFieldLicense,
- "classifiers": MetadataFieldClassifier,
- "requires_dist": MetadataFieldRequiresDist,
- "requires_python": MetadataFieldRequiresPython,
- "requires_external": MetadataFieldRequiresExternal,
- "project_url": MetadataFieldProjectURL,
- "provides_extra": MetadataFieldProvidesExtra,
- } {
+ for _, m := range MDFormToRecField {
+ formField, recField := m[0], m[1]
if vs, exists := r.MultipartForm.Value[formField]; exists {
for _, v := range vs {
lines := strings.Split(v, "\n")
if len(lines) > 1 {
- _, err = wr.WriteFieldMultiline(
- metadataFieldToRecField(recField),
- lines,
- )
+ _, err = wr.WriteFieldMultiline(recField, lines)
} else {
_, err = wr.WriteFields(recfile.Field{
- Name: metadataFieldToRecField(recField),
+ Name: recField,
Value: lines[0],
})
}
}
}
}
- path := filepath.Join(dirPath, MetadataFile)
+ path := filepath.Join(dirPath, MDFile)
if err = WriteFileSync(dirPath, path, buf.Bytes(), now); err != nil {
log.Println("error", r.RemoteAddr, path, err)
http.Error(w, err.Error(), http.StatusInternalServerError)