Files
Gogs/internal/route/api/v1/convert/convert.go

137 lines
3.0 KiB
Go
Raw Permalink Normal View History

2015-12-17 02:28:47 -05:00
package convert
import (
"context"
"fmt"
"github.com/unknwon/com"
2018-05-27 08:53:48 +08:00
"github.com/gogs/git-module"
api "github.com/gogs/go-gogs-client"
"gogs.io/gogs/internal/database"
)
func ToEmail(email *database.EmailAddress) *api.Email {
2015-12-15 22:57:18 -05:00
return &api.Email{
Email: email.Email,
Verified: email.IsActivated,
Primary: email.IsPrimary,
}
}
func ToBranch(b *database.Branch, c *git.Commit) *api.Branch {
2016-01-28 20:49:05 +01:00
return &api.Branch{
Name: b.Name,
Commit: ToCommit(c),
}
2016-01-28 20:49:05 +01:00
}
type Tag struct {
Name string `json:"name"`
Commit *api.PayloadCommit `json:"commit"`
}
func ToTag(b *database.Tag, c *git.Commit) *Tag {
return &Tag{
Name: b.Name,
Commit: ToCommit(c),
}
}
func ToCommit(c *git.Commit) *api.PayloadCommit {
authorUsername := ""
author, err := database.Handle.Users().GetByEmail(context.TODO(), c.Author.Email)
if err == nil {
authorUsername = author.Name
}
committerUsername := ""
committer, err := database.Handle.Users().GetByEmail(context.TODO(), c.Committer.Email)
if err == nil {
committerUsername = committer.Name
}
2016-01-28 20:49:05 +01:00
return &api.PayloadCommit{
ID: c.ID.String(),
git: migrate to github.com/gogs/git-module@v1.0.0 (#5958) * WIP * Finish `internal/db/git_diff.go` * FInish internal/db/mirror.go * Finish internal/db/pull.go * Finish internal/db/release.go * Finish internal/db/repo.go * Finish internal/db/repo_branch.go * Finish internal/db/repo_editor.go * Finish internal/db/update.go * Save my work * Add license header * Compile! * Merge master * Finish internal/cmd/hook.go * Finish internal/conf/static.go * Finish internal/context/repo.go * Finish internal/db/action.go * Finish internal/db/git_diff.go * Fix submodule URL inferring * Finish internal/db/mirror.go * Updat to beta.4 * css: update fonts * Finish internal/db/pull.go * Finish internal/db/release.go * Finish internal/db/repo_branch.go * Finish internal/db/wiki.go * gitutil: enhance infer submodule UR * Finish internal/route/api/v1/repo/commits.go * mirror: only collect branch commits after sync * mirror: fix tag support * Finish internal/db/repo.go * Finish internal/db/repo_editor.go * Finish internal/db/update.go * Finish internal/gitutil/pull_request.go * Make it compile * Finish internal/route/repo/setting.go * Finish internal/route/repo/branch.go * Finish internal/route/api/v1/repo/file.go * Finish internal/route/repo/download.go * Finish internal/route/repo/editor.go * Use helper * Finish internal/route/repo/issue.go * Finish internal/route/repo/pull.go * Finish internal/route/repo/release.go * Finish internal/route/repo/repo.go * Finish internal/route/repo/wiki.go * Finish internal/route/repo/commit.go * Finish internal/route/repo/view.go * Finish internal/gitutil/tag.go * go.sum
2020-03-08 19:09:31 +08:00
Message: c.Message,
URL: "Not implemented",
Author: &api.PayloadUser{
Name: c.Author.Name,
Email: c.Author.Email,
UserName: authorUsername,
},
Committer: &api.PayloadUser{
Name: c.Committer.Name,
Email: c.Committer.Email,
UserName: committerUsername,
2016-01-28 20:49:05 +01:00
},
Timestamp: c.Author.When,
2016-01-28 20:49:05 +01:00
}
}
func ToPublicKey(apiLink string, key *database.PublicKey) *api.PublicKey {
return &api.PublicKey{
ID: key.ID,
Key: key.Content,
URL: apiLink + com.ToStr(key.ID),
Title: key.Name,
Created: key.Created,
}
}
func ToHook(repoLink string, w *database.Webhook) *api.Hook {
config := map[string]string{
"url": w.URL,
"content_type": w.ContentType.Name(),
}
if w.HookTaskType == database.SLACK {
s := w.SlackMeta()
config["channel"] = s.Channel
config["username"] = s.Username
config["icon_url"] = s.IconURL
config["color"] = s.Color
}
return &api.Hook{
ID: w.ID,
Type: w.HookTaskType.Name(),
URL: fmt.Sprintf("%s/settings/hooks/%d", repoLink, w.ID),
Active: w.IsActive,
Config: config,
Events: w.EventsArray(),
Updated: w.Updated,
Created: w.Created,
}
}
func ToDeployKey(apiLink string, key *database.DeployKey) *api.DeployKey {
return &api.DeployKey{
ID: key.ID,
Key: key.Content,
URL: apiLink + com.ToStr(key.ID),
Title: key.Name,
Created: key.Created,
ReadOnly: true, // All deploy keys are read-only.
}
}
2015-12-17 02:28:47 -05:00
func ToOrganization(org *database.User) *api.Organization {
2015-12-17 02:28:47 -05:00
return &api.Organization{
2016-07-24 01:08:22 +08:00
ID: org.ID,
AvatarUrl: org.AvatarURL(),
2015-12-17 02:28:47 -05:00
UserName: org.Name,
FullName: org.FullName,
Description: org.Description,
Website: org.Website,
Location: org.Location,
}
}
func ToTeam(team *database.Team) *api.Team {
return &api.Team{
ID: team.ID,
Name: team.Name,
Description: team.Description,
Permission: team.Authorize.String(),
}
}