diff --git a/app/app.module.ts b/app/app.module.ts index 1e180b7..882df90 100644 --- a/app/app.module.ts +++ b/app/app.module.ts @@ -6,7 +6,7 @@ import { HttpModule } from "@angular/http"; import { AppRoutingModule } from "./app-routing.module"; import { InMemoryWebApiModule } from "angular-in-memory-web-api"; -import { InMemoryDataService } from "./in-memory-data.service"; +import { InMemoryDuckService } from "./in-memory-data.service"; import { AppComponent } from "./app.component"; import { DuckDetailComponent } from "./duck-detail.component"; @@ -14,12 +14,13 @@ import { DashboardComponent } from "./dashboard.component"; import { DucksComponent } from "./ducks.component"; import { DuckService } from "./duck.service"; +import { UserService } from "./user.service"; @NgModule({ imports: [ BrowserModule, HttpModule, - InMemoryWebApiModule.forRoot(InMemoryDataService), + InMemoryWebApiModule.forRoot(InMemoryDuckService), AppRoutingModule ], declarations: [ @@ -28,7 +29,10 @@ import { DuckService } from "./duck.service"; DuckDetailComponent, DucksComponent ], - providers: [ DuckService ], + providers: [ + DuckService, + UserService + ], bootstrap: [ AppComponent ] }) export class AppModule {} diff --git a/app/in-memory-data.service.ts b/app/in-memory-data.service.ts index 870d8d1..6acbfb1 100644 --- a/app/in-memory-data.service.ts +++ b/app/in-memory-data.service.ts @@ -1,6 +1,6 @@ import { InMemoryDbService } from "angular-in-memory-web-api"; -export class InMemoryDataService implements InMemoryDbService { +export class InMemoryDuckService implements InMemoryDbService { createDb() { let ducks = [ { @@ -18,3 +18,17 @@ export class InMemoryDataService implements InMemoryDbService { return {ducks}; } } + +export class InMemoryUserService implements InMemoryDbService { + createDb() { + let users = [ + { + id: 1, + username: 'epolger', + password: 'epolger' + } + ]; + + return {users}; + } +} diff --git a/app/models.ts b/app/models.ts index 5323ff5..b8e9d71 100644 --- a/app/models.ts +++ b/app/models.ts @@ -3,3 +3,9 @@ export class Duck { name: string; color: string; } + +export class User { + id: number; + username: string; + password: string; +} diff --git a/app/user.service.ts b/app/user.service.ts new file mode 100644 index 0000000..3704bfe --- /dev/null +++ b/app/user.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from "@angular/core"; +import { Headers, Http } from "@angular/http"; + +import "rxjs/add/operator/toPromise"; + +import { User } from "./models"; + +@Injectable() +export class UserService { + private headers = new Headers({"Content-Type": "application/json"}); + private usersUrl = 'app/users'; + + currentUser: User = null; + + constructor(private http: Http) {} + + getUsers(): Promise { + return this.http.get(this.usersUrl) + .toPromise() + .then(response => response.json().data as User[]) + .catch(this.handleError); + } + + getUser(id: number): Promise { + return this.getUsers() + .then(users => users.find(user => user.id === id)); + } + + create(username: string, password: string): Promise { + return this.http.post(this.usersUrl, + JSON.stringify( + { + username: name, + password: password + }), + {headers: this.headers}) + .toPromise() + .then(res => res.json().data) + .catch(this.handleError); + } + + private handleError(error: any): Promise { + console.error("An error occured", error); + + return Promise.reject(error.message || error); + } +}