github.com/hairyhenderson/templater@v3.5.0+incompatible/data/datasource_consul.go (about)

     1  package data
     2  
     3  import (
     4  	"strings"
     5  
     6  	"github.com/hairyhenderson/gomplate/libkv"
     7  )
     8  
     9  func readConsul(source *Source, args ...string) (data []byte, err error) {
    10  	if source.kv == nil {
    11  		source.kv, err = libkv.NewConsul(source.URL)
    12  		if err != nil {
    13  			return nil, err
    14  		}
    15  		err = source.kv.Login()
    16  		if err != nil {
    17  			return nil, err
    18  		}
    19  	}
    20  
    21  	p := source.URL.Path
    22  	if len(args) == 1 {
    23  		p = strings.TrimRight(p, "/") + "/" + args[0]
    24  	}
    25  
    26  	if strings.HasSuffix(p, "/") {
    27  		source.mediaType = jsonArrayMimetype
    28  		data, err = source.kv.List(p)
    29  	} else {
    30  		data, err = source.kv.Read(p)
    31  	}
    32  
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  
    37  	return data, nil
    38  }