Update List Options (#527)
* ListReleasesOptions: https://github.com/go-gitea/gitea/pull/16175 * ListNotificationOptions: https://github.com/go-gitea/gitea/pull/16177 * ListIssueOption: https://github.com/go-gitea/gitea/pull/16174 Reviewed-on: https://gitea.com/gitea/go-sdk/pulls/527 Reviewed-by: Norwin <noerw@noreply.gitea.io> Reviewed-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: 6543 <6543@obermui.de> Co-committed-by: 6543 <6543@obermui.de>
This commit is contained in:
parent
ddc879e297
commit
cc08994d13
3 changed files with 65 additions and 6 deletions
|
@ -63,6 +63,14 @@ type ListIssueOption struct {
|
||||||
Labels []string
|
Labels []string
|
||||||
Milestones []string
|
Milestones []string
|
||||||
KeyWord string
|
KeyWord string
|
||||||
|
Since time.Time
|
||||||
|
Before time.Time
|
||||||
|
// filter by created by username
|
||||||
|
CreatedBy string
|
||||||
|
// filter by assigned to username
|
||||||
|
AssignedBy string
|
||||||
|
// filter by username mentioned
|
||||||
|
MentionedBy string
|
||||||
}
|
}
|
||||||
|
|
||||||
// StateType issue state type
|
// StateType issue state type
|
||||||
|
@ -111,6 +119,23 @@ func (opt *ListIssueOption) QueryEncode() string {
|
||||||
query.Add("milestones", strings.Join(opt.Milestones, ","))
|
query.Add("milestones", strings.Join(opt.Milestones, ","))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !opt.Since.IsZero() {
|
||||||
|
query.Add("since", opt.Since.Format(time.RFC3339))
|
||||||
|
}
|
||||||
|
if !opt.Before.IsZero() {
|
||||||
|
query.Add("before", opt.Before.Format(time.RFC3339))
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(opt.CreatedBy) > 0 {
|
||||||
|
query.Add("created_by", opt.CreatedBy)
|
||||||
|
}
|
||||||
|
if len(opt.AssignedBy) > 0 {
|
||||||
|
query.Add("assigned_by", opt.AssignedBy)
|
||||||
|
}
|
||||||
|
if len(opt.MentionedBy) > 0 {
|
||||||
|
query.Add("mentioned_by", opt.MentionedBy)
|
||||||
|
}
|
||||||
|
|
||||||
return query.Encode()
|
return query.Encode()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ type NotificationSubject struct {
|
||||||
Title string `json:"title"`
|
Title string `json:"title"`
|
||||||
URL string `json:"url"`
|
URL string `json:"url"`
|
||||||
LatestCommentURL string `json:"latest_comment_url"`
|
LatestCommentURL string `json:"latest_comment_url"`
|
||||||
Type string `json:"type"`
|
Type NotifySubjectType `json:"type"`
|
||||||
State NotifySubjectState `json:"state"`
|
State NotifySubjectState `json:"state"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,6 +48,20 @@ const (
|
||||||
NotifyStatusPinned NotifyStatus = "pinned"
|
NotifyStatusPinned NotifyStatus = "pinned"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NotifySubjectType represent type of notification subject
|
||||||
|
type NotifySubjectType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// NotifySubjectIssue an issue is subject of an notification
|
||||||
|
NotifySubjectIssue NotifySubjectType = "Issue"
|
||||||
|
// NotifySubjectPull an pull is subject of an notification
|
||||||
|
NotifySubjectPull NotifySubjectType = "Pull"
|
||||||
|
// NotifySubjectCommit an commit is subject of an notification
|
||||||
|
NotifySubjectCommit NotifySubjectType = "Commit"
|
||||||
|
// NotifySubjectRepository an repository is subject of an notification
|
||||||
|
NotifySubjectRepository NotifySubjectType = "Repository"
|
||||||
|
)
|
||||||
|
|
||||||
// NotifySubjectState reflect state of notification subject
|
// NotifySubjectState reflect state of notification subject
|
||||||
type NotifySubjectState string
|
type NotifySubjectState string
|
||||||
|
|
||||||
|
@ -63,9 +77,10 @@ const (
|
||||||
// ListNotificationOptions represents the filter options
|
// ListNotificationOptions represents the filter options
|
||||||
type ListNotificationOptions struct {
|
type ListNotificationOptions struct {
|
||||||
ListOptions
|
ListOptions
|
||||||
Since time.Time
|
Since time.Time
|
||||||
Before time.Time
|
Before time.Time
|
||||||
Status []NotifyStatus
|
Status []NotifyStatus
|
||||||
|
SubjectTypes []NotifySubjectType
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarkNotificationOptions represents the filter & modify options
|
// MarkNotificationOptions represents the filter & modify options
|
||||||
|
@ -87,6 +102,9 @@ func (opt *ListNotificationOptions) QueryEncode() string {
|
||||||
for _, s := range opt.Status {
|
for _, s := range opt.Status {
|
||||||
query.Add("status-types", string(s))
|
query.Add("status-types", string(s))
|
||||||
}
|
}
|
||||||
|
for _, s := range opt.SubjectTypes {
|
||||||
|
query.Add("subject-type", string(s))
|
||||||
|
}
|
||||||
return query.Encode()
|
return query.Encode()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,22 @@ type Release struct {
|
||||||
// ListReleasesOptions options for listing repository's releases
|
// ListReleasesOptions options for listing repository's releases
|
||||||
type ListReleasesOptions struct {
|
type ListReleasesOptions struct {
|
||||||
ListOptions
|
ListOptions
|
||||||
|
IsDraft *bool
|
||||||
|
IsPreRelease *bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// QueryEncode turns options into querystring argument
|
||||||
|
func (opt *ListReleasesOptions) QueryEncode() string {
|
||||||
|
query := opt.getURLQuery()
|
||||||
|
|
||||||
|
if opt.IsDraft != nil {
|
||||||
|
query.Add("draft", fmt.Sprintf("%t", *opt.IsDraft))
|
||||||
|
}
|
||||||
|
if opt.IsPreRelease != nil {
|
||||||
|
query.Add("draft", fmt.Sprintf("%t", *opt.IsPreRelease))
|
||||||
|
}
|
||||||
|
|
||||||
|
return query.Encode()
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListReleases list releases of a repository
|
// ListReleases list releases of a repository
|
||||||
|
@ -45,7 +61,7 @@ func (c *Client) ListReleases(owner, repo string, opt ListReleasesOptions) ([]*R
|
||||||
opt.setDefaults()
|
opt.setDefaults()
|
||||||
releases := make([]*Release, 0, opt.PageSize)
|
releases := make([]*Release, 0, opt.PageSize)
|
||||||
resp, err := c.getParsedResponse("GET",
|
resp, err := c.getParsedResponse("GET",
|
||||||
fmt.Sprintf("/repos/%s/%s/releases?%s", owner, repo, opt.getURLQuery().Encode()),
|
fmt.Sprintf("/repos/%s/%s/releases?%s", owner, repo, opt.QueryEncode()),
|
||||||
nil, nil, &releases)
|
nil, nil, &releases)
|
||||||
return releases, resp, err
|
return releases, resp, err
|
||||||
}
|
}
|
||||||
|
@ -168,7 +184,7 @@ func (c *Client) DeleteReleaseByTag(user, repo string, tag string) (*Response, e
|
||||||
// fallbackGetReleaseByTag is fallback for old gitea installations ( < 1.13.0 )
|
// fallbackGetReleaseByTag is fallback for old gitea installations ( < 1.13.0 )
|
||||||
func (c *Client) fallbackGetReleaseByTag(owner, repo string, tag string) (*Release, *Response, error) {
|
func (c *Client) fallbackGetReleaseByTag(owner, repo string, tag string) (*Release, *Response, error) {
|
||||||
for i := 1; ; i++ {
|
for i := 1; ; i++ {
|
||||||
rl, resp, err := c.ListReleases(owner, repo, ListReleasesOptions{ListOptions{Page: i}})
|
rl, resp, err := c.ListReleases(owner, repo, ListReleasesOptions{ListOptions: ListOptions{Page: i}})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, resp, err
|
return nil, resp, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue