| @@ -1,4 +1,5 @@ | |||||
| // Copyright 2014 The Gogs Authors. All rights reserved. | // Copyright 2014 The Gogs Authors. All rights reserved. | ||||
| // Copyright 2017 The Gitea Authors. All rights reserved. | |||||
| // Use of this source code is governed by a MIT-style | // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||
| @@ -147,6 +148,7 @@ type PayloadCommit struct { | |||||
| var ( | var ( | ||||
| _ Payloader = &CreatePayload{} | _ Payloader = &CreatePayload{} | ||||
| _ Payloader = &PushPayload{} | _ Payloader = &PushPayload{} | ||||
| _ Payloader = &IssuePayload{} | |||||
| _ Payloader = &PullRequestPayload{} | _ Payloader = &PullRequestPayload{} | ||||
| ) | ) | ||||
| @@ -277,8 +279,33 @@ const ( | |||||
| HookIssueLabelCleared HookIssueAction = "label_cleared" | HookIssueLabelCleared HookIssueAction = "label_cleared" | ||||
| // HookIssueSynchronized synchronized | // HookIssueSynchronized synchronized | ||||
| HookIssueSynchronized HookIssueAction = "synchronized" | HookIssueSynchronized HookIssueAction = "synchronized" | ||||
| // HookIssueMilestoned is an issue action for when a milestone is set on an issue. | |||||
| HookIssueMilestoned HookIssueAction = "milestoned" | |||||
| // HookIssueDemilestoned is an issue action for when a milestone is cleared on an issue. | |||||
| HookIssueDemilestoned HookIssueAction = "demilestoned" | |||||
| ) | ) | ||||
| // IssuePayload represents the payload information that is sent along with an issue event. | |||||
| type IssuePayload struct { | |||||
| Secret string `json:"secret"` | |||||
| Action HookIssueAction `json:"action"` | |||||
| Index int64 `json:"number"` | |||||
| Changes *ChangesPayload `json:"changes,omitempty"` | |||||
| Issue *Issue `json:"issue"` | |||||
| Repository *Repository `json:"repository"` | |||||
| Sender *User `json:"sender"` | |||||
| } | |||||
| // SetSecret modifies the secret of the IssuePayload. | |||||
| func (p *IssuePayload) SetSecret(secret string) { | |||||
| p.Secret = secret | |||||
| } | |||||
| // JSONPayload encodes the IssuePayload to JSON, with an indentation of two spaces. | |||||
| func (p *IssuePayload) JSONPayload() ([]byte, error) { | |||||
| return json.MarshalIndent(p, "", " ") | |||||
| } | |||||
| // ChangesFromPayload FIXME | // ChangesFromPayload FIXME | ||||
| type ChangesFromPayload struct { | type ChangesFromPayload struct { | ||||
| From string `json:"from"` | From string `json:"from"` | ||||
| @@ -308,7 +335,7 @@ type PullRequestPayload struct { | |||||
| Sender *User `json:"sender"` | Sender *User `json:"sender"` | ||||
| } | } | ||||
| // SetSecret FIXME | |||||
| // SetSecret modifies the secret of the PullRequestPayload. | |||||
| func (p *PullRequestPayload) SetSecret(secret string) { | func (p *PullRequestPayload) SetSecret(secret string) { | ||||
| p.Secret = secret | p.Secret = secret | ||||
| } | } | ||||
| @@ -30,6 +30,7 @@ type PullRequestMeta struct { | |||||
| // Issue an issue to a repository | // Issue an issue to a repository | ||||
| type Issue struct { | type Issue struct { | ||||
| ID int64 `json:"id"` | ID int64 `json:"id"` | ||||
| URL string `json:"url"` | |||||
| Index int64 `json:"number"` | Index int64 `json:"number"` | ||||
| Poster *User `json:"user"` | Poster *User `json:"user"` | ||||
| Title string `json:"title"` | Title string `json:"title"` | ||||
| @@ -14,6 +14,7 @@ import ( | |||||
| // PullRequest represents a pull request API object. | // PullRequest represents a pull request API object. | ||||
| type PullRequest struct { | type PullRequest struct { | ||||
| ID int64 `json:"id"` | ID int64 `json:"id"` | ||||
| URL string `json:"url"` | |||||
| Index int64 `json:"number"` | Index int64 `json:"number"` | ||||
| Poster *User `json:"user"` | Poster *User `json:"user"` | ||||
| Title string `json:"title"` | Title string `json:"title"` | ||||
| @@ -27,6 +27,7 @@ type Repository struct { | |||||
| Description string `json:"description"` | Description string `json:"description"` | ||||
| Private bool `json:"private"` | Private bool `json:"private"` | ||||
| Fork bool `json:"fork"` | Fork bool `json:"fork"` | ||||
| Mirror bool `json:"mirror"` | |||||
| HTMLURL string `json:"html_url"` | HTMLURL string `json:"html_url"` | ||||
| SSHURL string `json:"ssh_url"` | SSHURL string `json:"ssh_url"` | ||||
| CloneURL string `json:"clone_url"` | CloneURL string `json:"clone_url"` | ||||
| @@ -0,0 +1,67 @@ | |||||
| // Copyright 2017 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" | |||||
| "time" | |||||
| ) | |||||
| // GPGKey a user GPG key to sign commit and tag in repository | |||||
| type GPGKey struct { | |||||
| ID int64 `json:"id"` | |||||
| PrimaryKeyID string `json:"primary_key_id"` | |||||
| KeyID string `json:"key_id"` | |||||
| PublicKey string `json:"public_key"` | |||||
| Emails []*GPGKeyEmail `json:"emails"` | |||||
| SubsKey []*GPGKey `json:"subkeys"` | |||||
| CanSign bool `json:"can_sign"` | |||||
| CanEncryptComms bool `json:"can_encrypt_comms"` | |||||
| CanEncryptStorage bool `json:"can_encrypt_storage"` | |||||
| CanCertify bool `json:"can_certify"` | |||||
| Created time.Time `json:"created_at,omitempty"` | |||||
| Expires time.Time `json:"expires_at,omitempty"` | |||||
| } | |||||
| // GPGKeyEmail a email attache to a GPGKey | |||||
| type GPGKeyEmail struct { | |||||
| Email string `json:"email"` | |||||
| Verified bool `json:"verified"` | |||||
| } | |||||
| // CreateGPGKeyOption options create user GPG key | |||||
| type CreateGPGKeyOption struct { | |||||
| ArmoredKey string `json:"armored_public_key" binding:"Required"` | |||||
| } | |||||
| // ListMyGPGKeys list all the GPG keys of current user | |||||
| func (c *Client) ListMyGPGKeys() ([]*GPGKey, error) { | |||||
| keys := make([]*GPGKey, 0, 10) | |||||
| return keys, c.getParsedResponse("GET", "/user/gpg_keys", nil, nil, &keys) | |||||
| } | |||||
| // GetGPGKey get current user's GPG key by key id | |||||
| func (c *Client) GetGPGKey(keyID int64) (*GPGKey, error) { | |||||
| key := new(GPGKey) | |||||
| return key, c.getParsedResponse("GET", fmt.Sprintf("/user/gpg_keys/%d", keyID), nil, nil, &key) | |||||
| } | |||||
| // CreateGPGKey create GPG key with options | |||||
| func (c *Client) CreateGPGKey(opt CreateGPGKeyOption) (*GPGKey, error) { | |||||
| body, err := json.Marshal(&opt) | |||||
| if err != nil { | |||||
| return nil, err | |||||
| } | |||||
| key := new(GPGKey) | |||||
| return key, c.getParsedResponse("POST", "/user/gpg_keys", jsonHeader, bytes.NewReader(body), key) | |||||
| } | |||||
| // DeleteGPGKey delete GPG key with key id | |||||
| func (c *Client) DeleteGPGKey(keyID int64) error { | |||||
| _, err := c.getResponse("DELETE", fmt.Sprintf("/user/gpg_keys/%d", keyID), nil, nil) | |||||
| return err | |||||
| } | |||||
| @@ -9,10 +9,10 @@ | |||||
| "revisionTime": "2017-02-22T02:52:05Z" | "revisionTime": "2017-02-22T02:52:05Z" | ||||
| }, | }, | ||||
| { | { | ||||
| "checksumSHA1": "BKj0haFTDebzdC2nACpoGzp3s8A=", | |||||
| "checksumSHA1": "K0VWBaa3ZUE598zVFGavdLB7vW4=", | |||||
| "path": "code.gitea.io/sdk/gitea", | "path": "code.gitea.io/sdk/gitea", | ||||
| "revision": "2064cc397bc48b0a46f8324a97421a824b11882e", | |||||
| "revisionTime": "2016-12-31T14:43:27Z" | |||||
| "revision": "06902fe19508c7ede2be38b71287c665efa1f10d", | |||||
| "revisionTime": "2017-02-19T11:17:32Z" | |||||
| }, | }, | ||||
| { | { | ||||
| "checksumSHA1": "IyfS7Rbl6OgR83QR7TOfKdDCq+M=", | "checksumSHA1": "IyfS7Rbl6OgR83QR7TOfKdDCq+M=", | ||||