From 57dc9efaaef3756f5b432b030973295934634544 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kim=20=22BKC=22=20Carlb=C3=A4cker?=
 <kim.carlbacker@gmail.com>
Date: Tue, 29 Nov 2016 09:09:17 +0100
Subject: [PATCH] Update gitea/sdk vendor

---
 vendor/code.gitea.io/sdk/gitea/admin_org.go   |   1 +
 vendor/code.gitea.io/sdk/gitea/admin_repo.go  |   1 +
 vendor/code.gitea.io/sdk/gitea/admin_user.go  |   6 +
 vendor/code.gitea.io/sdk/gitea/doc.go         |   5 +
 vendor/code.gitea.io/sdk/gitea/gitea.go       |  11 ++
 vendor/code.gitea.io/sdk/gitea/issue.go       |  31 ++++-
 .../code.gitea.io/sdk/gitea/issue_comment.go  |  25 +++-
 vendor/code.gitea.io/sdk/gitea/issue_label.go |  22 +++-
 .../sdk/gitea/issue_milestone.go              |   8 ++
 .../code.gitea.io/sdk/gitea/miscellaneous.go  |   1 +
 vendor/code.gitea.io/sdk/gitea/org.go         |   9 +-
 vendor/code.gitea.io/sdk/gitea/org_member.go  |   2 +
 vendor/code.gitea.io/sdk/gitea/org_team.go    |   2 +
 vendor/code.gitea.io/sdk/gitea/pull.go        | 113 ++++++++++++++++--
 vendor/code.gitea.io/sdk/gitea/repo.go        |   4 +
 vendor/code.gitea.io/sdk/gitea/repo_branch.go |   2 +
 .../sdk/gitea/repo_collaborator.go            |   2 +
 vendor/code.gitea.io/sdk/gitea/repo_hook.go   |  46 +++++--
 vendor/code.gitea.io/sdk/gitea/repo_key.go    |   6 +
 vendor/code.gitea.io/sdk/gitea/user.go        |   5 +-
 vendor/code.gitea.io/sdk/gitea/user_app.go    |   4 +
 vendor/code.gitea.io/sdk/gitea/user_email.go  |   5 +
 vendor/code.gitea.io/sdk/gitea/user_follow.go |   8 ++
 vendor/code.gitea.io/sdk/gitea/user_key.go    |   6 +
 vendor/code.gitea.io/sdk/gitea/utils.go       |   3 +
 vendor/vendor.json                            |   6 +-
 26 files changed, 301 insertions(+), 33 deletions(-)
 create mode 100644 vendor/code.gitea.io/sdk/gitea/doc.go

diff --git a/vendor/code.gitea.io/sdk/gitea/admin_org.go b/vendor/code.gitea.io/sdk/gitea/admin_org.go
index 520fa1299..4071b6f18 100644
--- a/vendor/code.gitea.io/sdk/gitea/admin_org.go
+++ b/vendor/code.gitea.io/sdk/gitea/admin_org.go
@@ -10,6 +10,7 @@ import (
 	"fmt"
 )
 
