url_options.go 636 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package options
  2. import (
  3. "strings"
  4. "github.com/imgproxy/imgproxy/v3/config"
  5. )
  6. type urlOption struct {
  7. Name string
  8. Args []string
  9. }
  10. type urlOptions []urlOption
  11. func parseURLOptions(opts []string) (urlOptions, []string) {
  12. parsed := make(urlOptions, 0, len(opts))
  13. urlStart := len(opts) + 1
  14. for i, opt := range opts {
  15. args := strings.Split(opt, config.ArgumentsSeparator)
  16. if len(args) == 1 {
  17. urlStart = i
  18. break
  19. }
  20. parsed = append(parsed, urlOption{Name: args[0], Args: args[1:]})
  21. }
  22. var rest []string
  23. if urlStart < len(opts) {
  24. rest = opts[urlStart:]
  25. } else {
  26. rest = []string{}
  27. }
  28. return parsed, rest
  29. }