feat: gitea client
This commit is contained in:
116
vendor/code.gitea.io/sdk/gitea/org_label.go
generated
vendored
Normal file
116
vendor/code.gitea.io/sdk/gitea/org_label.go
generated
vendored
Normal file
@@ -0,0 +1,116 @@
|
||||
// Copyright 2025 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package gitea
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// ListOrgLabelsOptions options for listing organization labels
|
||||
type ListOrgLabelsOptions struct {
|
||||
ListOptions
|
||||
}
|
||||
|
||||
// ListOrgLabels returns the labels defined at the org level
|
||||
func (c *Client) ListOrgLabels(orgName string, opt ListOrgLabelsOptions) ([]*Label, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&orgName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
opt.setDefaults()
|
||||
labels := make([]*Label, 0, opt.PageSize)
|
||||
link, _ := url.Parse(fmt.Sprintf("/orgs/%s/labels", orgName))
|
||||
link.RawQuery = opt.getURLQuery().Encode()
|
||||
resp, err := c.getParsedResponse("GET", link.String(), jsonHeader, nil, &labels)
|
||||
return labels, resp, err
|
||||
}
|
||||
|
||||
type CreateOrgLabelOption struct {
|
||||
// Name of the label
|
||||
Name string `json:"name"`
|
||||
// Color of the label in hex format without #
|
||||
Color string `json:"color"`
|
||||
// Description of the label
|
||||
Description string `json:"description"`
|
||||
// Whether this is an exclusive label
|
||||
Exclusive bool `json:"exclusive"`
|
||||
}
|
||||
|
||||
// Validate the CreateLabelOption struct
|
||||
func (opt CreateOrgLabelOption) Validate() error {
|
||||
aw, err := regexp.MatchString("^#?[0-9,a-f,A-F]{6}$", opt.Color)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !aw {
|
||||
return fmt.Errorf("invalid color format")
|
||||
}
|
||||
if len(strings.TrimSpace(opt.Name)) == 0 {
|
||||
return fmt.Errorf("empty name not allowed")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateOrgLabel creates a new label under an organization
|
||||
func (c *Client) CreateOrgLabel(orgName string, opt CreateOrgLabelOption) (*Label, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&orgName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
body, err := json.Marshal(&opt)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
label := new(Label)
|
||||
resp, err := c.getParsedResponse("POST", fmt.Sprintf("/orgs/%s/labels", orgName), jsonHeader, bytes.NewReader(body), label)
|
||||
return label, resp, err
|
||||
}
|
||||
|
||||
// GetOrgLabel get one label of organization by org it
|
||||
func (c *Client) GetOrgLabel(orgName string, labelID int64) (*Label, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&orgName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
label := new(Label)
|
||||
resp, err := c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/labels/%d", orgName, labelID), nil, nil, label)
|
||||
return label, resp, err
|
||||
}
|
||||
|
||||
type EditOrgLabelOption struct {
|
||||
// New name of the label
|
||||
Name *string `json:"name"`
|
||||
// New color of the label in hex format without #
|
||||
Color *string `json:"color"`
|
||||
// New description of the label
|
||||
Description *string `json:"description"`
|
||||
// Whether this is an exclusive label
|
||||
Exclusive *bool `json:"exclusive,omitempty"`
|
||||
}
|
||||
|
||||
// EditOrgLabel edits an existing org-level label by ID
|
||||
func (c *Client) EditOrgLabel(orgName string, labelID int64, opt EditOrgLabelOption) (*Label, *Response, error) {
|
||||
if err := escapeValidatePathSegments(&orgName); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
body, err := json.Marshal(&opt)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
label := new(Label)
|
||||
resp, err := c.getParsedResponse("PATCH", fmt.Sprintf("/orgs/%s/labels/%d", orgName, labelID), jsonHeader, bytes.NewReader(body), label)
|
||||
return label, resp, err
|
||||
}
|
||||
|
||||
// DeleteOrgLabel deletes a org label by ID
|
||||
func (c *Client) DeleteOrgLabel(orgName string, labelID int64) (*Response, error) {
|
||||
if err := escapeValidatePathSegments(&orgName); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
_, resp, err := c.getResponse("DELETE", fmt.Sprintf("/orgs/%s/labels/%d", orgName, labelID), jsonHeader, nil)
|
||||
return resp, err
|
||||
}
|
||||
Reference in New Issue
Block a user