| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  | // #docplaster
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // #docregion
 | 
					
						
							|  |  |  | // #docregion v1
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  | import {Injectable}     from 'angular2/core'; | 
					
						
							|  |  |  | import {Http, Response} from 'angular2/http'; | 
					
						
							| 
									
										
										
										
											2016-02-01 19:52:14 -08:00
										 |  |  | // #enddocregion v1
 | 
					
						
							|  |  |  | // #docregion import-request-options
 | 
					
						
							|  |  |  | import {Headers, RequestOptions} from 'angular2/http'; | 
					
						
							|  |  |  | // #enddocregion import-request-options
 | 
					
						
							|  |  |  | // #docregion v1
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  | import {Hero}           from './hero'; | 
					
						
							|  |  |  | import {Observable}     from 'rxjs/Observable'; | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | @Injectable() | 
					
						
							|  |  |  | export class HeroService { | 
					
						
							|  |  |  |   constructor (private http: Http) {} | 
					
						
							| 
									
										
										
										
											2016-02-17 18:13:57 +01:00
										 |  |  | // #enddocregion
 | 
					
						
							|  |  |  | // #enddocregion v1
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   /* | 
					
						
							|  |  |  |   // #docregion endpoint-json
 | 
					
						
							|  |  |  |   private _heroesUrl = 'app/heroes.json'; // URL to JSON file
 | 
					
						
							|  |  |  |   // #enddocregion endpoint-json
 | 
					
						
							|  |  |  |   */ | 
					
						
							|  |  |  | // #docregion
 | 
					
						
							|  |  |  | // #docregion v1
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |   // #docregion endpoint
 | 
					
						
							| 
									
										
										
										
											2016-02-17 18:13:57 +01:00
										 |  |  |   private _heroesUrl = 'app/heroes';  // URL to web api
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |   // #enddocregion endpoint
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |   // #docregion methods
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  |   // #docregion error-handling
 | 
					
						
							|  |  |  |   getHeroes () { | 
					
						
							| 
									
										
										
										
											2016-02-01 16:49:24 -08:00
										 |  |  |     // #docregion http-get, http-get-v1
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  |     return this.http.get(this._heroesUrl) | 
					
						
							|  |  |  |                     .map(res => <Hero[]> res.json().data) | 
					
						
							| 
									
										
										
										
											2016-02-01 16:49:24 -08:00
										 |  |  |                     // #enddocregion v1, http-get-v1, error-handling
 | 
					
						
							|  |  |  |                     .do(data => console.log(data)) // eyeball results in the console
 | 
					
						
							|  |  |  |                     // #docregion v1, http-get-v1, error-handling
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |                     .catch(this.handleError); | 
					
						
							| 
									
										
										
										
											2016-02-01 16:49:24 -08:00
										 |  |  |     // #enddocregion http-get, http-get-v1
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |   // #enddocregion error-handling
 | 
					
						
							|  |  |  |   // #enddocregion v1
 | 
					
						
							| 
									
										
										
										
											2016-02-01 19:52:14 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  |   // #docregion addhero
 | 
					
						
							|  |  |  |   addHero (name: string) : Observable<Hero>  { | 
					
						
							| 
									
										
										
										
											2016-02-01 19:52:14 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     let body = JSON.stringify({ name }); | 
					
						
							|  |  |  |     //#docregion headers
 | 
					
						
							|  |  |  |     let headers = new Headers({ 'Content-Type': 'application/json' }); | 
					
						
							|  |  |  |     let options = new RequestOptions({ headers: headers }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return this.http.post(this._heroesUrl, body, options) | 
					
						
							|  |  |  |     //#enddocregion headers
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  |                     .map(res =>  <Hero> res.json().data) | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |                     .catch(this.handleError) | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  |   } | 
					
						
							|  |  |  |   // #enddocregion addhero
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   // #docregion v1
 | 
					
						
							|  |  |  |   // #docregion error-handling
 | 
					
						
							|  |  |  |   private handleError (error: Response) { | 
					
						
							| 
									
										
										
										
											2016-02-21 11:42:10 -05:00
										 |  |  |     // in a real world app, we may send the error to some remote logging infrastructure
 | 
					
						
							| 
									
										
										
										
											2016-01-28 10:22:59 +01:00
										 |  |  |     // instead of just logging it to the console
 | 
					
						
							|  |  |  |     console.error(error); | 
					
						
							|  |  |  |     return Observable.throw(error.json().error || 'Server error'); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   // #enddocregion error-handling
 | 
					
						
							|  |  |  |   // #enddocregion methods
 | 
					
						
							| 
									
										
										
										
											2015-12-01 12:15:14 +01:00
										 |  |  | } | 
					
						
							|  |  |  | // #enddocregion
 |