portainer/portainer

View on GitHub
api/git/update/validate.go

Summary

Maintainability
A
35 mins
Test Coverage
package update

import (
    "time"

    "github.com/asaskevich/govalidator"
    portainer "github.com/portainer/portainer/api"
    httperrors "github.com/portainer/portainer/api/http/errors"
)

func ValidateAutoUpdateSettings(autoUpdate *portainer.AutoUpdateSettings) error {
    if autoUpdate == nil {
        return nil
    }

    if autoUpdate.Webhook == "" && autoUpdate.Interval == "" {
        return httperrors.NewInvalidPayloadError("Webhook or Interval must be provided")
    }

    if autoUpdate.Webhook != "" && !govalidator.IsUUID(autoUpdate.Webhook) {
        return httperrors.NewInvalidPayloadError("invalid Webhook format")
    }

    if autoUpdate.Interval != "" {
        if _, err := time.ParseDuration(autoUpdate.Interval); err != nil {
            return httperrors.NewInvalidPayloadError("invalid Interval format")
        }
    }

    return nil
}