commit 46a6b93dedae0e25bf6378333e38f2c8b980e0cd Author: Aleksander Cynarski Date: Tue Dec 3 21:14:14 2019 +0100 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e5754bc --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +database.db +vendor +Makefile diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json new file mode 100644 index 0000000..6695b01 --- /dev/null +++ b/Godeps/Godeps.json @@ -0,0 +1,125 @@ +{ + "ImportPath": "gitea-issue", + "GoVersion": "go1.13", + "GodepVersion": "v80", + "Deps": [ + { + "ImportPath": "code.gitea.io/sdk/gitea", + "Rev": "b374d7ccc4b455f1e1829ab3ff0808de80bc39e0" + }, + { + "ImportPath": "github.com/caarlos0/env", + "Comment": "v6.1.0-4-g6cef6a7", + "Rev": "6cef6a7f8b01a4288118f1a4c5c303f117c1c7f0" + }, + { + "ImportPath": "github.com/gin-contrib/sse", + "Comment": "v0.1.0-1-g43f0f29", + "Rev": "43f0f29dbd2b3f0feeebff91fd9cda22db296938" + }, + { + "ImportPath": "github.com/gin-gonic/gin", + "Comment": "v1.4.0-57-g517eacb", + "Rev": "517eacb4f9ca7276511841c63e2911d6ec94c22a" + }, + { + "ImportPath": "github.com/gin-gonic/gin/binding", + "Comment": "v1.4.0-57-g517eacb", + "Rev": "517eacb4f9ca7276511841c63e2911d6ec94c22a" + }, + { + "ImportPath": "github.com/gin-gonic/gin/internal/json", + "Comment": "v1.4.0-57-g517eacb", + "Rev": "517eacb4f9ca7276511841c63e2911d6ec94c22a" + }, + { + "ImportPath": "github.com/gin-gonic/gin/render", + "Comment": "v1.4.0-57-g517eacb", + "Rev": "517eacb4f9ca7276511841c63e2911d6ec94c22a" + }, + { + "ImportPath": "github.com/go-playground/locales", + "Comment": "v0.13.0", + "Rev": "9f105231d3a5f6877a2bf8321dfa15ea6f844b1b" + }, + { + "ImportPath": "github.com/go-playground/locales/currency", + "Comment": "v0.13.0", + "Rev": "9f105231d3a5f6877a2bf8321dfa15ea6f844b1b" + }, + { + "ImportPath": "github.com/go-playground/universal-translator", + "Comment": "v0.16.0-1-g7120149", + "Rev": "71201497bace774495daed26a3874fd339e0b538" + }, + { + "ImportPath": "github.com/golang/protobuf/proto", + "Comment": "v1.3.2-4-ged6926b3", + "Rev": "ed6926b37a637426117ccab59282c3839528a700" + }, + { + "ImportPath": "github.com/jinzhu/gorm", + "Comment": "v1.9.11-20-g179760d", + "Rev": "179760d8343ed15cbb9f071ca824bc35ee7784bb" + }, + { + "ImportPath": "github.com/jinzhu/gorm/dialects/sqlite", + "Comment": "v1.9.11-20-g179760d", + "Rev": "179760d8343ed15cbb9f071ca824bc35ee7784bb" + }, + { + "ImportPath": "github.com/jinzhu/inflection", + "Comment": "v1.0.0", + "Rev": "f5c5f50e6090ae76a29240b61ae2a90dd810112e" + }, + { + "ImportPath": "github.com/json-iterator/go", + "Comment": "1.1.8-2-gdc11f49", + "Rev": "dc11f49689fd1c9a6de20749def70bd889bf0d42" + }, + { + "ImportPath": "github.com/leodido/go-urn", + "Comment": "v1.2.0", + "Rev": "a0f5013415294bb94553821ace21a1a74c0298cc" + }, + { + "ImportPath": "github.com/mattn/go-isatty", + "Comment": "v0.0.10-1-g0e9ddb7", + "Rev": "0e9ddb7c0c0aef74fa25eaba4141e6b5ab7aca2a" + }, + { + "ImportPath": "github.com/mattn/go-sqlite3", + "Comment": "v1.11.0-15-g3f45aef", + "Rev": "3f45aefa8dc8bbdd97619dd2765f864972f3310e" + }, + { + "ImportPath": "github.com/modern-go/concurrent", + "Comment": "1.0.3", + "Rev": "bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94" + }, + { + "ImportPath": "github.com/modern-go/reflect2", + "Comment": "v1.0.1", + "Rev": "94122c33edd36123c84d5368cfb2b69df93a0ec8" + }, + { + "ImportPath": "github.com/ugorji/go/codec", + "Comment": "codec/codecgen/v1.1.7-29-g42bc974", + "Rev": "42bc974514ff101a54c6b72a0e4dee29d96c0b26" + }, + { + "ImportPath": "golang.org/x/sys/unix", + "Rev": "f43be2a4598cf3a47be9f94f0c28197ed9eae611" + }, + { + "ImportPath": "gopkg.in/go-playground/validator.v9", + "Comment": "v9.30.0", + "Rev": "cd1bd581694a11c089aea885a26247c5f783a4cf" + }, + { + "ImportPath": "gopkg.in/yaml.v2", + "Comment": "v2.2.4", + "Rev": "f221b8435cfb71e54062f6c6e99e9ade30b124d5" + } + ] +} diff --git a/Godeps/Readme b/Godeps/Readme new file mode 100644 index 0000000..4cdaa53 --- /dev/null +++ b/Godeps/Readme @@ -0,0 +1,5 @@ +This directory tree is generated automatically by godep. + +Please do not edit. + +See https://github.com/tools/godep for more information. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/giteaClient/giteaClient.go b/giteaClient/giteaClient.go new file mode 100644 index 0000000..ffcec86 --- /dev/null +++ b/giteaClient/giteaClient.go @@ -0,0 +1,69 @@ +package giteaClient + +import ( + "code.gitea.io/sdk/gitea" + "fmt" +) + +var( + giteaClient *gitea.Client + giteaOwner string + giteaRepo string +) + +func SetUp(config GiteaConfig){ + giteaClient = gitea.NewClient(config.GiteaUrl, config.GiteaToken) + giteaOwner = config.GiteaOwner + giteaRepo = config.GiteaRepo +} + +func GetUserInfo() (*gitea.User, error){ + usr, err := giteaClient.GetMyUserInfo() + if(err != nil){ + return nil, err + } + return usr, nil +} + +func GetServerInfo() (string, error) { + ver, err := giteaClient.ServerVersion() + if(err != nil){ + return "", err + } + return ver, nil +} + +func GetIssues() ([]*gitea.Issue, error){ + opt := gitea.ListIssueOption{ + Page: 0, + State: "open", + } + giteaIssues, err := giteaClient.ListRepoIssues(giteaOwner, giteaRepo, opt) + if( err != nil){ + fmt.Println(fmt.Sprintf("Gitea error: %+v", err.Error())) + return nil, err + } + return giteaIssues, nil +} + +func GetIssue(issueID int64) (*gitea.Issue, error) { + giteaIssue, err := giteaClient.GetIssue(giteaOwner, giteaRepo, issueID) + if( err != nil){ + fmt.Println(fmt.Sprintf("GetIssue gitea error: %+v", err.Error())) + return nil, err + } + return giteaIssue, nil +} + +func GetIssueComments(issueID int64) ([]*gitea.Comment, error) { + giteaIssueComments, err := giteaClient.ListIssueComments(giteaOwner, giteaRepo, issueID) + if( err != nil){ + fmt.Println(fmt.Sprintf("Gitea error: %+v", err.Error())) + return nil, err + } + return giteaIssueComments, nil +} + +func CreateIssue(issue gitea.Issue){ + +} \ No newline at end of file diff --git a/giteaClient/giteaConfig.go b/giteaClient/giteaConfig.go new file mode 100644 index 0000000..1e2f262 --- /dev/null +++ b/giteaClient/giteaConfig.go @@ -0,0 +1,8 @@ +package giteaClient + +type GiteaConfig struct { + GiteaUrl string `env:"GITEA_URL" envDefault:"https://git.cynarski.pl"` + GiteaToken string `env:"GITEA_TOKEN,required"` + GiteaOwner string `env:"GITEA_OWNER,required"` + GiteaRepo string `env:"GITEA_REPO,required"` +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..64c6e46 --- /dev/null +++ b/main.go @@ -0,0 +1,91 @@ +package main + +import ( + "fmt" + "gitea-issue/giteaClient" + "github.com/caarlos0/env" + "github.com/gin-gonic/gin" + "github.com/jinzhu/gorm" + _ "github.com/jinzhu/gorm/dialects/sqlite" + "net/http" + "strconv" +) + +var ( + db *gorm.DB + giteaConfig giteaClient.GiteaConfig +) + +func init() { + //open a db connection + var err error + db, err := gorm.Open("sqlite3", "./database.db") + if err != nil { + panic("failed to connect database") + } + if err := env.Parse(&giteaConfig); err != nil { + panic("ENV error") + } + + giteaClient.SetUp(giteaConfig) + db.AutoMigrate(&userModel{}) +} + +func main() { + + router := gin.Default() + + v1 := router.Group("/api/v1/issues") + { + v1.GET("/", getIssues) + v1.GET("/:id", getIssue) //Migrate the schema + + v1.GET("/:id/comments", getIssue) + } + + _ = router.Run() + +} + +type ( + // todoModel describes a todoModel type + userModel struct { + gorm.Model + Email string `json:"email"` + Token int `json:"token"` + } +) + +func getIssues(c *gin.Context) { + issues, err := giteaClient.GetIssues(); + if(err != nil){ + c.AbortWithStatus(http.StatusNotFound) + } + c.AsciiJSON(http.StatusOK, issues) +} + +func getIssue(c *gin.Context) { + issueId, err := strconv.ParseInt(c.Param("id"), 10, 64) + if err != nil { + fmt.Println(fmt.Sprintf("ParseInt err: %+v", err)) + c.AsciiJSON(http.StatusNotFound, err.Error()) + } + issue, err := giteaClient.GetIssue(issueId) + if err != nil { + c.AbortWithStatus(http.StatusNotFound) + } + c.AsciiJSON(http.StatusOK, issue) +} + +func getIssueComments(c *gin.Context) { + issueId, err := strconv.ParseInt(c.Param("id"), 10, 64) + if err != nil { + fmt.Println(fmt.Sprintf("ParseInt err: %+v", err)) + c.AsciiJSON(http.StatusNotFound, err.Error()) + } + issueComments, err := giteaClient.GetIssueComments(issueId) + if err != nil { + c.AbortWithStatus(http.StatusNotFound) + } + c.AsciiJSON(http.StatusOK, issueComments) +} \ No newline at end of file