2015-12-16 06:57:18 +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 user
import (
api "github.com/gogits/go-gogs-client"
"github.com/gogits/gogs/models"
2016-03-11 19:56:52 +03:00
"github.com/gogits/gogs/modules/context"
2015-12-16 06:57:18 +03:00
"github.com/gogits/gogs/modules/setting"
2015-12-17 10:28:47 +03:00
"github.com/gogits/gogs/routers/api/v1/convert"
2015-12-16 06:57:18 +03:00
)
2015-12-17 10:28:47 +03:00
// https://github.com/gogits/go-gogs-client/wiki/Users-Emails#list-email-addresses-for-a-user
2016-03-14 01:49:16 +03:00
func ListEmails ( ctx * context . APIContext ) {
2016-07-23 20:08:22 +03:00
emails , err := models . GetEmailAddresses ( ctx . User . ID )
2015-12-16 06:57:18 +03:00
if err != nil {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "GetEmailAddresses" , err )
2015-12-16 06:57:18 +03:00
return
}
apiEmails := make ( [ ] * api . Email , len ( emails ) )
for i := range emails {
2016-03-14 06:20:22 +03:00
apiEmails [ i ] = convert . ToEmail ( emails [ i ] )
2015-12-16 06:57:18 +03:00
}
ctx . JSON ( 200 , & apiEmails )
}
2015-12-17 10:28:47 +03:00
// https://github.com/gogits/go-gogs-client/wiki/Users-Emails#add-email-addresses
2016-03-14 01:49:16 +03:00
func AddEmail ( ctx * context . APIContext , form api . CreateEmailOption ) {
2015-12-16 06:57:18 +03:00
if len ( form . Emails ) == 0 {
ctx . Status ( 422 )
return
}
emails := make ( [ ] * models . EmailAddress , len ( form . Emails ) )
for i := range form . Emails {
emails [ i ] = & models . EmailAddress {
2016-07-23 20:08:22 +03:00
UID : ctx . User . ID ,
2015-12-16 06:57:18 +03:00
Email : form . Emails [ i ] ,
IsActivated : ! setting . Service . RegisterEmailConfirm ,
}
}
if err := models . AddEmailAddresses ( emails ) ; err != nil {
if models . IsErrEmailAlreadyUsed ( err ) {
2016-03-14 01:49:16 +03:00
ctx . Error ( 422 , "" , "Email address has been used: " + err . ( models . ErrEmailAlreadyUsed ) . Email )
2015-12-16 06:57:18 +03:00
} else {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "AddEmailAddresses" , err )
2015-12-16 06:57:18 +03:00
}
return
}
apiEmails := make ( [ ] * api . Email , len ( emails ) )
for i := range emails {
2016-03-14 06:20:22 +03:00
apiEmails [ i ] = convert . ToEmail ( emails [ i ] )
2015-12-16 06:57:18 +03:00
}
ctx . JSON ( 201 , & apiEmails )
}
2015-12-17 10:28:47 +03:00
// https://github.com/gogits/go-gogs-client/wiki/Users-Emails#delete-email-addresses
2016-03-14 01:49:16 +03:00
func DeleteEmail ( ctx * context . APIContext , form api . CreateEmailOption ) {
2015-12-16 06:57:18 +03:00
if len ( form . Emails ) == 0 {
ctx . Status ( 204 )
return
}
emails := make ( [ ] * models . EmailAddress , len ( form . Emails ) )
for i := range form . Emails {
emails [ i ] = & models . EmailAddress {
Email : form . Emails [ i ] ,
}
}
if err := models . DeleteEmailAddresses ( emails ) ; err != nil {
2016-03-14 01:49:16 +03:00
ctx . Error ( 500 , "DeleteEmailAddresses" , err )
2015-12-16 06:57:18 +03:00
return
}
ctx . Status ( 204 )
}