@@ -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=", | ||||