| package getter |
| |
| import ( |
| "strings" |
| ) |
| |
| // SourceDirSubdir takes a source and returns a tuple of the URL without |
| // the subdir and the URL with the subdir. |
| func SourceDirSubdir(src string) (string, string) { |
| // Calcaulate an offset to avoid accidentally marking the scheme |
| // as the dir. |
| var offset int |
| if idx := strings.Index(src, "://"); idx > -1 { |
| offset = idx + 3 |
| } |
| |
| // First see if we even have an explicit subdir |
| idx := strings.Index(src[offset:], "//") |
| if idx == -1 { |
| return src, "" |
| } |
| |
| idx += offset |
| subdir := src[idx+2:] |
| src = src[:idx] |
| |
| // Next, check if we have query parameters and push them onto the |
| // URL. |
| if idx = strings.Index(subdir, "?"); idx > -1 { |
| query := subdir[idx:] |
| subdir = subdir[:idx] |
| src += query |
| } |
| |
| return src, subdir |
| } |