Skip to content
This repository was archived by the owner on Jun 8, 2019. It is now read-only.

Commit 6799cad

Browse files
committed
Functions for releases
1 parent d628d07 commit 6799cad

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

gitea/releases.go

+97
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// Copyright 2016 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package gitea
6+
7+
import (
8+
"bytes"
9+
"encoding/json"
10+
"fmt"
11+
"time"
12+
)
13+
14+
// Release represents a repository release
15+
type Release struct {
16+
ID int64 `json:"id"`
17+
TagName string `json:"string"`
18+
Target string `json:"target_commitish"`
19+
Title string `json:"title"`
20+
Note string `json:"body"`
21+
IsDraft bool `json:"draft"`
22+
IsPrerelease bool `json:"prerelease"`
23+
Created time.Time `json:"created"`
24+
Publisher *User `json:"author"`
25+
}
26+
27+
// ListReleases list releases of a repository
28+
func (c *Client) ListReleases(user, repo string) ([]*Release, error) {
29+
releases := make([]*Release, 0, 10)
30+
err := c.getParsedResponse("GET",
31+
fmt.Sprintf("/repos/%s/%s/releases", user, repo),
32+
nil, nil, &releases)
33+
return releases, err
34+
}
35+
36+
// GetRelease get a release of a repository
37+
func (c *Client) GetRelease(user, repo string, id int64) (*Release, error) {
38+
r := new(Release)
39+
err := c.getParsedResponse("GET",
40+
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
41+
nil, nil, &r)
42+
return r, err
43+
}
44+
45+
// CreateReleaseOption options when creating a release
46+
type CreateReleaseOption struct {
47+
TagName string `json:"string" binding:"Required"`
48+
Target string `json:"target_commitish"`
49+
Title string `json:"title"`
50+
Note string `json:"body"`
51+
IsDraft bool `json:"draft"`
52+
IsPrerelease bool `json:"prerelease"`
53+
}
54+
55+
// CreateRelease create a release
56+
func (c *Client) CreateRelease(user, repo string, form CreateReleaseOption) (*Release, error) {
57+
body, err := json.Marshal(form)
58+
if err != nil {
59+
return nil, err
60+
}
61+
r := new(Release)
62+
err = c.getParsedResponse("POST",
63+
fmt.Sprintf("/repos/%s/%s/releases", user, repo),
64+
jsonHeader, bytes.NewReader(body), r)
65+
return r, err
66+
}
67+
68+
// EditReleaseOption options when editing a release
69+
type EditReleaseOption struct {
70+
TagName string `json:"string"`
71+
Target string `json:"target_commitish"`
72+
Title string `json:"title"`
73+
Note string `json:"body"`
74+
IsDraft *bool `json:"draft"`
75+
IsPrerelease *bool `json:"prerelease"`
76+
}
77+
78+
// EditRelease edit a release
79+
func (c *Client) EditRelease(user, repo string, id int64, form EditReleaseOption) (*Release, error) {
80+
body, err := json.Marshal(form)
81+
if err != nil {
82+
return nil, err
83+
}
84+
r := new(Release)
85+
err = c.getParsedResponse("PATCH",
86+
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
87+
jsonHeader, bytes.NewReader(body), r)
88+
return r, err
89+
}
90+
91+
// DeleteRelease delete a release from a repository
92+
func (c *Client) DeleteRelease(user, repo string, id int64) error {
93+
_, err := c.getResponse("DELETE",
94+
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
95+
nil, nil)
96+
return err
97+
}

0 commit comments

Comments
 (0)