+// AdminCreateOrg create an organization
 func (c *Client) AdminCreateOrg(user string, opt CreateOrgOption) (*Organization, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/admin_repo.go b/vendor/code.gitea.io/sdk/gitea/admin_repo.go
index 06daa9459..cf565ffa3 100644
--- a/vendor/code.gitea.io/sdk/gitea/admin_repo.go
+++ b/vendor/code.gitea.io/sdk/gitea/admin_repo.go
@@ -10,6 +10,7 @@ import (
 	"fmt"
 )
 
+// AdminCreateRepo create a repo
 func (c *Client) AdminCreateRepo(user string, opt CreateRepoOption) (*Repository, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/admin_user.go b/vendor/code.gitea.io/sdk/gitea/admin_user.go
index 186008b77..6ccad7e1c 100644
--- a/vendor/code.gitea.io/sdk/gitea/admin_user.go
+++ b/vendor/code.gitea.io/sdk/gitea/admin_user.go
@@ -10,6 +10,7 @@ import (
 	"fmt"
 )
 
+// CreateUserOption create user options
 type CreateUserOption struct {
 	SourceID   int64  `json:"source_id"`
 	LoginName  string `json:"login_name"`
@@ -20,6 +21,7 @@ type CreateUserOption struct {
 	SendNotify bool   `json:"send_notify"`
 }
 
+// AdminCreateUser create a user
 func (c *Client) AdminCreateUser(opt CreateUserOption) (*User, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -29,6 +31,7 @@ func (c *Client) AdminCreateUser(opt CreateUserOption) (*User, error) {
 	return user, c.getParsedResponse("POST", "/admin/users", jsonHeader, bytes.NewReader(body), user)
 }
 
+// EditUserOption edit user options
 type EditUserOption struct {
 	SourceID         int64  `json:"source_id"`
 	LoginName        string `json:"login_name"`
@@ -44,6 +47,7 @@ type EditUserOption struct {
 	MaxRepoCreation  *int   `json:"max_repo_creation"`
 }
 
+// AdminEditUser modify user informations
 func (c *Client) AdminEditUser(user string, opt EditUserOption) error {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -53,11 +57,13 @@ func (c *Client) AdminEditUser(user string, opt EditUserOption) error {
 	return err
 }
 
+// AdminDeleteUser delete one user according name
 func (c *Client) AdminDeleteUser(user string) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/admin/users/%s", user), nil, nil)
 	return err
 }
 
+// AdminCreateUserPublicKey create one user with options
 func (c *Client) AdminCreateUserPublicKey(user string, opt CreateKeyOption) (*PublicKey, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/doc.go b/vendor/code.gitea.io/sdk/gitea/doc.go
new file mode 100644
index 000000000..6bd327db4
--- /dev/null
+++ b/vendor/code.gitea.io/sdk/gitea/doc.go
@@ -0,0 +1,5 @@
+// Copyright 2016 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 "code.gitea.io/sdk/gitea"
diff --git a/vendor/code.gitea.io/sdk/gitea/gitea.go b/vendor/code.gitea.io/sdk/gitea/gitea.go
index 0a6bf4d74..20cb44fee 100644
--- a/vendor/code.gitea.io/sdk/gitea/gitea.go
+++ b/vendor/code.gitea.io/sdk/gitea/gitea.go
@@ -13,6 +13,7 @@ import (
 	"strings"
 )
 
+// Version return the library version
 func Version() string {
 	return "0.12.3"
 }
@@ -88,3 +89,13 @@ func (c *Client) getParsedResponse(method, path string, header http.Header, body
 	}
 	return json.Unmarshal(data, obj)
 }
+
+func (c *Client) getStatusCode(method, path string, header http.Header, body io.Reader) (int, error) {
+	resp, err := c.doRequest(method, path, header, body)
+	if err != nil {
+		return -1, err
+	}
+	defer resp.Body.Close()
+
+	return resp.StatusCode, nil
+}
diff --git a/vendor/code.gitea.io/sdk/gitea/issue.go b/vendor/code.gitea.io/sdk/gitea/issue.go
index 4392e0000..adb283abc 100644
--- a/vendor/code.gitea.io/sdk/gitea/issue.go
+++ b/vendor/code.gitea.io/sdk/gitea/issue.go
@@ -11,18 +11,23 @@ import (
 	"time"
 )
 
+// StateType issue state type
 type StateType string
 
 const (
-	STATE_OPEN   StateType = "open"
-	STATE_CLOSED StateType = "closed"
+	// StateOpen pr is opend
+	StateOpen StateType = "open"
+	// StateClosed pr is closed
+	StateClosed StateType = "closed"
 )
 
+// PullRequestMeta PR info if an issue is a PR
 type PullRequestMeta struct {
 	HasMerged bool       `json:"merged"`
 	Merged    *time.Time `json:"merged_at"`
 }
 
+// Issue an issue to a repository
 type Issue struct {
 	ID        int64      `json:"id"`
 	Index     int64      `json:"number"`
@@ -40,20 +45,37 @@ type Issue struct {
 	PullRequest *PullRequestMeta `json:"pull_request"`
 }
 
+// ListIssueOption list issue options
 type ListIssueOption struct {
-	Page int
+	Page  int
+	State string
 }
 
+// ListIssues returns all issues assigned the authenticated user
+func (c *Client) ListIssues(opt ListIssueOption) ([]*Issue, error) {
+	issues := make([]*Issue, 0, 10)
+	return issues, c.getParsedResponse("GET", fmt.Sprintf("/issues?page=%d", opt.Page), nil, nil, &issues)
+}
+
+// ListUserIssues returns all issues assigned to the authenticated user
+func (c *Client) ListUserIssues(opt ListIssueOption) ([]*Issue, error) {
+	issues := make([]*Issue, 0, 10)
+	return issues, c.getParsedResponse("GET", fmt.Sprintf("/user/issues?page=%d", opt.Page), nil, nil, &issues)
+}
+
+// ListRepoIssues returns all issues for a given repository
 func (c *Client) ListRepoIssues(owner, repo string, opt ListIssueOption) ([]*Issue, error) {
 	issues := make([]*Issue, 0, 10)
 	return issues, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues?page=%d", owner, repo, opt.Page), nil, nil, &issues)
 }
 
+// GetIssue returns a single issue for a given repository
 func (c *Client) GetIssue(owner, repo string, index int64) (*Issue, error) {
 	issue := new(Issue)
 	return issue, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d", owner, repo, index), nil, nil, issue)
 }
 
+// CreateIssueOption options to create one issue
 type CreateIssueOption struct {
 	Title     string  `json:"title" binding:"Required"`
 	Body      string  `json:"body"`
@@ -63,6 +85,7 @@ type CreateIssueOption struct {
 	Closed    bool    `json:"closed"`
 }
 
+// CreateIssue create a new issue for a given repository
 func (c *Client) CreateIssue(owner, repo string, opt CreateIssueOption) (*Issue, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -73,6 +96,7 @@ func (c *Client) CreateIssue(owner, repo string, opt CreateIssueOption) (*Issue,
 		jsonHeader, bytes.NewReader(body), issue)
 }
 
+// EditIssueOption edit issue options
 type EditIssueOption struct {
 	Title     string  `json:"title"`
 	Body      *string `json:"body"`
@@ -81,6 +105,7 @@ type EditIssueOption struct {
 	State     *string `json:"state"`
 }
 
+// EditIssue modify an existing issue for a given repository
 func (c *Client) EditIssue(owner, repo string, index int64, opt EditIssueOption) (*Issue, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/issue_comment.go b/vendor/code.gitea.io/sdk/gitea/issue_comment.go
index 59f064a8a..c6978f42d 100644
--- a/vendor/code.gitea.io/sdk/gitea/issue_comment.go
+++ b/vendor/code.gitea.io/sdk/gitea/issue_comment.go
@@ -13,11 +13,14 @@ import (
 
 // Comment represents a comment in commit and issue page.
 type Comment struct {
-	ID      int64     `json:"id"`
-	Poster  *User     `json:"user"`
-	Body    string    `json:"body"`
-	Created time.Time `json:"created_at"`
-	Updated time.Time `json:"updated_at"`
+	ID       int64     `json:"id"`
+	HTMLURL  string    `json:"html_url"`
+	PRURL    string    `json:"pull_request_url"`
+	IssueURL string    `json:"issue_url"`
+	Poster   *User     `json:"user"`
+	Body     string    `json:"body"`
+	Created  time.Time `json:"created_at"`
+	Updated  time.Time `json:"updated_at"`
 }
 
 // ListIssueComments list comments on an issue.
@@ -26,6 +29,12 @@ func (c *Client) ListIssueComments(owner, repo string, index int64) ([]*Comment,
 	return comments, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/comments", owner, repo, index), nil, nil, &comments)
 }
 
+// ListRepoIssueComments list comments for a given repo.
+func (c *Client) ListRepoIssueComments(owner, repo string) ([]*Comment, error) {
+	comments := make([]*Comment, 0, 10)
+	return comments, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/comments", owner, repo), nil, nil, &comments)
+}
+
 // CreateIssueCommentOption is option when creating an issue comment.
 type CreateIssueCommentOption struct {
 	Body string `json:"body" binding:"Required"`
@@ -55,3 +64,9 @@ func (c *Client) EditIssueComment(owner, repo string, index, commentID int64, op
 	comment := new(Comment)
 	return comment, c.getParsedResponse("PATCH", fmt.Sprintf("/repos/:%s/:%s/issues/%d/comments/%d", owner, repo, index, commentID), jsonHeader, bytes.NewReader(body), comment)
 }
+
+// DeleteIssueComment deletes an issue comment.
+func (c *Client) DeleteIssueComment(owner, repo string, index, commentID int64) error {
+	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/comments/%d", owner, repo, index, commentID), nil, nil)
+	return err
+}
diff --git a/vendor/code.gitea.io/sdk/gitea/issue_label.go b/vendor/code.gitea.io/sdk/gitea/issue_label.go
index 681e504c3..20607f2ef 100644
--- a/vendor/code.gitea.io/sdk/gitea/issue_label.go
+++ b/vendor/code.gitea.io/sdk/gitea/issue_label.go
@@ -10,27 +10,34 @@ import (
 	"fmt"
 )
 
+// Label a label to an issue or a pr
 type Label struct {
 	ID    int64  `json:"id"`
 	Name  string `json:"name"`
 	Color string `json:"color"`
+	URL   string `json:"url"`
 }
 
+// ListRepoLabels list lables of one reppsitory
 func (c *Client) ListRepoLabels(owner, repo string) ([]*Label, error) {
 	labels := make([]*Label, 0, 10)
 	return labels, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels", owner, repo), nil, nil, &labels)
 }
 
+// GetRepoLabel get one label of repository by repo it
+// TODO: maybe we need get a label by name
 func (c *Client) GetRepoLabel(owner, repo string, id int64) (*Label, error) {
 	label := new(Label)
 	return label, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), nil, nil, label)
 }
 
+// CreateLabelOption create options when one label of repository
 type CreateLabelOption struct {
 	Name  string `json:"name" binding:"Required"`
 	Color string `json:"color" binding:"Required;Size(7)"`
 }
 
+// CreateLabel create one label of repository
 func (c *Client) CreateLabel(owner, repo string, opt CreateLabelOption) (*Label, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -41,11 +48,13 @@ func (c *Client) CreateLabel(owner, repo string, opt CreateLabelOption) (*Label,
 		jsonHeader, bytes.NewReader(body), label)
 }
 
+// EditLabelOption edit label options
 type EditLabelOption struct {
 	Name  *string `json:"name"`
 	Color *string `json:"color"`
 }
 
+// EditLabel modify one label with options
 func (c *Client) EditLabel(owner, repo string, id int64, opt EditLabelOption) (*Label, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -55,43 +64,52 @@ func (c *Client) EditLabel(owner, repo string, id int64, opt EditLabelOption) (*
 	return label, c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), jsonHeader, bytes.NewReader(body), label)
 }
 
+// DeleteLabel delete one label of repository by id
+// TODO: maybe we need delete by name
 func (c *Client) DeleteLabel(owner, repo string, id int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/labels/%d", owner, repo, id), nil, nil)
 	return err
 }
 
+// IssueLabelsOption list one issue's labels options
 type IssueLabelsOption struct {
 	Labels []int64 `json:"labels"`
 }
 
+// GetIssueLabels get labels of one issue via issue id
 func (c *Client) GetIssueLabels(owner, repo string, index int64) ([]*Label, error) {
 	labels := make([]*Label, 0, 5)
 	return labels, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), nil, nil, &labels)
 }
 
+// AddIssueLabels add one or more labels to one issue
 func (c *Client) AddIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
 		return nil, err
 	}
-	labels := make([]*Label, 0)
+	var labels []*Label
 	return labels, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), jsonHeader, bytes.NewReader(body), &labels)
 }
 
+// ReplaceIssueLabels replace old labels of issue with new labels
 func (c *Client) ReplaceIssueLabels(owner, repo string, index int64, opt IssueLabelsOption) ([]*Label, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
 		return nil, err
 	}
-	labels := make([]*Label, 0)
+	var labels []*Label
 	return labels, c.getParsedResponse("PUT", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), jsonHeader, bytes.NewReader(body), &labels)
 }
 
