package main

import (
	"log"

	"code.secondbit.org/gifs/api"
	"github.com/coreos/go-etcd/etcd"
)

func getEtcdContext(resp *etcd.Node) (api.Context, error) {
	var context api.Context
	var dsn, bucket, tmpbucket, domain string
	for _, node := range resp.Nodes {
		switch node.Key {
		case "/dsn":
			dsn = node.Value
		case "/bucket":
			bucket = node.Value
		case "/tmpbucket":
			tmpbucket = node.Value
		case "/domain":
			domain = node.Value
		}
	}
	if dsn != "" {
		log.Println("Using PostgreSQL as our datastore.")
		/*datastore, err := api.NewMySQLDatastore(dsn)
		if err != nil {
			return context, err
		}
		context.Datastore = datastore*/
		panic("PostgreSQL not implemented yet.")
	} else {
		log.Println("Using in-memory datastore.")
		context.Datastore = api.NewMemDatastore()
	}
	context.UsageTracker = api.NewMemTracker() // TODO: get this using influx
	context.Bucket = bucket
	context.TmpBucket = tmpbucket
	context.RootDomain = domain
	storage, err := api.NewGCSServiceStorage()
	if err != nil {
		log.Println("Using in-memory blob store.")
		context.Storage = api.NewMemStorage()
	} else {
		log.Println("Using Google Cloud Storage for blob store.")
		context.Storage = storage
	}
	return context, nil
}
