renamed ImageUploadRequired to ImageExistOnPiwigo
Added ImageCheckFile to check the piwigo file state
This commit is contained in:
parent
00404788cb
commit
58b5b79b34
@ -28,21 +28,58 @@ type fileAddResponse struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type imageExistResponse struct {
|
type imageExistResponse struct {
|
||||||
Stat string `json:"stat"`
|
Status string `json:"stat"`
|
||||||
Result map[string]string `json:"result"`
|
Result map[string]string `json:"result"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func ImageUploadRequired(context PiwigoFormPoster, md5sums []string) ([]string, error) {
|
type checkFilesResponse struct {
|
||||||
//TODO: make sure to split to multiple queries -> to honor max upload queries
|
Status string `json:"stat"`
|
||||||
//TODO: Make sure to return the found imageIds of the found sums to update the local image nodes
|
Result struct {
|
||||||
|
File string `json:"file"`
|
||||||
|
} `json:"result"`
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
ImageStateInvalid = -1
|
||||||
|
ImageStateUptodate = 0
|
||||||
|
ImageStateDifferent = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
func ImageCheckFile(context PiwigoFormPoster, piwigoId int, md5sum string) (int, error) {
|
||||||
|
formData := url.Values{}
|
||||||
|
formData.Set("method", "pwg.images.exist")
|
||||||
|
formData.Set("image_id", strconv.Itoa(piwigoId))
|
||||||
|
formData.Set("file_sum", md5sum)
|
||||||
|
|
||||||
|
logrus.Tracef("Checking if file %s - %d needs to be uploaded", md5sum, piwigoId)
|
||||||
|
|
||||||
|
response, err := context.postForm(formData)
|
||||||
|
if err != nil {
|
||||||
|
return ImageStateInvalid, err
|
||||||
|
}
|
||||||
|
defer response.Body.Close()
|
||||||
|
|
||||||
|
var checkFilesResponse checkFilesResponse
|
||||||
|
if err := json.NewDecoder(response.Body).Decode(&checkFilesResponse); err != nil {
|
||||||
|
logrus.Errorln(err)
|
||||||
|
return ImageStateInvalid, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if checkFilesResponse.Result.File == "equals" {
|
||||||
|
return ImageStateUptodate, nil
|
||||||
|
}
|
||||||
|
return ImageStateDifferent, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ImagesExistOnPiwigo(context PiwigoFormPoster, md5sums []string) (map[string]int, error) {
|
||||||
|
//TODO: make sure to split to multiple queries -> to honor max upload queries
|
||||||
md5sumList := strings.Join(md5sums, ",")
|
md5sumList := strings.Join(md5sums, ",")
|
||||||
|
|
||||||
formData := url.Values{}
|
formData := url.Values{}
|
||||||
formData.Set("method", "pwg.images.exist")
|
formData.Set("method", "pwg.images.exist")
|
||||||
formData.Set("md5sum_list", md5sumList)
|
formData.Set("md5sum_list", md5sumList)
|
||||||
|
|
||||||
logrus.Tracef("Looking up missing files: %s", md5sumList)
|
logrus.Tracef("Looking up if files exist: %s", md5sumList)
|
||||||
|
|
||||||
response, err := context.postForm(formData)
|
response, err := context.postForm(formData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -56,16 +93,24 @@ func ImageUploadRequired(context PiwigoFormPoster, md5sums []string) ([]string,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
missingFiles := make([]string, 0, len(imageExistResponse.Result))
|
existResults := make(map[string]int, len(imageExistResponse.Result))
|
||||||
|
|
||||||
for key, value := range imageExistResponse.Result {
|
for key, value := range imageExistResponse.Result {
|
||||||
if value == "" {
|
if value == "" {
|
||||||
logrus.Tracef("Missing file with md5sum: %s", key)
|
logrus.Tracef("Missing file with md5sum: %s", key)
|
||||||
missingFiles = append(missingFiles, key)
|
existResults[key] = 0
|
||||||
|
} else {
|
||||||
|
piwigoId, err := strconv.Atoi(value)
|
||||||
|
if err != nil {
|
||||||
|
logrus.Warnf("could not parse piwigoid of file %s", key)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
logrus.Tracef("Found piwigo id %d for md5sum %s", piwigoId, key)
|
||||||
|
existResults[key] = piwigoId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return missingFiles, nil
|
return existResults, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func UploadImage(context PiwigoFormPoster, filePath string, md5sum string, category int) (int, error) {
|
func UploadImage(context PiwigoFormPoster, filePath string, md5sum string, category int) (int, error) {
|
||||||
|
Loading…
Reference in New Issue
Block a user