//
// Copyright (c) 2018, Joyent, Inc. All rights reserved.
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
//

package triton

import (
	"os"

	"github.com/joyent/triton-go/authentication"
)

// Universal package used for defining configuration used across all client
// constructors.

// ClientConfig is a placeholder/input struct around the behavior of configuring
// a client constructor through the implementation's runtime environment
// (SDC/MANTA env vars).
type ClientConfig struct {
	TritonURL   string
	MantaURL    string
	AccountName string
	Username    string
	Signers     []authentication.Signer
}

var envPrefixes = []string{"TRITON", "SDC"}

// GetEnv looks up environment variables using the preferred "TRITON" prefix,
// but falls back to the retired "SDC" prefix.  For example, looking up "USER"
// will search for "TRITON_USER" followed by "SDC_USER".  If the environment
// variable is not set, an empty string is returned.  GetEnv() is used to aid in
// the transition and deprecation of the "SDC_*" environment variables.
func GetEnv(name string) string {
	for _, prefix := range envPrefixes {
		if val, found := os.LookupEnv(prefix + "_" + name); found {
			return val
		}
	}

	return ""
}