MCPcopy Create free account
hub / github.com/driangle/taskmd / FetchTasks

Method FetchTasks

apps/cli/internal/sync/github/github.go:82–127  ·  view source on GitHub ↗
(cfg sync.SourceConfig)

Source from the content-addressed store, hash-verified

80}
81
82func (g *GitHubSource) FetchTasks(cfg sync.SourceConfig) ([]sync.ExternalTask, error) {
83 owner, repo, err := splitProject(cfg.Project)
84 if err != nil {
85 return nil, err
86 }
87
88 token, err := resolveToken(cfg.TokenEnv)
89 if err != nil {
90 return nil, err
91 }
92
93 baseURL := cfg.BaseURL
94 if baseURL == "" {
95 baseURL = defaultBaseURL
96 }
97
98 apiURL := fmt.Sprintf("%s/repos/%s/%s/issues", baseURL, owner, repo)
99 params := buildQueryParams(cfg.Filters)
100
101 client := g.HTTPClient
102 if client == nil {
103 client = http.DefaultClient
104 }
105
106 var tasks []sync.ExternalTask
107
108 for page := 1; page <= maxPages; page++ {
109 issues, hasMore, err := fetchPage(client, apiURL, params, token, page)
110 if err != nil {
111 return nil, err
112 }
113
114 for _, issue := range issues {
115 if issue.PullRequest != nil {
116 continue
117 }
118 tasks = append(tasks, issueToExternalTask(issue))
119 }
120
121 if !hasMore {
122 break
123 }
124 }
125
126 return tasks, nil
127}
128
129// JSON response types
130

Calls 5

splitProjectFunction · 0.85
resolveTokenFunction · 0.85
buildQueryParamsFunction · 0.85
fetchPageFunction · 0.70
issueToExternalTaskFunction · 0.70