From 4d4f6d0508e667e25fbaf6c1281cb9f03189bfaa Mon Sep 17 00:00:00 2001 From: Maksym Pavlenko Date: Sun, 2 Jun 2019 16:42:35 -0700 Subject: [PATCH] Add API service --- ui/src/app/api.service.spec.ts | 12 +++++++++++ ui/src/app/api.service.ts | 39 ++++++++++++++++++++++++++++++++++ ui/src/app/app.module.ts | 2 ++ 3 files changed, 53 insertions(+) create mode 100644 ui/src/app/api.service.spec.ts create mode 100644 ui/src/app/api.service.ts diff --git a/ui/src/app/api.service.spec.ts b/ui/src/app/api.service.spec.ts new file mode 100644 index 0000000..8874f7b --- /dev/null +++ b/ui/src/app/api.service.spec.ts @@ -0,0 +1,12 @@ +import { TestBed } from '@angular/core/testing'; + +import { APIService } from './api.service'; + +describe('APIService', () => { + beforeEach(() => TestBed.configureTestingModule({})); + + it('should be created', () => { + const service: APIService = TestBed.get(APIService); + expect(service).toBeTruthy(); + }); +}); diff --git a/ui/src/app/api.service.ts b/ui/src/app/api.service.ts new file mode 100644 index 0000000..89f60e4 --- /dev/null +++ b/ui/src/app/api.service.ts @@ -0,0 +1,39 @@ +import { Injectable } from '@angular/core'; +import {HttpClient} from '@angular/common/http'; +import {retry} from 'rxjs/operators'; +import {Observable} from 'rxjs'; + +export interface CreateRequest { + url: string; + format: string; + quality: string; + page_size: number; +} + +export interface CreateResponse { + id: string; +} + +export interface UserResponse { + user_id: string; + feature_level: number; + full_name: string; +} + +@Injectable({ + providedIn: 'root' +}) +export class APIService { + constructor(private http: HttpClient) {} + + createFeed(request: CreateRequest): Observable { + return this.http.post('/api/create', request); + } + + getUser(): Observable { + return this.http.get('/api/user') + .pipe( + retry(3) + ); + } +} diff --git a/ui/src/app/app.module.ts b/ui/src/app/app.module.ts index 487a19a..8a5e535 100644 --- a/ui/src/app/app.module.ts +++ b/ui/src/app/app.module.ts @@ -6,6 +6,7 @@ import { AppComponent } from './app.component'; import { IndexComponent } from './index/index.component'; import { InputComponent } from './input/input.component'; import {FormsModule} from '@angular/forms'; +import {HttpClientModule} from '@angular/common/http'; @NgModule({ declarations: [ @@ -15,6 +16,7 @@ import {FormsModule} from '@angular/forms'; ], imports: [ BrowserModule, + HttpClientModule, FormsModule, AppRoutingModule ],