github.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package handler
  2. import (
  3. "net/http"
  4. "github.com/gin-gonic/gin"
  5. "github.com/chaitin/SafeLine/internal/service"
  6. )
  7. // GitHubHandler provides HTTP handlers for GitHub operations.
  8. type GitHubHandler struct {
  9. gitHubService *service.GitHubService
  10. }
  11. // NewGitHubHandler creates a new instance of GitHubHandler.
  12. func NewGitHubHandler(gitHubService *service.GitHubService) *GitHubHandler {
  13. return &GitHubHandler{
  14. gitHubService: gitHubService,
  15. }
  16. }
  17. // GetIssues handles GET requests for fetching GitHub issues.
  18. // @Summary get issues
  19. // @Description get issues from GitHub
  20. // @Tags GitHub
  21. // @Accept json
  22. // @Produce json
  23. // @Param q query string false "search by"
  24. // @Success 200 {array} service.Issue
  25. // @Router /repos/issues [get]
  26. func (h *GitHubHandler) GetIssues(c *gin.Context) {
  27. filter := c.Query("q")
  28. issues, err := h.gitHubService.GetIssues(c, filter)
  29. if err != nil {
  30. c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
  31. return
  32. }
  33. c.JSON(http.StatusOK, issues)
  34. }
  35. // GetDiscussions handles GET requests for fetching GitHub discussions.
  36. // @Summary get discussions
  37. // @Description get discussions from GitHub
  38. // @Tags GitHub
  39. // @Accept json
  40. // @Produce json
  41. // @Param q query string false "search by"
  42. // @Success 200 {array} service.Discussion
  43. // @Router /repos/discussions [get]
  44. func (h *GitHubHandler) GetDiscussions(c *gin.Context) {
  45. filter := c.Query("q")
  46. discussions, err := h.gitHubService.GetDiscussions(c, filter)
  47. if err != nil {
  48. c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
  49. return
  50. }
  51. c.JSON(http.StatusOK, discussions)
  52. }