summaryrefslogtreecommitdiff
path: root/data/datasource.go
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2018-07-12 21:38:10 -0400
committerDave Henderson <dhenderson@gmail.com>2018-07-12 21:41:39 -0400
commit9fd905bb044e65f1e28015fff4841f485d02f0fe (patch)
treef37684881e5b1b9f43822e21421a598d6025dafc /data/datasource.go
parentbd84f71f469a541cfb9eae325d9712a065ba5d9c (diff)
Require alias for defineDatasource
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'data/datasource.go')
-rw-r--r--data/datasource.go48
1 files changed, 30 insertions, 18 deletions
diff --git a/data/datasource.go b/data/datasource.go
index b0e55439..cf2f87a3 100644
--- a/data/datasource.go
+++ b/data/datasource.go
@@ -190,25 +190,33 @@ func ParseSource(value string) (*Source, error) {
}
} else if len(parts) == 2 {
alias = parts[0]
- if parts[1] == "-" {
- parts[1] = "stdin://"
- }
- srcURL, err = url.Parse(parts[1])
+ srcURL, err = parseSourceURL(parts[1])
if err != nil {
return nil, err
}
-
- if !srcURL.IsAbs() {
- srcURL, err = absURL(parts[1])
- if err != nil {
- return nil, err
- }
- }
}
return NewSource(alias, srcURL)
}
+func parseSourceURL(value string) (*url.URL, error) {
+ if value == "-" {
+ value = "stdin://"
+ }
+ srcURL, err := url.Parse(value)
+ if err != nil {
+ return nil, err
+ }
+
+ if !srcURL.IsAbs() {
+ srcURL, err = absURL(value)
+ if err != nil {
+ return nil, err
+ }
+ }
+ return srcURL, nil
+}
+
func absURL(value string) (*url.URL, error) {
cwd, err := os.Getwd()
if err != nil {
@@ -226,23 +234,27 @@ func absURL(value string) (*url.URL, error) {
}
// DefineDatasource -
-func (d *Data) DefineDatasource(alias, value string) error {
+func (d *Data) DefineDatasource(alias, value string) (*Source, error) {
+ if alias == "" {
+ return nil, errors.New("datasource alias must be provided")
+ }
if d.DatasourceExists(alias) {
- return nil
+ return d.Sources[alias], nil
}
- if alias != "" {
- alias = alias + "="
+ srcURL, err := parseSourceURL(value)
+ if err != nil {
+ return nil, err
}
- s, err := ParseSource(alias + value)
+ s, err := NewSource(alias, srcURL)
if err != nil {
- return err
+ return nil, err
}
s.Header = d.extraHeaders[s.Alias]
if d.Sources == nil {
d.Sources = make(map[string]*Source)
}
d.Sources[s.Alias] = s
- return nil
+ return s, nil
}
// DatasourceExists -