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

Commit 5266f2b

Browse files
ethantkoenigbkcsoft
authored andcommitted
Functions for releases
1 parent 2487ebd commit 5266f2b

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed

gitea/releases.go

+101
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
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:"name"`
18+
Target string `json:"target_commitish"`
19+
Title string `json:"name"`
20+
Note string `json:"body"`
21+
URL string `json:"url"`
22+
TarURL string `json:"tarball_url"`
23+
ZipURL string `json:"zipball_url"`
24+
IsDraft bool `json:"draft"`
25+
IsPrerelease bool `json:"prerelease"`
26+
CreatedAt time.Time `json:"created_at"`
27+
PublishedAt time.Time `json:"published_at"`
28+
Publisher *User `json:"author"`
29+
}
30+
31+
// ListReleases list releases of a repository
32+
func (c *Client) ListReleases(user, repo string) ([]*Release, error) {
33+
releases := make([]*Release, 0, 10)
34+
err := c.getParsedResponse("GET",
35+
fmt.Sprintf("/repos/%s/%s/releases", user, repo),
36+
nil, nil, &releases)
37+
return releases, err
38+
}
39+
40+
// GetRelease get a release of a repository
41+
func (c *Client) GetRelease(user, repo string, id int64) (*Release, error) {
42+
r := new(Release)
43+
err := c.getParsedResponse("GET",
44+
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
45+
nil, nil, &r)
46+
return r, err
47+
}
48+
49+
// CreateReleaseOption options when creating a release
50+
type CreateReleaseOption struct {
51+
TagName string `json:"tag_name" binding:"Required"`
52+
Target string `json:"target_commitish"`
53+
Title string `json:"name"`
54+
Note string `json:"body"`
55+
IsDraft bool `json:"draft"`
56+
IsPrerelease bool `json:"prerelease"`
57+
}
58+
59+
// CreateRelease create a release
60+
func (c *Client) CreateRelease(user, repo string, form CreateReleaseOption) (*Release, error) {
61+
body, err := json.Marshal(form)
62+
if err != nil {
63+
return nil, err
64+
}
65+
r := new(Release)
66+
err = c.getParsedResponse("POST",
67+
fmt.Sprintf("/repos/%s/%s/releases", user, repo),
68+
jsonHeader, bytes.NewReader(body), r)
69+
return r, err
70+
}
71+
72+
// EditReleaseOption options when editing a release
73+
type EditReleaseOption struct {
74+
TagName string `json:"tag_name"`
75+
Target string `json:"target_commitish"`
76+
Title string `json:"name"`
77+
Note string `json:"body"`
78+
IsDraft *bool `json:"draft"`
79+
IsPrerelease *bool `json:"prerelease"`
80+
}
81+
82+
// EditRelease edit a release
83+
func (c *Client) EditRelease(user, repo string, id int64, form EditReleaseOption) (*Release, error) {
84+
body, err := json.Marshal(form)
85+
if err != nil {
86+
return nil, err
87+
}
88+
r := new(Release)
89+
err = c.getParsedResponse("PATCH",
90+
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
91+
jsonHeader, bytes.NewReader(body), r)
92+
return r, err
93+
}
94+
95+
// DeleteRelease delete a release from a repository
96+
func (c *Client) DeleteRelease(user, repo string, id int64) error {
97+
_, err := c.getResponse("DELETE",
98+
fmt.Sprintf("/repos/%s/%s/releases/%d", user, repo, id),
99+
nil, nil)
100+
return err
101+
}

0 commit comments

Comments
 (0)