endpoints.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package dynamicproxy
  2. import (
  3. "errors"
  4. "strings"
  5. )
  6. /*
  7. Endpoint Functions
  8. */
  9. // Get virtual directory handler from given URI
  10. func (ep *ProxyEndpoint) GetVirtualDirectoryHandlerFromRequestURI(requestURI string) *VirtualDirectoryEndpoint {
  11. for _, vdir := range ep.VirtualDirectories {
  12. if strings.HasPrefix(requestURI, vdir.MatchingPath) {
  13. return vdir
  14. }
  15. }
  16. return nil
  17. }
  18. // Get virtual directory handler by matching path (exact match required)
  19. func (ep *ProxyEndpoint) GetVirtualDirectoryRuleByMatchingPath(matchingPath string) *VirtualDirectoryEndpoint {
  20. for _, vdir := range ep.VirtualDirectories {
  21. if vdir.MatchingPath == matchingPath {
  22. return vdir
  23. }
  24. }
  25. return nil
  26. }
  27. func (ep *ProxyEndpoint) RemoveVirtualDirectoryRuleByMatchingPath(matchingPath string) error {
  28. entryFound := false
  29. newVirtualDirectoryList := []*VirtualDirectoryEndpoint{}
  30. for _, vdir := range ep.VirtualDirectories {
  31. if vdir.MatchingPath == matchingPath {
  32. entryFound = true
  33. } else {
  34. newVirtualDirectoryList = append(newVirtualDirectoryList, vdir)
  35. }
  36. }
  37. if entryFound {
  38. //Update the list of vdirs
  39. ep.VirtualDirectories = newVirtualDirectoryList
  40. return nil
  41. }
  42. return errors.New("target virtual directory routing rule not found")
  43. }