diff options
author | 杨宇千 <crupest@outlook.com> | 2019-03-07 21:18:14 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-07 21:18:14 +0800 |
commit | 028af6f786ac2664d301614d57bbff053c3dc9c0 (patch) | |
tree | 6fb1bf8abc6bebdc56e74e73db1e913239e41729 /Timeline/ClientApp/src/app/todo/todo-service/todo.service.ts | |
parent | d4410036b62a65cedbe977efdcea023440a3198e (diff) | |
parent | d5322a3c8c3f3bab25686650a4637dbe480b3886 (diff) | |
download | timeline-028af6f786ac2664d301614d57bbff053c3dc9c0.tar.gz timeline-028af6f786ac2664d301614d57bbff053c3dc9c0.tar.bz2 timeline-028af6f786ac2664d301614d57bbff053c3dc9c0.zip |
Merge pull request #9 from crupest/8-module
Reorganize with modules.
Diffstat (limited to 'Timeline/ClientApp/src/app/todo/todo-service/todo.service.ts')
-rw-r--r-- | Timeline/ClientApp/src/app/todo/todo-service/todo.service.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/Timeline/ClientApp/src/app/todo/todo-service/todo.service.ts b/Timeline/ClientApp/src/app/todo/todo-service/todo.service.ts new file mode 100644 index 00000000..ed1f2cbe --- /dev/null +++ b/Timeline/ClientApp/src/app/todo/todo-service/todo.service.ts @@ -0,0 +1,43 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Observable, from } from 'rxjs'; +import { switchMap, map, filter } from 'rxjs/operators'; + +import { TodoItem } from '../todo-item'; + +export interface IssueResponseItem { + number: number; + title: string; + state: string; + html_url: string; + pull_request?: any; +} + +export type IssueResponse = IssueResponseItem[]; + +@Injectable({ + providedIn: 'root' +}) +export class TodoService { + + readonly baseUrl = 'https://api.github.com/repos/crupest/Timeline'; + + constructor(private client: HttpClient) { } + + getWorkItemList(): Observable<TodoItem> { + return this.client.get<IssueResponse>(`${this.baseUrl}/issues`, { + params: { + state: 'all' + } + }).pipe( + switchMap(result => from(result)), + filter(result => result.pull_request === undefined), // filter out pull requests. + map(result => <TodoItem>{ + number: result.number, + title: result.title, + isClosed: result.state === 'closed', + detailUrl: result.html_url + }) + ); + } +} |