package jira

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"log"
	"net/http"

	"github.com/spf13/viper"
)

func SearchCorrelatedIssueInO11Y(searchParams SearchParams) (names []string, urls []string, err error) {
	names = []string{}
	urls = []string{}
	jiraToken := viper.GetString("jira_token.tcoc_token")
	log.Println("Jira Token:", jiraToken)
	jql := searchParams.toJql()
	data, err := json.Marshal(RequestJson{Jql: jql, StartAt: 0, MaxResults: 1, Fields: []string{"summary"}})
	log.Println(string(data))
	if err != nil {
		log.Println(err)
		return names, urls, err
	}

	request, err := http.NewRequest(http.MethodPost, "https://jira.tidbcloud.com/rest/api/2/search", bytes.NewReader(data))
	log.Println(request)
	if err != nil {
		log.Println(err)
		return names, urls, err
	} else {
		request.Header.Set("Content-Type", "application/json")
		request.Header.Set("User-Agent", "curl/7.29.0")
		request.Header.Set("Authorization", "Bearer NzA4MjQ5NTE2NjY5OrhikLI528+hZgX8pEO7pwiH7P3O")
		log.Print(request.Header)
	}
	client := &http.Client{}
	resp, err := client.Do(request)
	if err != nil {
		return names, urls, err
	}
	log.Println(resp)
	respByteSlice, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		log.Println(err)
		return names, urls, err
	}
	respJson := &ResponseJson{}
	fmt.Println("status code:", resp.StatusCode)
	log.Println(string(respByteSlice))
	json.Unmarshal(respByteSlice, respJson)
	for _, issue := range respJson.Issues {
		names = append(names, issue.Key)
		urls = append(urls, "https://jira.tidbcloud.com/browse/"+issue.Key)
	}
	return names, urls, nil
}
