init
This commit is contained in:
		
							
								
								
									
										117
									
								
								publish/releases/assets.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								publish/releases/assets.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| package releases | ||||
|  | ||||
| import ( | ||||
|     "fmt" | ||||
|     "os" | ||||
|     "path/filepath" | ||||
|     "mime/multipart" | ||||
|     "io" | ||||
|     "encoding/json" | ||||
|     "net/http" | ||||
|     "bytes" | ||||
|  | ||||
|     "oc-publish/occonst" | ||||
| ) | ||||
|  | ||||
| type assetStruct struct { | ||||
|     Name string `json:"name"` | ||||
|     Id int `json:"id"` | ||||
| } | ||||
|  | ||||
| func GetAssetId(idRelease int, name string) (int, error) { | ||||
|     url := fmt.Sprintf("%s/api/v1/repos/%s/releases/%d/assets", | ||||
|                         occonst.PUBLISH_URL, | ||||
|                         occonst.PUBLISH_REPO, | ||||
|                         idRelease) | ||||
|  | ||||
|     res, err := http.Get(url) | ||||
|     if err != nil { | ||||
|         return -1, err | ||||
|     } | ||||
|     body, err := io.ReadAll(res.Body) | ||||
|     if err != nil { | ||||
|         return -2, err | ||||
|     } | ||||
|  | ||||
|     var data []assetStruct | ||||
|  | ||||
|     err = json.Unmarshal(body, &data) | ||||
|     if err != nil { | ||||
|         return -3, err | ||||
|     } | ||||
|  | ||||
|     for _, ele := range data { | ||||
|         if ele.Name == name { | ||||
|             return ele.Id, nil | ||||
|         } | ||||
|     } | ||||
|     return 0, nil | ||||
| } | ||||
|  | ||||
| // curl -X 'POST' \ | ||||
| //   'https://cloud.o-forge.io/api/v1/repos/core/oc-deploy/releases/2/assets?name=zzzz' \ | ||||
| //   -H 'accept: application/json' \ | ||||
| //   -H 'Content-Type: multipart/form-data' \ | ||||
| //   -F 'attachment=oc-deploy' | ||||
| func CreateAsset(idRelease int, filename string, name string) (int, error) { | ||||
|     url := fmt.Sprintf("%s/api/v1/repos/%s/releases/%d/assets?name=%s&token=%s", | ||||
|                         occonst.PUBLISH_URL, | ||||
|                         occonst.PUBLISH_REPO, | ||||
|                         idRelease, | ||||
|                         name, | ||||
|                         occonst.PUBLISH_TOKEN) | ||||
|  | ||||
|     err := uploadFile(url, "attachment", filename) | ||||
|  | ||||
|     return 0, err  | ||||
| } | ||||
|  | ||||
| func UpdateAsset(idRelease int, idAsset int,filename string, name string) (int, error) { | ||||
|   url := fmt.Sprintf("%s/api/v1/repos/%s/releases/%d/assets?name=%s&token=%s", | ||||
|                       occonst.PUBLISH_URL, | ||||
|                       occonst.PUBLISH_REPO, | ||||
|                       idRelease, | ||||
|                       name, | ||||
|                       occonst.PUBLISH_TOKEN) | ||||
|  | ||||
|   err := uploadFile(url, "attachment", filename) | ||||
|  | ||||
|   return 0, err | ||||
| } | ||||
|  | ||||
| func uploadFile(url string, paramName string, filePath string) error { | ||||
|     file, err := os.Open(filePath) | ||||
|     if err != nil { | ||||
|       return err | ||||
|     } | ||||
|     defer file.Close() | ||||
|    | ||||
|     body := &bytes.Buffer{} | ||||
|     writer := multipart.NewWriter(body) | ||||
|     part, err := writer.CreateFormFile(paramName, filepath.Base(filePath)) | ||||
|     if err != nil { | ||||
|       return err | ||||
|     } | ||||
|     _, err = io.Copy(part, file) | ||||
|    | ||||
|     err = writer.Close() | ||||
|     if err != nil { | ||||
|       return err | ||||
|     } | ||||
|    | ||||
|     request, err := http.NewRequest("POST", url, body) | ||||
|     request.Header.Add("Content-Type", writer.FormDataContentType()) | ||||
|     request.Header.Add("accept", "application/json") | ||||
|     client := &http.Client{} | ||||
|     response, err := client.Do(request) | ||||
|    | ||||
|     if err != nil { | ||||
|       return err | ||||
|     } | ||||
|     defer response.Body.Close() | ||||
|    | ||||
|     _, err := io.ReadAll(response.Body) | ||||
|  | ||||
|     // Handle the server response... | ||||
|     return nil | ||||
|   } | ||||
							
								
								
									
										117
									
								
								publish/releases/release.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								publish/releases/release.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| package releases | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"io" | ||||
|     "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) | ||||
|  | ||||
|     body := fmt.Sprintf(`{ | ||||
|     "body": "Version %s", | ||||
|     "draft": false, | ||||
|     "name": "%s", | ||||
|     "prerelease": false, | ||||
|     "tag_name": "%s", | ||||
|     "target_commitish": "%s" | ||||
| }`, version, 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) | ||||
|     if err1 != nil { | ||||
|         return err1 | ||||
|     } | ||||
|     return nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user