From 8f07f6f4d7e91a9e4b7164a39759907fac5fb8a1 Mon Sep 17 00:00:00 2001 From: Keuin Date: Sat, 1 Jul 2023 22:06:01 +0800 Subject: [PATCH] Refactor: encapsulate custom url manipulation function into object method. --- common/{ => myurl}/urlparse.go | 14 ++++++++++---- common/{ => myurl}/urlparse_test.go | 8 ++++---- recording/runner.go | 3 ++- 3 files changed, 16 insertions(+), 9 deletions(-) rename common/{ => myurl}/urlparse.go (61%) rename common/{ => myurl}/urlparse_test.go (65%) diff --git a/common/urlparse.go b/common/myurl/urlparse.go similarity index 61% rename from common/urlparse.go rename to common/myurl/urlparse.go index dc72cee..69695d1 100644 --- a/common/urlparse.go +++ b/common/myurl/urlparse.go @@ -1,4 +1,4 @@ -package common +package myurl import ( "errors" @@ -6,10 +6,16 @@ import ( "strings" ) -// GetFileExtensionFromUrl +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 GetFileExtensionFromUrl(rawUrl string) (string, error) { - u, err := url.Parse(rawUrl) +func (o Url) FileExtension() (string, error) { + u, err := url.Parse(o.Url()) if err != nil { return "", err } diff --git a/common/urlparse_test.go b/common/myurl/urlparse_test.go similarity index 65% rename from common/urlparse_test.go rename to common/myurl/urlparse_test.go index 9ed4449..b7df7bd 100644 --- a/common/urlparse_test.go +++ b/common/myurl/urlparse_test.go @@ -1,4 +1,4 @@ -package common +package myurl import "testing" @@ -12,15 +12,15 @@ func TestGetFileExtensionFromUrl(t *testing.T) { {Expected: "flv"}, } var err error - tests[0].Actual, err = GetFileExtensionFromUrl("http://www.example.com/index.html") + tests[0].Actual, err = Url("http://www.example.com/index.html").FileExtension() if err != nil { t.Fatalf("GetFileExtensionFromUrl: %v", err) } - tests[1].Actual, err = GetFileExtensionFromUrl("https://www.example.com/index.htm") + tests[1].Actual, err = Url("https://www.example.com/index.htm").FileExtension() if err != nil { t.Fatalf("GetFileExtensionFromUrl: %v", err) } - tests[2].Actual, err = GetFileExtensionFromUrl("https://www.example.com/video.flv?a=1&b=2flv") + tests[2].Actual, err = Url("https://www.example.com/video.flv?a=1&b=2flv").FileExtension() if err != nil { t.Fatalf("GetFileExtensionFromUrl: %v", err) } diff --git a/recording/runner.go b/recording/runner.go index 8f892fa..fe7aa21 100644 --- a/recording/runner.go +++ b/recording/runner.go @@ -12,6 +12,7 @@ import ( "fmt" "github.com/keuin/slbr/bilibili" "github.com/keuin/slbr/common" + "github.com/keuin/slbr/common/myurl" "github.com/keuin/slbr/logging" "github.com/samber/mo" "io" @@ -277,7 +278,7 @@ func record( var extName string // the real extension name (without renaming) - originalExtName := mo.TupleToResult(common.GetFileExtensionFromUrl(streamSource.URL)).OrElse("flv") + originalExtName := mo.TupleToResult(myurl.Url(streamSource.URL).FileExtension()).OrElse("flv") if task.Download.UseSpecialExtNameBeforeFinishing { extName = kSpecialExtName