summaryrefslogtreecommitdiff
path: root/importers/importer.go
diff options
context:
space:
mode:
authorJames Mills <prologic@shortcircuit.net.au>2020-03-28 12:16:45 +1000
committerJames Mills <prologic@shortcircuit.net.au>2020-03-28 12:16:45 +1000
commit88b96784ab4fd19b13d0076d64a95300483363ca (patch)
tree4e86be713c367f37dad1906849ec7a15ebbe7a9b /importers/importer.go
parent5100a108634cb63ae508669878b05ed5fa20c31a (diff)
Refactored video importers
Diffstat (limited to 'importers/importer.go')
-rw-r--r--importers/importer.go33
1 files changed, 33 insertions, 0 deletions
diff --git a/importers/importer.go b/importers/importer.go
new file mode 100644
index 0000000..c74d621
--- /dev/null
+++ b/importers/importer.go
@@ -0,0 +1,33 @@
+package importers
+
+import (
+ "errors"
+ "strings"
+)
+
+var (
+ ErrUnsupportedVideoURL = errors.New("error: unsupported video url")
+)
+
+type VideoInfo struct {
+ ID string `json:"id"`
+ Title string `json:"title"`
+ Description string `json:"description"`
+
+ VideoURL string `json:"video_url"`
+ ThumbnailURL string `json:"thumbnail_url"`
+}
+
+type Importer interface {
+ GetVideoInfo(url string) (VideoInfo, error)
+}
+
+func NewImporter(url string) (Importer, error) {
+ if strings.Contains(url, "youtube.com") || strings.HasPrefix(url, "youtube:") {
+ return &YoutubeImporter{}, nil
+ } else if strings.Contains(url, "youtube.com") || strings.HasPrefix(url, "youtube:") {
+ return &VimeoImporter{}, nil
+ } else {
+ return nil, ErrUnsupportedVideoURL
+ }
+}