diff options
author | Keuin <[email protected]> | 2023-07-01 22:06:01 +0800 |
---|---|---|
committer | Keuin <[email protected]> | 2023-07-01 22:06:01 +0800 |
commit | 8f07f6f4d7e91a9e4b7164a39759907fac5fb8a1 (patch) | |
tree | 512d18cd6b2c1b442c6c03945bd1328d2866bcbc /common/myurl/urlparse.go | |
parent | 5aba05d7237c2250e647a717f8abef658f30a9e9 (diff) |
Refactor: encapsulate custom url manipulation function into object method.
Diffstat (limited to 'common/myurl/urlparse.go')
-rw-r--r-- | common/myurl/urlparse.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/common/myurl/urlparse.go b/common/myurl/urlparse.go new file mode 100644 index 0000000..69695d1 --- /dev/null +++ b/common/myurl/urlparse.go @@ -0,0 +1,27 @@ +package myurl + +import ( + "errors" + "net/url" + "strings" +) + +type Url string + +func (o Url) Url() string { + return string(o) +} + +// FileExtension returns file extension of file name from this url. +// copied from https://elisegev.medium.com/get-a-file-extension-from-a-url-in-golang-5061d4a298a +func (o Url) FileExtension() (string, error) { + u, err := url.Parse(o.Url()) + if err != nil { + return "", err + } + pos := strings.LastIndex(u.Path, ".") + if pos == -1 { + return "", errors.New("couldn't find a period to indicate a file extension") + } + return u.Path[pos+1 : len(u.Path)], nil +} |