-1

私は 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>"
  }
}
4

2 に答える 2