@@ -6,7 +6,13 @@ import {
66 CreatePullRequestBody ,
77 IssuesParameters
88} from '../repository' ;
9- import { GitLab , Project , GetMergeRequestParameters , CreateMergeRequestBody } from './api' ;
9+ import {
10+ GitLab ,
11+ Project ,
12+ GetMergeRequestParameters ,
13+ CreateMergeRequestBody ,
14+ ProjectIssuesBody
15+ } from './api' ;
1016import { GitLabMergeRequest } from './merge-request' ;
1117
1218export class GitLabRepository implements Repository {
@@ -118,7 +124,49 @@ export class GitLabRepository implements Repository {
118124 } ;
119125 }
120126
121- public async getIssues ( _parameters ?: IssuesParameters | undefined ) : Promise < Response < Issue [ ] > > {
122- throw new Error ( 'Method not implemented.' ) ;
127+ public async getIssues ( parameters ?: IssuesParameters | undefined ) : Promise < Response < Issue [ ] > > {
128+ function getState ( state : IssuesParameters [ 'state' ] ) : ProjectIssuesBody [ 'state' ] {
129+ switch ( state ) {
130+ case 'open' :
131+ return 'opened' ;
132+ case 'closed' :
133+ return 'closed' ;
134+ }
135+ return undefined ;
136+ }
137+ function getOrderBy ( orderBy : IssuesParameters [ 'sort' ] ) : ProjectIssuesBody [ 'order_by' ] {
138+ switch ( orderBy ) {
139+ case 'created' :
140+ return 'created_at' ;
141+ case 'updated' :
142+ return 'updated_at' ;
143+ default :
144+ return undefined ;
145+ }
146+ }
147+
148+ const body : ProjectIssuesBody = { } ;
149+ if ( parameters ) {
150+ if ( parameters . state && parameters . state !== 'all' ) {
151+ body . state = getState ( parameters . state ) ;
152+ }
153+ if ( parameters . sort ) {
154+ body . order_by = getOrderBy ( parameters . sort ) ;
155+ }
156+ if ( parameters . direction ) {
157+ body . sort = parameters . direction ;
158+ }
159+ }
160+ const response = await this . client . getProjectIssues (
161+ encodeURIComponent ( this . project . path_with_namespace ) ,
162+ body
163+ ) ;
164+ return {
165+ body : response . body . map ( issue => ( {
166+ number : issue . iid ,
167+ title : issue . title ,
168+ url : issue . web_url
169+ } ) )
170+ } ;
123171 }
124172}
0 commit comments