私は Go を初めて使用するので、パスワードと URL をスクリプト内で公開せずに動的にインポートする方法に興味があります。Python では、JSON ペイロードを使用してこれを実装することができ、基本的には JSON をインポートし、ペイロードをロードし、機密性が必要な仕様を渡す必要があるときはいつでも指定します。
これが私のGoスクリプトです:
package main
import (
"io/ioutil"
"net/http"
"fmt"
"gopkg.in/yaml.v2"
)
// curl -u <username>:<password> <some_url>
func main() {
type Config struct {
URL string `yaml:"url"`
Username string `yaml:"username"`
Token string `yaml:"token"`
}
func readConfig() (*Config, error) {
config := &Config{}
cfgFile, err := ioutil.ReadFile("config.yaml")
if err != nil {
return nil, err
}
err = yaml.Unmarshal(cfgFile, config)
return config, err
}
req, err := http.NewRequest("GET", config.URL, nil)
if err != nil {
// handle err
}
req.SetBasicAuth(config.Username, config.Token)
resp, err := http.DefaultClient.Do(req)
if err != nil {
// handle err
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
想像できるように、パスワードのロードにあまり運がありません。スクリプトでパスワードを公開する直接トークンを使用して以下を変更すると、Jira で機能して JSON ペイロードが生成されます。
config.URL
config.Username
config.Token
したがって、YAML に構成ファイルがある場合は、次のようになります。
config:
URL: "<some_URL>"
Username: "<some_username>"
Token: "<some_token>"
YAML ファイルをスクリプトにロードするにはどうすればよいですか? 同等の JSON を読み込むにはどうすればよいですか?
{
"config": {
"URL": "<some_URL>"
"Username": "<some_username>",
"Token": "<some_token>"
}
}