package releases import ( "fmt" "io" "io/ioutil" "strings" "encoding/json" "net/http" "oc-publish/occonst" ) type checkStruct struct { Name string `json:"name"` Id int `json:"id"` } func CheckRelease(version string) (bool, error) { url := fmt.Sprintf("%s/api/v1/repos/%s/releases", occonst.PUBLISH_URL, occonst.PUBLISH_REPO) res, err := http.Get(url) if err != nil { return false, err } body, err := io.ReadAll(res.Body) if err != nil { return false, err } var data []checkStruct err = json.Unmarshal(body, &data) if err != nil { return false, err } for _, ele := range data { if ele.Name == version { return true, nil } } // return data.Name != "", nil return false, nil } func GetReleaseId(version string) (int, error) { url := fmt.Sprintf("%s/api/v1/repos/%s/releases/tags/%s", occonst.PUBLISH_URL, occonst.PUBLISH_REPO, version) res, err := http.Get(url) if err != nil { return 0, err } body, err := io.ReadAll(res.Body) if err != nil { return 0, err } var data checkStruct err = json.Unmarshal(body, &data) if err != nil { return 0, err } return data.Id, nil } // curl -X 'POST' \ // 'https://cloud.o-forge.io/api/v1/repos/na/oc-version/releases?token=sss' \ // -H 'accept: application/json' \ // -H 'Content-Type: application/json' \ // -d '{ // "body": "string", // "draft": true, // "name": "string", // "prerelease": true, // "tag_name": "string", // "target_commitish": "string" // }' func CreateRelease(version string, branch string) (error) { url := fmt.Sprintf("%s/api/v1/repos/%s/releases?token=%s", occonst.PUBLISH_URL, occonst.PUBLISH_REPO, occonst.PUBLISH_TOKEN) releasebytes, err := ioutil.ReadFile("release.txt") releasetxt := string(releasebytes) releasetxt = strings.Replace(releasetxt, "\n", "\\n", -1) releasetxt = fmt.Sprintf(releasetxt, version, occonst.PUBLISH_URL, occonst.PUBLISH_REPO, version) body := fmt.Sprintf(`{ "body": "%s", "draft": false, "name": "%s", "prerelease": false, "tag_name": "%s", "target_commitish": "%s" }`, releasetxt, version, version, branch) request, err := http.NewRequest("POST", url, strings.NewReader(body)) if err != nil { return err } request.Header.Add("accept", "application/json") request.Header.Add("Content-Type", "application/json") client := &http.Client{} response, err := client.Do(request) if err != nil { return err } defer response.Body.Close() _, err1 := io.ReadAll(response.Body) // cnt, err1 := io.ReadAll(response.Body) // fmt.Println(string(cnt)) if err1 != nil { return err1 } return nil }