+// DeleteIssueLabel delete one label of one issue by issue id and label id
+// TODO: maybe we need delete by label name and issue id
 func (c *Client) DeleteIssueLabel(owner, repo string, index, label int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/labels/%d", owner, repo, index, label), nil, nil)
 	return err
 }
 
+// ClearIssueLabels delete all the labels of one issue.
 func (c *Client) ClearIssueLabels(owner, repo string, index int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/issues/%d/labels", owner, repo, index), nil, nil)
 	return err
diff --git a/vendor/code.gitea.io/sdk/gitea/issue_milestone.go b/vendor/code.gitea.io/sdk/gitea/issue_milestone.go
index 58f17893a..e35325e8d 100644
--- a/vendor/code.gitea.io/sdk/gitea/issue_milestone.go
+++ b/vendor/code.gitea.io/sdk/gitea/issue_milestone.go
@@ -11,6 +11,7 @@ import (
 	"time"
 )
 
+// Milestone milestone is a collection of issues on one repository
 type Milestone struct {
 	ID           int64      `json:"id"`
 	Title        string     `json:"title"`
@@ -22,22 +23,26 @@ type Milestone struct {
 	Deadline     *time.Time `json:"due_on"`
 }
 
+// ListRepoMilestones list all the milestones of one repository
 func (c *Client) ListRepoMilestones(owner, repo string) ([]*Milestone, error) {
 	milestones := make([]*Milestone, 0, 10)
 	return milestones, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/milestones", owner, repo), nil, nil, &milestones)
 }
 
+// GetMilestone get one milestone by repo name and milestone id
 func (c *Client) GetMilestone(owner, repo string, id int64) (*Milestone, error) {
 	milestone := new(Milestone)
 	return milestone, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), nil, nil, milestone)
 }
 
+// CreateMilestoneOption options when creating milestone
 type CreateMilestoneOption struct {
 	Title       string     `json:"title"`
 	Description string     `json:"description"`
 	Deadline    *time.Time `json:"due_on"`
 }
 
+// CreateMilestone create one milestone with options
 func (c *Client) CreateMilestone(owner, repo string, opt CreateMilestoneOption) (*Milestone, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -47,6 +52,7 @@ func (c *Client) CreateMilestone(owner, repo string, opt CreateMilestoneOption)
 	return milestone, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/milestones", owner, repo), jsonHeader, bytes.NewReader(body), milestone)
 }
 
+// EditMilestoneOption options when modify milestone
 type EditMilestoneOption struct {
 	Title       string     `json:"title"`
 	Description *string    `json:"description"`
@@ -54,6 +60,7 @@ type EditMilestoneOption struct {
 	Deadline    *time.Time `json:"due_on"`
 }
 
+// EditMilestone modify milestone with options
 func (c *Client) EditMilestone(owner, repo string, id int64, opt EditMilestoneOption) (*Milestone, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -63,6 +70,7 @@ func (c *Client) EditMilestone(owner, repo string, id int64, opt EditMilestoneOp
 	return milestone, c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), jsonHeader, bytes.NewReader(body), milestone)
 }
 
