summaryrefslogtreecommitdiff
path: root/importers/importer.go
diff options
context:
space:
mode:
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
+ }
+}