2016-08-26 21:23:21 +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 repo
import (
"time"
api "github.com/gogits/go-gogs-client"
"github.com/gogits/gogs/models"
"github.com/gogits/gogs/modules/context"
)
func ListIssueComments ( ctx * context . APIContext ) {
var since time . Time
2016-08-26 23:40:53 +03:00
if len ( ctx . Query ( "since" ) ) > 0 {
since , _ = time . Parse ( time . RFC3339 , ctx . Query ( "since" ) )
}
2016-08-26 21:23:21 +03:00
2016-08-26 23:40:53 +03:00
// comments,err:=models.GetCommentsByIssueIDSince(, since)
issue , err := models . GetRawIssueByIndex ( ctx . Repo . Repository . ID , ctx . ParamsInt64 ( ":index" ) )
2016-08-26 21:23:21 +03:00
if err != nil {
2016-08-26 23:40:53 +03:00
ctx . Error ( 500 , "GetRawIssueByIndex" , err )
2016-08-26 21:23:21 +03:00
return
}
2016-08-26 23:40:53 +03:00
comments , err := models . GetCommentsByIssueIDSince ( issue . ID , since . Unix ( ) )
if err != nil {
ctx . Error ( 500 , "GetCommentsByIssueIDSince" , err )
return
2016-08-26 21:23:21 +03:00
}
2016-08-26 23:40:53 +03:00
apiComments := make ( [ ] * api . Comment , len ( comments ) )
for i := range comments {
apiComments [ i ] = comments [ i ] . APIFormat ( )
2016-08-26 21:23:21 +03:00
}
ctx . JSON ( 200 , & apiComments )
}
func CreateIssueComment ( ctx * context . APIContext , form api . CreateIssueCommentOption ) {
issue , err := models . GetIssueByIndex ( ctx . Repo . Repository . ID , ctx . ParamsInt64 ( ":index" ) )
if err != nil {
2016-08-26 23:40:53 +03:00
ctx . Error ( 500 , "GetIssueByIndex" , err )
2016-08-26 21:23:21 +03:00
return
}
2016-08-26 23:40:53 +03:00
comment , err := models . CreateIssueComment ( ctx . User , ctx . Repo . Repository , issue , form . Body , nil )
2016-08-26 21:23:21 +03:00
if err != nil {
2016-08-26 23:40:53 +03:00
ctx . Error ( 500 , "CreateIssueComment" , err )
2016-08-26 21:23:21 +03:00
return
}
ctx . JSON ( 201 , comment . APIFormat ( ) )
}
func EditIssueComment ( ctx * context . APIContext , form api . EditIssueCommentOption ) {
comment , err := models . GetCommentByID ( ctx . ParamsInt64 ( ":id" ) )
if err != nil {
if models . IsErrCommentNotExist ( err ) {
ctx . Error ( 404 , "GetCommentByID" , err )
} else {
2016-08-26 23:40:53 +03:00
ctx . Error ( 500 , "GetCommentByID" , err )
2016-08-26 21:23:21 +03:00
}
return
}
if ! ctx . IsSigned || ( ctx . User . ID != comment . PosterID && ! ctx . Repo . IsAdmin ( ) ) {
2016-08-26 23:40:53 +03:00
ctx . Status ( 403 )
2016-08-26 21:23:21 +03:00
return
} else if comment . Type != models . COMMENT_TYPE_COMMENT {
2016-08-26 23:40:53 +03:00
ctx . Status ( 204 )
2016-08-26 21:23:21 +03:00
return
}
comment . Content = form . Body
if err := models . UpdateComment ( comment ) ; err != nil {
2016-08-26 23:40:53 +03:00
ctx . Error ( 500 , "UpdateComment" , err )
2016-08-26 21:23:21 +03:00
return
}
ctx . JSON ( 200 , comment . APIFormat ( ) )
}