2015-12-05 01:16:42 +03:00
// Copyright 2015 The Gogs 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 utils
import (
"fmt"
"github.com/Unknwon/com"
api "github.com/gogits/go-gogs-client"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/setting"
)
// ApiUser converts user to its API format.
func ApiUser ( u * models . User ) * api . User {
return & api . User {
ID : u . Id ,
UserName : u . Name ,
FullName : u . FullName ,
Email : u . Email ,
AvatarUrl : u . AvatarLink ( ) ,
}
}
2015-12-16 06:57:18 +03:00
func ApiEmail ( email * models . EmailAddress ) * api . Email {
return & api . Email {
Email : email . Email ,
Verified : email . IsActivated ,
Primary : email . IsPrimary ,
}
}
2015-12-05 01:16:42 +03:00
// ApiRepository converts repository to API format.
func ApiRepository ( owner * models . User , repo * models . Repository , permission api . Permission ) * api . Repository {
cl := repo . CloneLink ( )
return & api . Repository {
Id : repo . ID ,
Owner : * ApiUser ( owner ) ,
FullName : owner . Name + "/" + repo . Name ,
Private : repo . IsPrivate ,
Fork : repo . IsFork ,
HtmlUrl : setting . AppUrl + owner . Name + "/" + repo . Name ,
CloneUrl : cl . HTTPS ,
SshUrl : cl . SSH ,
Permissions : permission ,
}
}
// ApiPublicKey converts public key to its API format.
func ApiPublicKey ( apiLink string , key * models . PublicKey ) * api . PublicKey {
return & api . PublicKey {
ID : key . ID ,
Key : key . Content ,
URL : apiLink + com . ToStr ( key . ID ) ,
Title : key . Name ,
Created : key . Created ,
}
}
// ApiHook converts webhook to its API format.
func ApiHook ( repoLink string , w * models . Webhook ) * api . Hook {
config := map [ string ] string {
"url" : w . URL ,
"content_type" : w . ContentType . Name ( ) ,
}
if w . HookTaskType == models . SLACK {
s := w . GetSlackHook ( )
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 ,
}
}
// ApiDeployKey converts deploy key to its API format.
func ApiDeployKey ( apiLink string , key * models . 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.
}
}