+// DeleteMilestone delete one milestone by milestone id
 func (c *Client) DeleteMilestone(owner, repo string, id int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/milestones/%d", owner, repo, id), nil, nil)
 	return err
diff --git a/vendor/code.gitea.io/sdk/gitea/miscellaneous.go b/vendor/code.gitea.io/sdk/gitea/miscellaneous.go
index d97940e13..ae12d6ec5 100644
--- a/vendor/code.gitea.io/sdk/gitea/miscellaneous.go
+++ b/vendor/code.gitea.io/sdk/gitea/miscellaneous.go
@@ -4,6 +4,7 @@
 
 package gitea
 
+// MarkdownOption markdown options
 type MarkdownOption struct {
 	Text    string
 	Mode    string
diff --git a/vendor/code.gitea.io/sdk/gitea/org.go b/vendor/code.gitea.io/sdk/gitea/org.go
index 70d872cf5..103674a70 100644
--- a/vendor/code.gitea.io/sdk/gitea/org.go
+++ b/vendor/code.gitea.io/sdk/gitea/org.go
@@ -10,31 +10,36 @@ import (
 	"fmt"
 )
 
+// Organization a group of some repositories, users and teams
 type Organization struct {
 	ID          int64  `json:"id"`
 	UserName    string `json:"username"`
 	FullName    string `json:"full_name"`
-	AvatarUrl   string `json:"avatar_url"`
+	AvatarURL   string `json:"avatar_url"`
 	Description string `json:"description"`
 	Website     string `json:"website"`
 	Location    string `json:"location"`
 }
 
+// ListMyOrgs list all of current user's organizations
 func (c *Client) ListMyOrgs() ([]*Organization, error) {
 	orgs := make([]*Organization, 0, 5)
 	return orgs, c.getParsedResponse("GET", "/user/orgs", nil, nil, &orgs)
 }
 
+// ListUserOrgs list all of some user's organizations
 func (c *Client) ListUserOrgs(user string) ([]*Organization, error) {
 	orgs := make([]*Organization, 0, 5)
 	return orgs, c.getParsedResponse("GET", fmt.Sprintf("/users/%s/orgs", user), nil, nil, &orgs)
 }
 
+// GetOrg get one organization by name
 func (c *Client) GetOrg(orgname string) (*Organization, error) {
 	org := new(Organization)
 	return org, c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s", orgname), nil, nil, org)
 }
 
+// CreateOrgOption create one organization options
 type CreateOrgOption struct {
 	UserName    string `json:"username" binding:"Required"`
 	FullName    string `json:"full_name"`
@@ -43,6 +48,7 @@ type CreateOrgOption struct {
 	Location    string `json:"location"`
 }
 
+// EditOrgOption edit one organization options
 type EditOrgOption struct {
 	FullName    string `json:"full_name"`
 	Description string `json:"description"`
@@ -50,6 +56,7 @@ type EditOrgOption struct {
 	Location    string `json:"location"`
 }
 
+// EditOrg modify one organization via options
 func (c *Client) EditOrg(orgname string, opt EditOrgOption) error {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/org_member.go b/vendor/code.gitea.io/sdk/gitea/org_member.go
index 46e839805..9bb95af3e 100644
--- a/vendor/code.gitea.io/sdk/gitea/org_member.go
+++ b/vendor/code.gitea.io/sdk/gitea/org_member.go
@@ -10,10 +10,12 @@ import (
 	"fmt"
 )
 
+// AddOrgMembershipOption add user to organization options
 type AddOrgMembershipOption struct {
 	Role string `json:"role" binding:"Required"`
 }
 
+// AddOrgMembership add some one to an organization's member
 func (c *Client) AddOrgMembership(org, user string, opt AddOrgMembershipOption) error {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/org_team.go b/vendor/code.gitea.io/sdk/gitea/org_team.go
index 38da20d99..a94a43f6d 100644
--- a/vendor/code.gitea.io/sdk/gitea/org_team.go
+++ b/vendor/code.gitea.io/sdk/gitea/org_team.go
@@ -4,6 +4,7 @@
 
 package gitea
 
+// Team is a sub virtual organization of one Organization
 type Team struct {
 	ID          int64  `json:"id"`
 	Name        string `json:"name"`
@@ -11,6 +12,7 @@ type Team struct {
 	Permission  string `json:"permission"`
 }
 
+// CreateTeamOption options when create team
 type CreateTeamOption struct {
 	Name        string `json:"name" binding:"Required;AlphaDashDot;MaxSize(30)"`
 	Description string `json:"description" binding:"MaxSize(255)"`
diff --git a/vendor/code.gitea.io/sdk/gitea/pull.go b/vendor/code.gitea.io/sdk/gitea/pull.go
index efc746388..f55ecc042 100644
--- a/vendor/code.gitea.io/sdk/gitea/pull.go
+++ b/vendor/code.gitea.io/sdk/gitea/pull.go
@@ -5,12 +5,14 @@
 package gitea
 
 import (
+	"bytes"
+	"encoding/json"
+	"fmt"
 	"time"
 )
 
-// PullRequest represents a pull reqesut API object.
+// PullRequest represents a pull request API object.
 type PullRequest struct {
-	// Copied from issue.go
 	ID        int64      `json:"id"`
 	Index     int64      `json:"number"`
 	Poster    *User      `json:"user"`
@@ -22,16 +24,109 @@ type PullRequest struct {
 	State     StateType  `json:"state"`
 	Comments  int        `json:"comments"`
 
-	HeadBranch string      `json:"head_branch"`
-	HeadRepo   *Repository `json:"head_repo"`
-	BaseBranch string      `json:"base_branch"`
-	BaseRepo   *Repository `json:"base_repo"`
+	HTMLURL  string `json:"html_url"`
+	DiffURL  string `json:"diff_url"`
+	PatchURL string `json:"patch_url"`
 
-	HTMLURL string `json:"html_url"`
-
-	Mergeable      *bool      `json:"mergeable"`
+	Mergeable      bool       `json:"mergeable"`
 	HasMerged      bool       `json:"merged"`
 	Merged         *time.Time `json:"merged_at"`
 	MergedCommitID *string    `json:"merge_commit_sha"`
 	MergedBy       *User      `json:"merged_by"`
+
+	Base      *PRBranchInfo `json:"base"`
+	Head      *PRBranchInfo `json:"head"`
+	MergeBase string        `json:"merge_base"`
+}
+
+// PRBranchInfo base branch info when send a PR
+type PRBranchInfo struct {
+	Name       string      `json:"label"`
+	Ref        string      `json:"ref"`
+	Sha        string      `json:"sha"`
+	RepoID     int64       `json:"repo_id"`
+	Repository *Repository `json:"repo"`
+}
+
+// ListPullRequestsOptions options when list PRs
+type ListPullRequestsOptions struct {
+	Page  int    `json:"page"`
+	State string `json:"state"`
+}
+
+// ListRepoPullRequests list PRs of one repository
+func (c *Client) ListRepoPullRequests(owner, repo string, opt ListPullRequestsOptions) ([]*PullRequest, error) {
+	body, err := json.Marshal(&opt)
+	if err != nil {
+		return nil, err
+	}
+	prs := make([]*PullRequest, 0, 10)
+	return prs, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls", owner, repo), jsonHeader, bytes.NewReader(body), &prs)
+}
+
+// GetPullRequest get information of one PR
+func (c *Client) GetPullRequest(owner, repo string, index int64) (*PullRequest, error) {
+	pr := new(PullRequest)
+	return pr, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d", owner, repo, index), nil, nil, pr)
+}
+
+// CreatePullRequestOption options when creating a pull request
+type CreatePullRequestOption struct {
+	Head      string  `json:"head" binding:"Required"`
+	Base      string  `json:"base" binding:"Required"`
+	Title     string  `json:"title" binding:"Required"`
+	Body      string  `json:"body"`
+	Assignee  string  `json:"assignee"`
+	Milestone int64   `json:"milestone"`
+	Labels    []int64 `json:"labels"`
+}
+
+// CreatePullRequest create pull request with options
+func (c *Client) CreatePullRequest(owner, repo string, opt CreatePullRequestOption) (*PullRequest, error) {
+	body, err := json.Marshal(&opt)
+	if err != nil {
+		return nil, err
+	}
+	pr := new(PullRequest)
+	return pr, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/pulls", owner, repo),
+		jsonHeader, bytes.NewReader(body), pr)
+}
+
+// EditPullRequestOption options when modify pull request
+type EditPullRequestOption struct {
+	Title     string  `json:"title"`
+	Body      string  `json:"body"`
+	Assignee  string  `json:"assignee"`
+	Milestone int64   `json:"milestone"`
+	Labels    []int64 `json:"labels"`
+	State     *string `json:"state"`
+}
+
+// EditPullRequest modify pull request with PR id and options
+func (c *Client) EditPullRequest(owner, repo string, index int64, opt EditPullRequestOption) (*PullRequest, error) {
+	body, err := json.Marshal(&opt)
+	if err != nil {
+		return nil, err
+	}
+	pr := new(PullRequest)
+	return pr, c.getParsedResponse("PATCH", fmt.Sprintf("/repos/%s/%s/issues/%d", owner, repo, index),
+		jsonHeader, bytes.NewReader(body), pr)
+}
+
+// MergePullRequest merge a PR to repository by PR id
+func (c *Client) MergePullRequest(owner, repo string, index int64) error {
+	_, err := c.getResponse("POST", fmt.Sprintf("/repos/%s/%s/pulls/%d/merge", owner, repo, index), nil, nil)
+	return err
+}
+
+// IsPullRequestMerged test if one PR is merged to one repository
+func (c *Client) IsPullRequestMerged(owner, repo string, index int64) (bool, error) {
+	statusCode, err := c.getStatusCode("GET", fmt.Sprintf("/repos/%s/%s/pulls/%d/merge", owner, repo, index), nil, nil)
+
+	if err != nil {
+		return false, err
+	}
+
+	return statusCode == 204, nil
+
 }
diff --git a/vendor/code.gitea.io/sdk/gitea/repo.go b/vendor/code.gitea.io/sdk/gitea/repo.go
index 266c01cc9..75d6395cb 100644
--- a/vendor/code.gitea.io/sdk/gitea/repo.go
+++ b/vendor/code.gitea.io/sdk/gitea/repo.go
@@ -47,16 +47,19 @@ func (c *Client) ListMyRepos() ([]*Repository, error) {
 	return repos, c.getParsedResponse("GET", "/user/repos", nil, nil, &repos)
 }
 
+// ListUserRepos list all repositories of one user by user's name
 func (c *Client) ListUserRepos(user string) ([]*Repository, error) {
 	repos := make([]*Repository, 0, 10)
 	return repos, c.getParsedResponse("GET", fmt.Sprintf("/users/%s/repos", user), nil, nil, &repos)
 }
 
+// ListOrgRepos list all repositories of one organization by organization's name
 func (c *Client) ListOrgRepos(org string) ([]*Repository, error) {
 	repos := make([]*Repository, 0, 10)
 	return repos, c.getParsedResponse("GET", fmt.Sprintf("/orgs/%s/repos", org), nil, nil, &repos)
 }
 
+// CreateRepoOption options when creating repository
 type CreateRepoOption struct {
 	Name        string `json:"name" binding:"Required;AlphaDashDot;MaxSize(100)"`
 	Description string `json:"description" binding:"MaxSize(255)"`
@@ -99,6 +102,7 @@ func (c *Client) DeleteRepo(owner, repo string) error {
 	return err
 }
 
+// MigrateRepoOption options when migrate repository from an external place
 type MigrateRepoOption struct {
 	CloneAddr    string `json:"clone_addr" binding:"Required"`
 	AuthUsername string `json:"auth_username"`
diff --git a/vendor/code.gitea.io/sdk/gitea/repo_branch.go b/vendor/code.gitea.io/sdk/gitea/repo_branch.go
index c57df07c6..fadc9e395 100644
--- a/vendor/code.gitea.io/sdk/gitea/repo_branch.go
+++ b/vendor/code.gitea.io/sdk/gitea/repo_branch.go
@@ -14,11 +14,13 @@ type Branch struct {
 	Commit *PayloadCommit `json:"commit"`
 }
 
+// ListRepoBranches list all the branches of one repository
 func (c *Client) ListRepoBranches(user, repo string) ([]*Branch, error) {
 	branches := make([]*Branch, 0, 10)
 	return branches, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/branches", user, repo), nil, nil, &branches)
 }
 
+// GetRepoBranch get one branch's information of one repository
 func (c *Client) GetRepoBranch(user, repo, branch string) (*Branch, error) {
 	b := new(Branch)
 	return b, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/branches/%s", user, repo, branch), nil, nil, &b)
diff --git a/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go b/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go
index 1937de4c0..82f6f8f77 100644
--- a/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go
+++ b/vendor/code.gitea.io/sdk/gitea/repo_collaborator.go
@@ -10,10 +10,12 @@ import (
 	"fmt"
 )
 
+// AddCollaboratorOption options when add some user as a collaborator of a repository
 type AddCollaboratorOption struct {
 	Permission *string `json:"permission"`
 }
 
+// AddCollaborator add some user as a collaborator of a repository
 func (c *Client) AddCollaborator(user, repo, collaborator string, opt AddCollaboratorOption) error {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/repo_hook.go b/vendor/code.gitea.io/sdk/gitea/repo_hook.go
index 01cb25421..3367d2abe 100644
--- a/vendor/code.gitea.io/sdk/gitea/repo_hook.go
+++ b/vendor/code.gitea.io/sdk/gitea/repo_hook.go
@@ -14,9 +14,11 @@ import (
 )
 
 var (
+	// ErrInvalidReceiveHook FIXME
 	ErrInvalidReceiveHook = errors.New("Invalid JSON payload received over webhook")
 )
 
+// Hook a hook is a web hook when one repository changed
 type Hook struct {
 	ID      int64             `json:"id"`
 	Type    string            `json:"type"`
@@ -28,11 +30,13 @@ type Hook struct {
 	Created time.Time         `json:"created_at"`
 }
 
+// ListRepoHooks list all the hooks of one repository
 func (c *Client) ListRepoHooks(user, repo string) ([]*Hook, error) {
 	hooks := make([]*Hook, 0, 10)
 	return hooks, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/hooks", user, repo), nil, nil, &hooks)
 }
 
+// CreateHookOption options when create a hook
 type CreateHookOption struct {
 	Type   string            `json:"type" binding:"Required"`
 	Config map[string]string `json:"config" binding:"Required"`
@@ -40,6 +44,7 @@ type CreateHookOption struct {
 	Active bool              `json:"active"`
 }
 
+// CreateRepoHook create one hook with options
 func (c *Client) CreateRepoHook(user, repo string, opt CreateHookOption) (*Hook, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -49,12 +54,14 @@ func (c *Client) CreateRepoHook(user, repo string, opt CreateHookOption) (*Hook,
 	return h, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/hooks", user, repo), jsonHeader, bytes.NewReader(body), h)
 }
 
+// EditHookOption options when modify one hook
 type EditHookOption struct {
 	Config map[string]string `json:"config"`
 	Events []string          `json:"events"`
 	Active *bool             `json:"active"`
 }
 
+// EditRepoHook modify one hook with hook id and options
 func (c *Client) EditRepoHook(user, repo string, id int64, opt EditHookOption) error {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -64,23 +71,26 @@ func (c *Client) EditRepoHook(user, repo string, id int64, opt EditHookOption) e
 	return err
 }
 
+// DeleteRepoHook delete one hook with hook id
 func (c *Client) DeleteRepoHook(user, repo string, id int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/hooks/%d", user, repo, id), nil, nil)
 	return err
 }
 
+// Payloader payload is some part of one hook
 type Payloader interface {
 	SetSecret(string)
 	JSONPayload() ([]byte, error)
 }
 
+// PayloadUser FIXME
 type PayloadUser struct {
 	Name     string `json:"name"`
 	Email    string `json:"email"`
 	UserName string `json:"username"`
 }
 
-// FIXME: consider use same format as API when commits API are added.
+// PayloadCommit FIXME: consider use same format as API when commits API are added.
 type PayloadCommit struct {
 	ID        string       `json:"id"`
 	Message   string       `json:"message"`
@@ -103,18 +113,22 @@ var (
 //  \______  /|__|    \___  >____  /__|  \___  >
 //         \/             \/     \/          \/
 
+// CreatePayload FIXME
 type CreatePayload struct {
 	Secret  string      `json:"secret"`
+	Sha     string      `json:"sha"`
 	Ref     string      `json:"ref"`
 	RefType string      `json:"ref_type"`
 	Repo    *Repository `json:"repository"`
 	Sender  *User       `json:"sender"`
 }
 
+// SetSecret FIXME
 func (p *CreatePayload) SetSecret(secret string) {
 	p.Secret = secret
 }
 
+// JSONPayload return payload information
 func (p *CreatePayload) JSONPayload() ([]byte, error) {
 	return json.MarshalIndent(p, "", "  ")
 }
@@ -159,10 +173,12 @@ type PushPayload struct {
 	Sender     *User            `json:"sender"`
 }
 
+// SetSecret FIXME
 func (p *PushPayload) SetSecret(secret string) {
 	p.Secret = secret
 }
 
+// JSONPayload FIXME
 func (p *PushPayload) JSONPayload() ([]byte, error) {
 	return json.MarshalIndent(p, "", "  ")
 }
@@ -195,24 +211,36 @@ func (p *PushPayload) Branch() string {
 // |___/____  >____  >____/  \___  >
 //          \/     \/            \/
 
+// HookIssueAction FIXME
 type HookIssueAction string
 
 const (
-	HookIssueOpened        HookIssueAction = "opened"
-	HookIssueClosed        HookIssueAction = "closed"
-	HookIssueReopened      HookIssueAction = "reopened"
-	HookIssueEdited        HookIssueAction = "edited"
-	HookIssueAssigned      HookIssueAction = "assigned"
-	HookIssueUnassigned    HookIssueAction = "unassigned"
+	// HookIssueOpened opened
+	HookIssueOpened HookIssueAction = "opened"
+	// HookIssueClosed closed
+	HookIssueClosed HookIssueAction = "closed"
+	// HookIssueReOpened reopened
+	HookIssueReOpened HookIssueAction = "reopened"
+	// HookIssueEdited edited
+	HookIssueEdited HookIssueAction = "edited"
+	// HookIssueAssigned assigned
+	HookIssueAssigned HookIssueAction = "assigned"
+	// HookIssueUnassigned unassigned
+	HookIssueUnassigned HookIssueAction = "unassigned"
+	// HookIssueLabelUpdated label_updated
 	HookIssueLabelUpdated HookIssueAction = "label_updated"
+	// HookIssueLabelCleared label_cleared
 	HookIssueLabelCleared HookIssueAction = "label_cleared"
-	HookIssueSynchronized  HookIssueAction = "synchronized"
+	// HookIssueSynchronized synchronized
+	HookIssueSynchronized HookIssueAction = "synchronized"
 )
 
+// ChangesFromPayload FIXME
 type ChangesFromPayload struct {
 	From string `json:"from"`
 }
 
+// ChangesPayload FIXME
 type ChangesPayload struct {
 	Title *ChangesFromPayload `json:"title,omitempty"`
 	Body  *ChangesFromPayload `json:"body,omitempty"`
@@ -236,10 +264,12 @@ type PullRequestPayload struct {
 	Sender      *User           `json:"sender"`
 }
 
+// SetSecret FIXME
 func (p *PullRequestPayload) SetSecret(secret string) {
 	p.Secret = secret
 }
 
+// JSONPayload FIXME
 func (p *PullRequestPayload) JSONPayload() ([]byte, error) {
 	return json.MarshalIndent(p, "", "  ")
 }
diff --git a/vendor/code.gitea.io/sdk/gitea/repo_key.go b/vendor/code.gitea.io/sdk/gitea/repo_key.go
index acae30aa5..a0dbf0a58 100644
--- a/vendor/code.gitea.io/sdk/gitea/repo_key.go
+++ b/vendor/code.gitea.io/sdk/gitea/repo_key.go
@@ -11,6 +11,7 @@ import (
 	"time"
 )
 
+// DeployKey a deploy key
 type DeployKey struct {
 	ID       int64     `json:"id"`
 	Key      string    `json:"key"`
@@ -20,21 +21,25 @@ type DeployKey struct {
 	ReadOnly bool      `json:"read_only"`
 }
 
+// ListDeployKeys list all the deploy keys of one repository
 func (c *Client) ListDeployKeys(user, repo string) ([]*DeployKey, error) {
 	keys := make([]*DeployKey, 0, 10)
 	return keys, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/keys", user, repo), nil, nil, &keys)
 }
 
+// GetDeployKey get one deploy key with key id
 func (c *Client) GetDeployKey(user, repo string, keyID int64) (*DeployKey, error) {
 	key := new(DeployKey)
 	return key, c.getParsedResponse("GET", fmt.Sprintf("/repos/%s/%s/keys/%d", user, repo, keyID), nil, nil, &key)
 }
 
+// CreateKeyOption options when create deploy key
 type CreateKeyOption struct {
 	Title string `json:"title" binding:"Required"`
 	Key   string `json:"key" binding:"Required"`
 }
 
+// CreateDeployKey options when create one deploy key
 func (c *Client) CreateDeployKey(user, repo string, opt CreateKeyOption) (*DeployKey, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -44,6 +49,7 @@ func (c *Client) CreateDeployKey(user, repo string, opt CreateKeyOption) (*Deplo
 	return key, c.getParsedResponse("POST", fmt.Sprintf("/repos/%s/%s/keys", user, repo), jsonHeader, bytes.NewReader(body), key)
 }
 
+// DeleteDeployKey delete deploy key with key id
 func (c *Client) DeleteDeployKey(owner, repo string, keyID int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/repos/%s/%s/keys/%d", owner, repo, keyID), nil, nil)
 	return err
diff --git a/vendor/code.gitea.io/sdk/gitea/user.go b/vendor/code.gitea.io/sdk/gitea/user.go
index 8b78bea94..2560d85cb 100644
--- a/vendor/code.gitea.io/sdk/gitea/user.go
+++ b/vendor/code.gitea.io/sdk/gitea/user.go
@@ -11,12 +11,13 @@ import (
 // User represents a API user.
 type User struct {
 	ID        int64  `json:"id"`
-	UserName  string `json:"username"`
+	UserName  string `json:"login"`
 	FullName  string `json:"full_name"`
 	Email     string `json:"email"`
-	AvatarUrl string `json:"avatar_url"`
+	AvatarURL string `json:"avatar_url"`
 }
 
+// GetUserInfo get user info by user's name
 func (c *Client) GetUserInfo(user string) (*User, error) {
 	u := new(User)
 	err := c.getParsedResponse("GET", fmt.Sprintf("/users/%s", user), nil, nil, u)
diff --git a/vendor/code.gitea.io/sdk/gitea/user_app.go b/vendor/code.gitea.io/sdk/gitea/user_app.go
index 187053bc9..7fbb35dc3 100644
--- a/vendor/code.gitea.io/sdk/gitea/user_app.go
+++ b/vendor/code.gitea.io/sdk/gitea/user_app.go
@@ -12,6 +12,7 @@ import (
 	"net/http"
 )
 
+// BasicAuthEncode generate base64 of basic auth head
 func BasicAuthEncode(user, pass string) string {
 	return base64.StdEncoding.EncodeToString([]byte(user + ":" + pass))
 }
@@ -22,16 +23,19 @@ type AccessToken struct {
 	Sha1 string `json:"sha1"`
 }
 
+// ListAccessTokens lista all the access tokens of user
 func (c *Client) ListAccessTokens(user, pass string) ([]*AccessToken, error) {
 	tokens := make([]*AccessToken, 0, 10)
 	return tokens, c.getParsedResponse("GET", fmt.Sprintf("/users/%s/tokens", user),
 		http.Header{"Authorization": []string{"Basic " + BasicAuthEncode(user, pass)}}, nil, &tokens)
 }
 
+// CreateAccessTokenOption options when create access token
 type CreateAccessTokenOption struct {
 	Name string `json:"name" binding:"Required"`
 }
 
+// CreateAccessToken create one access token with options
 func (c *Client) CreateAccessToken(user, pass string, opt CreateAccessTokenOption) (*AccessToken, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/user_email.go b/vendor/code.gitea.io/sdk/gitea/user_email.go
index e9805ecb6..e167b5dfb 100644
--- a/vendor/code.gitea.io/sdk/gitea/user_email.go
+++ b/vendor/code.gitea.io/sdk/gitea/user_email.go
@@ -9,21 +9,25 @@ import (
 	"encoding/json"
 )
 
+// Email en email information of user
 type Email struct {
 	Email    string `json:"email"`
 	Verified bool   `json:"verified"`
 	Primary  bool   `json:"primary"`
 }
 
+// ListEmails all the email addresses of user
 func (c *Client) ListEmails() ([]*Email, error) {
 	emails := make([]*Email, 0, 3)
 	return emails, c.getParsedResponse("GET", "/user/emails", nil, nil, &emails)
 }
 
+// CreateEmailOption options when create an email
 type CreateEmailOption struct {
 	Emails []string `json:"emails"`
 }
 
+// AddEmail add one email to current user with options
 func (c *Client) AddEmail(opt CreateEmailOption) ([]*Email, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -33,6 +37,7 @@ func (c *Client) AddEmail(opt CreateEmailOption) ([]*Email, error) {
 	return emails, c.getParsedResponse("POST", "/user/emails", jsonHeader, bytes.NewReader(body), emails)
 }
 
+// DeleteEmail delete one email of current users'
 func (c *Client) DeleteEmail(opt CreateEmailOption) error {
 	body, err := json.Marshal(&opt)
 	if err != nil {
diff --git a/vendor/code.gitea.io/sdk/gitea/user_follow.go b/vendor/code.gitea.io/sdk/gitea/user_follow.go
index cbb2c7b3f..a197a7f18 100644
--- a/vendor/code.gitea.io/sdk/gitea/user_follow.go
+++ b/vendor/code.gitea.io/sdk/gitea/user_follow.go
@@ -6,41 +6,49 @@ package gitea
 
 import "fmt"
 
+// ListMyFollowers list all the followers of current user
 func (c *Client) ListMyFollowers(page int) ([]*User, error) {
 	users := make([]*User, 0, 10)
 	return users, c.getParsedResponse("GET", fmt.Sprintf("/user/followers?page=%d", page), nil, nil, &users)
 }
 
+// ListFollowers list all the followers of one user
 func (c *Client) ListFollowers(user string, page int) ([]*User, error) {
 	users := make([]*User, 0, 10)
 	return users, c.getParsedResponse("GET", fmt.Sprintf("/users/%s/followers?page=%d", user, page), nil, nil, &users)
 }
 
+// ListMyFollowing list all the users current user followed
 func (c *Client) ListMyFollowing(page int) ([]*User, error) {
 	users := make([]*User, 0, 10)
 	return users, c.getParsedResponse("GET", fmt.Sprintf("/user/following?page=%d", page), nil, nil, &users)
 }
 
+// ListFollowing list all the users the user followed
 func (c *Client) ListFollowing(user string, page int) ([]*User, error) {
 	users := make([]*User, 0, 10)
 	return users, c.getParsedResponse("GET", fmt.Sprintf("/users/%s/following?page=%d", user, page), nil, nil, &users)
 }
 
+// IsFollowing if current user followed the target
 func (c *Client) IsFollowing(target string) bool {
 	_, err := c.getResponse("GET", fmt.Sprintf("/user/following/%s", target), nil, nil)
 	return err == nil
 }
 
+// IsUserFollowing if the user followed the target
 func (c *Client) IsUserFollowing(user, target string) bool {
 	_, err := c.getResponse("GET", fmt.Sprintf("/users/%s/following/%s", user, target), nil, nil)
 	return err == nil
 }
 
+// Follow set current user follow the target
 func (c *Client) Follow(target string) error {
 	_, err := c.getResponse("PUT", fmt.Sprintf("/user/following/%s", target), nil, nil)
 	return err
 }
 
+// Unfollow set current user unfollow the target
 func (c *Client) Unfollow(target string) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/user/following/%s", target), nil, nil)
 	return err
diff --git a/vendor/code.gitea.io/sdk/gitea/user_key.go b/vendor/code.gitea.io/sdk/gitea/user_key.go
index 8af5ed7c4..3135b33a3 100644
--- a/vendor/code.gitea.io/sdk/gitea/user_key.go
+++ b/vendor/code.gitea.io/sdk/gitea/user_key.go
@@ -11,6 +11,7 @@ import (
 	"time"
 )
 
+// PublicKey publickey is a user key to push code to repository
 type PublicKey struct {
 	ID      int64     `json:"id"`
 	Key     string    `json:"key"`
@@ -19,21 +20,25 @@ type PublicKey struct {
 	Created time.Time `json:"created_at,omitempty"`
 }
 
+// ListPublicKeys list all the public keys of the user
 func (c *Client) ListPublicKeys(user string) ([]*PublicKey, error) {
 	keys := make([]*PublicKey, 0, 10)
 	return keys, c.getParsedResponse("GET", fmt.Sprintf("/users/%s/keys", user), nil, nil, &keys)
 }
 
+// ListMyPublicKeys list all the public keys of current user
 func (c *Client) ListMyPublicKeys() ([]*PublicKey, error) {
 	keys := make([]*PublicKey, 0, 10)
 	return keys, c.getParsedResponse("GET", "/user/keys", nil, nil, &keys)
 }
 
+// GetPublicKey get current user's public key by key id
 func (c *Client) GetPublicKey(keyID int64) (*PublicKey, error) {
 	key := new(PublicKey)
 	return key, c.getParsedResponse("GET", fmt.Sprintf("/user/keys/%d", keyID), nil, nil, &key)
 }
 
+// CreatePublicKey create public key with options
 func (c *Client) CreatePublicKey(opt CreateKeyOption) (*PublicKey, error) {
 	body, err := json.Marshal(&opt)
 	if err != nil {
@@ -43,6 +48,7 @@ func (c *Client) CreatePublicKey(opt CreateKeyOption) (*PublicKey, error) {
 	return key, c.getParsedResponse("POST", "/user/keys", jsonHeader, bytes.NewReader(body), key)
 }
 
+// DeletePublicKey delete public key with key id
 func (c *Client) DeletePublicKey(keyID int64) error {
 	_, err := c.getResponse("DELETE", fmt.Sprintf("/user/keys/%d", keyID), nil, nil)
 	return err
diff --git a/vendor/code.gitea.io/sdk/gitea/utils.go b/vendor/code.gitea.io/sdk/gitea/utils.go
index 8d962ba28..80892a1e7 100644
--- a/vendor/code.gitea.io/sdk/gitea/utils.go
+++ b/vendor/code.gitea.io/sdk/gitea/utils.go
@@ -10,14 +10,17 @@ import (
 
 var jsonHeader = http.Header{"content-type": []string{"application/json"}}
 
+// Bool return address of bool value
 func Bool(v bool) *bool {
 	return &v
 }
 
+// String return address of string value
 func String(v string) *string {
 	return &v
 }
 
+// Int64 return address of int64 value
 func Int64(v int64) *int64 {
 	return &v
 }
diff --git a/vendor/vendor.json b/vendor/vendor.json
index 14feb1ee2..e9b1d68e7 100644
--- a/vendor/vendor.json
+++ b/vendor/vendor.json
@@ -9,10 +9,10 @@
 			"revisionTime": "2016-11-13T14:20:52Z"
 		},
 		{
-			"checksumSHA1": "/uhZZppDeb3Rbp3h8C0ALR3hdrA=",
+			"checksumSHA1": "x5jr5+UwaMg861XyFWIoNzYmmMM=",
 			"path": "code.gitea.io/sdk/gitea",
-			"revision": "0a0a04ccf7a5e6b93d9a5507701635330cf4579c",
-			"revisionTime": "2016-11-07T15:06:50Z"
+			"revision": "140df7f34c05d0d7e5b03c2b4a7d38690b3a5152",
+			"revisionTime": "2016-11-29T07:37:12Z"
 		},
 		{
 			"checksumSHA1": "IyfS7Rbl6OgR83QR7TOfKdDCq+M=",