diff --git a/cmd/gitw/main.go b/cmd/gitw/main.go index b9f80a5..8085d15 100644 --- a/cmd/gitw/main.go +++ b/cmd/gitw/main.go @@ -10,22 +10,20 @@ import ( func main() { repository := gitea.NewRepository("gitwarrior", "yves-biener") server := gitea.NewGitea("https://gitea.yves-biener.de") - issues, err := server.GetIssues(repository) + issue, err := server.GetIssue(repository, 1) if err != nil { fmt.Fprintln(os.Stderr, err) + os.Exit(-1) } - milestones, err := server.GetMilestones(repository) + milestone, err := server.GetMilestone(repository, 1) if err != nil { fmt.Fprintln(os.Stderr, err) + os.Exit(-1) } - for _, issue := range issues { - fmt.Printf("%#v\n", issue) - } + fmt.Printf("%#v\n", issue) fmt.Println("---") - for _, issue := range milestones { - fmt.Printf("%#v\n", issue) - } + fmt.Printf("%#v\n", milestone) // necessary configurations (see config file gitw.json) // - access code for gitea diff --git a/internal/gitea/issue.go b/internal/gitea/issue.go index 970efb9..e47b399 100644 --- a/internal/gitea/issue.go +++ b/internal/gitea/issue.go @@ -56,3 +56,20 @@ func (gitea *Gitea) GetIssues(repo Repository) ([]Issue, error) { } return data, nil } + +func (gitea *Gitea) GetIssue(repo Repository, id uint) (Issue, error) { + var issue Issue + url := fmt.Sprintf("%s/repos/%s/issues/%d", gitea.Url(), repo.Full_name, id) + response, err := http.Get(url) + if err != nil { + return issue, err + } + defer response.Body.Close() + decoder := json.NewDecoder(response.Body) + // NOTE: remove this if I do not want to store everything from the json result in the struct + decoder.DisallowUnknownFields() // remain if every field shall be extracted + if err = decoder.Decode(&issue); err != nil { + return issue, err + } + return issue, nil +} diff --git a/internal/gitea/milestone.go b/internal/gitea/milestone.go index 99bd834..3b8e0dc 100644 --- a/internal/gitea/milestone.go +++ b/internal/gitea/milestone.go @@ -36,3 +36,20 @@ func (gitea *Gitea) GetMilestones(repo Repository) ([]Milestone, error) { } return data, nil } + +func (gitea *Gitea) GetMilestone(repo Repository, id uint) (Milestone, error) { + url := fmt.Sprintf("%s/repos/%s/milestones/%d", gitea.Url(), repo.Full_name, id) + response, err := http.Get(url) + var milestone Milestone + if err != nil { + return milestone, err + } + defer response.Body.Close() + decoder := json.NewDecoder(response.Body) + // NOTE: remove this if I do not want to store everything from the json result in the struct + decoder.DisallowUnknownFields() // remain if every field shall be extracted + if err = decoder.Decode(&milestone); err != nil { + return milestone, err + } + return milestone, nil +}