crumbIssuer.go 1.4 KB
Newer Older
LinuxSuRen's avatar
LinuxSuRen 已提交
1 2 3
package cmd

import (
LinuxSuRen's avatar
LinuxSuRen 已提交
4
	"crypto/tls"
LinuxSuRen's avatar
LinuxSuRen 已提交
5 6 7 8 9 10 11 12 13
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"

	"github.com/spf13/cobra"
)

14 15
//curl -k -u $JENKINS_USER:$JENKINS_TOKEN $JENKINS_URL/crumbIssuer/api/json -s

LinuxSuRen's avatar
LinuxSuRen 已提交
16 17 18 19 20 21 22 23 24 25 26
// Start contains the command line options
type CrumbIssuerOptions struct {
	Upload bool
}

func init() {
	rootCmd.AddCommand(versionCmd)
}

var versionCmd = &cobra.Command{
	Use:   "crumb",
27 28
	Short: "Print crumbIssuer of Jenkins",
	Long:  `Print crumbIssuer of Jenkins`,
LinuxSuRen's avatar
LinuxSuRen 已提交
29 30 31 32 33 34 35 36 37
	Run: func(cmd *cobra.Command, args []string) {
	},
}

type CrumbIssuer struct {
	Crumb             string `json:"crumb"`
	CrumbRequestField string `json:"crumbRequestField"`
}

38 39
func getCrumb() (CrumbIssuer, JenkinsServer) {
	config := getCurrentJenkins()
LinuxSuRen's avatar
LinuxSuRen 已提交
40

41
	jenkinsRoot := config.URL
LinuxSuRen's avatar
LinuxSuRen 已提交
42 43 44 45 46 47
	api := fmt.Sprintf("%s/crumbIssuer/api/json", jenkinsRoot)

	req, err := http.NewRequest("GET", api, nil)
	if err != nil {
		log.Fatal(err)
	}
48
	req.SetBasicAuth(config.UserName, config.Token)
LinuxSuRen's avatar
LinuxSuRen 已提交
49 50

	var crumbIssuer CrumbIssuer
LinuxSuRen's avatar
LinuxSuRen 已提交
51 52 53 54
	tr := &http.Transport{
		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
	}
	client := &http.Client{Transport: tr}
LinuxSuRen's avatar
LinuxSuRen 已提交
55 56
	if response, err := client.Do(req); err == nil {
		if data, err := ioutil.ReadAll(response.Body); err == nil {
LinuxSuRen's avatar
LinuxSuRen 已提交
57 58 59 60 61 62
			if response.StatusCode == 200 {
				json.Unmarshal(data, &crumbIssuer)
			} else {
				fmt.Println("get curmb error")
				log.Fatal(string(data))
			}
LinuxSuRen's avatar
LinuxSuRen 已提交
63 64 65 66 67 68 69 70 71 72 73
		} else {
			log.Fatal(err)
		}
	} else {
		log.Fatal(err)
	}
	return crumbIssuer, config
}

func init() {
}