client

package
v0.1.25-alpha Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 28, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Overview

Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Copyright (c) Huawei Technologies Co., Ltd. 2024. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

View Source
const (
	Read                = "read"
	Write               = "write"
	Admin               = "admin"
	CLASignStateYes     = "yes"
	CLASignStateNo      = "no"
	CLASignStateUnknown = "unknown"
)
View Source
const (
	HeaderRobotChain       = "Robot-Chain"
	HeaderRobotChainAuthed = "Request-Authenticated"
	CommentOnIssue         = "Issue"
)

Variables

This section is empty.

Functions

func SetCommunityName added in v0.2.0

func SetCommunityName(name string)

func SetSigInfoBaseURL added in v0.2.0

func SetSigInfoBaseURL(uri string)

Types

type Authenticate

type Authenticate interface {
	Auth(w http.ResponseWriter, r *http.Request) (error, bool)
	GetPayload() *bytes.Buffer
	GetEventType() string
	GetEventGUID() string
}

type Authentication

type Authentication struct {
	Secret []byte
}

func (*Authentication) DoAuthentication

func (a *Authentication) DoAuthentication(w http.ResponseWriter, r *http.Request) (error, *bytes.Buffer, string, string)

type CLASignature added in v0.2.0

type CLASignature struct {
	Signed bool `json:"signed"`
}

type Client

type Client interface {
	CreatePRComment(org, repo, number, comment string) (success bool)
	CreateIssueComment(org, repo, number, comment string) (success bool)
	ListRepoAllMember(org, repo string) (result []User, success bool)
	CheckPermission(org, repo, username string) (pass, success bool)
	UpdateIssue(org, repo, number, state string) (success bool)
	UpdatePR(org, repo, number, state string) (success bool)
	GetIssueLinkedPRNumber(org, repo, number string) (num int, success bool)
	CreateRepoIssueLabel(org, repo, name, color string) (success bool)
	DeleteRepoIssueLabel(org, repo, name string) (success bool)
	AddIssueLabels(org, repo, number string, labels []string) (success bool)
	RemoveIssueLabels(org, repo, number string, labels []string) (success bool)
	AddPRLabels(org, repo, number string, labels []string) (success bool)
	RemovePRLabels(org, repo, number string, labels []string) (success bool)
	GetPullRequestCommits(org, repo, number string) (result []PRCommit, success bool)
	ListPullRequestComments(org, repo, number string) (result []PRComment, success bool)
	DeletePRComment(org, repo, commentID string) (success bool)
	CheckCLASignature(urlStr string) (signState string, success bool)
	CheckIfPRCreateEvent(evt *GenericEvent) (yes bool)
	CheckIfIssueCreateEvent(evt *GenericEvent) (yes bool)
	CheckIfPRSourceCodeUpdateEvent(evt *GenericEvent) (yes bool)
}

func NewClient

func NewClient(token []byte, logger *logrus.Entry) Client

NewClient 通过 token 请求每个代码平台的接口,来确定使用哪个平台的 OpenAPI。也有可能返回 nil

type GenericEvent

type GenericEvent struct {
	EventType    *string `json:"eventType" log:"event-type"`
	EventGUID    *string `json:"eventGUID" log:"event-guid"`
	Action       *string `json:"action" log:"action"`
	ActionDetail *string `json:"actionDetail" log:"action-detail"`
	Org          *string `json:"org" log:"org"`
	Repo         *string `json:"repo" log:"repo"`
	HtmlURL      *string `json:"htmlURL" log:"html-url"`
	Base         *string `json:"base"`
	Head         *string `json:"head"`
	State        *string `json:"state" log:"state"`
	Number       *string `json:"number" log:"number"` // issues or pull requests number
	Author       *string `json:"author"`
	CommentID    *string `json:"commentID" log:"comment-id"`
	CommentKind  *string `json:"commentKind" log:"comment-kind"`
	Comment      *string `json:"comment" log:"comment"`
	Commenter    *string `json:"commenter" log:"commenter"`
	CreateTime   *string `json:"createTime" log:"create-time"`
	UpdateTime   *string `json:"updateTime" log:"update-time"`
	// contains filtered or unexported fields
}

func NewGenericEvent

func NewGenericEvent(w http.ResponseWriter, r *http.Request, l *logrus.Entry) *GenericEvent

func (*GenericEvent) CollectLoggingFields

func (e *GenericEvent) CollectLoggingFields() *map[string]interface{}

func (*GenericEvent) GetMetaPayload added in v0.2.0

func (e *GenericEvent) GetMetaPayload() *bytes.Buffer

type PRComment added in v0.2.0

type PRComment struct {
	ID   string
	Body string
}

type PRCommit added in v0.2.0

type PRCommit struct {
	AuthorName     string
	AuthorEmail    string
	CommitterName  string
	CommitterEmail string
}

type SigInfo added in v0.2.0

type SigInfo struct {
	SigName     string   `json:"sig_name"`
	Maintainers []string `json:"maintainers"`
	Committers  []string `json:"committers"`
}

type User added in v0.2.0

type User struct {
	UserName   string
	NickName   string
	Role       string
	Permission string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL