diff --git a/controller/issue.go b/controller/issue.go index 0713ec8..122b666 100644 --- a/controller/issue.go +++ b/controller/issue.go @@ -12,13 +12,52 @@ import ( "fmt" ) +func PostIssue(c *gin.Context) { + var issueProxy model.PostCreateIssueProxy + if err := c.BindJSON(&issueProxy); err != nil { + c.AsciiJSON(http.StatusBadRequest, gin.H{ + "message": "CREATE_ISSUE_ERROR", + "error": err.Error(), + }) + return + } + + giteaIssue, err := issueProxy.TransformToGiteaCreateIssueOption() + if err != nil { + c.AsciiJSON(http.StatusBadRequest, gin.H{ + "message": "CREATE_ISSUE_ERROR", + "error": err.Error(), + }) + return + } + + response, err := giteaClient.CreateIssue(giteaIssue) + if err != nil { + c.AsciiJSON(http.StatusBadRequest, gin.H{ + "message": "CREATE_ISSUE_ERROR", + "error": err.Error(), + }) + return + } + c.AsciiJSON(http.StatusOK, response) +} + +func PostIssueSwagger() (*swagger.Endpoint){ + return endpoint.New("post", "/issues", "Create issue", + endpoint.Handler(PostIssue), + endpoint.Description("Post new issue"), + endpoint.Body(model.PostCreateIssueProxy{}, "Issue object", true), + endpoint.Tags("issues"), + endpoint.Response(http.StatusOK, gitea.Issue{}, "Gitea Issue list"), + ) +} + func GetIssues(c *gin.Context) { giteaIssues, err := giteaClient.GetIssues(); - proxyIssues := []model.GetCreateIssueProxy{} for _, issue := range giteaIssues { - proxyIssues = append(proxyIssues, model.TransformFromGitea(issue)) + proxyIssues = append(proxyIssues, model.IssueTransformFromGitea(issue)) } if(err != nil){ diff --git a/giteaClient/giteaClient.go b/giteaClient/giteaClient.go index 4905831..ac02ad6 100644 --- a/giteaClient/giteaClient.go +++ b/giteaClient/giteaClient.go @@ -73,6 +73,11 @@ func GetLabels() ([]*gitea.Label, error) { return giteaLabels, nil } -func CreateIssue(issue gitea.Issue){ - +func CreateIssue(issue gitea.CreateIssueOption) (*gitea.Issue, error){ + giteaCreateIssue, err := giteaClient.CreateIssue(giteaOwner, giteaRepo, issue) + if( err != nil){ + fmt.Println(fmt.Sprintf("Gitea get labels error: %+v", err.Error())) + return nil, err + } + return giteaCreateIssue, nil } \ No newline at end of file diff --git a/main.go b/main.go index 9b8b8d3..caca35c 100644 --- a/main.go +++ b/main.go @@ -62,6 +62,7 @@ func main() { swag.Tag("issues", "Gitea issues proxy endpoints"), swag.Tag("labels", "Gites labels for issue"), swag.Endpoints( + controller.PostIssueSwagger(), controller.GetIssuesSwagger(), controller.GetIssueSwagger(), controller.GetIssueCommentsSwagger(), diff --git a/model/createIssueProxy.go b/model/issueProxy.go similarity index 93% rename from model/createIssueProxy.go rename to model/issueProxy.go index 0a961fd..6364b1f 100644 --- a/model/createIssueProxy.go +++ b/model/issueProxy.go @@ -40,7 +40,7 @@ func (c PostCreateIssueProxy) TransformToGiteaCreateIssueOption() (gitea.CreateI return giteaObject, nil } -func TransformFromGitea(issue *gitea.Issue) (GetCreateIssueProxy) { +func IssueTransformFromGitea(issue *gitea.Issue) (GetCreateIssueProxy) { giteaIssue := GetCreateIssueProxy{ Title: issue.Title, diff --git a/model/labelProxy.go b/model/labelProxy.go new file mode 100644 index 0000000..8b53790 --- /dev/null +++ b/model/labelProxy.go @@ -0,0 +1 @@ +package model