aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/shared/auth
diff options
context:
space:
mode:
authorChocobozzz <florian.bigard@gmail.com>2016-08-23 16:54:21 +0200
committerChocobozzz <florian.bigard@gmail.com>2016-08-23 16:54:21 +0200
commitde59c48f5f317018e3f746bbe4a7b7efe00109f2 (patch)
treebc3d007c5aaed8dc72119763f3b1731c5777f218 /client/src/app/shared/auth
parentdef16d33d19153c6583fa8a30634760b3d64d34c (diff)
downloadPeerTube-de59c48f5f317018e3f746bbe4a7b7efe00109f2.tar.gz
PeerTube-de59c48f5f317018e3f746bbe4a7b7efe00109f2.tar.zst
PeerTube-de59c48f5f317018e3f746bbe4a7b7efe00109f2.zip
Client: centralize http res extraction in a service
Diffstat (limited to 'client/src/app/shared/auth')
-rw-r--r--client/src/app/shared/auth/auth.service.ts22
1 files changed, 9 insertions, 13 deletions
diff --git a/client/src/app/shared/auth/auth.service.ts b/client/src/app/shared/auth/auth.service.ts
index 8eea0c4bf..2273048c8 100644
--- a/client/src/app/shared/auth/auth.service.ts
+++ b/client/src/app/shared/auth/auth.service.ts
@@ -1,10 +1,11 @@
1import { Injectable } from '@angular/core'; 1import { Injectable } from '@angular/core';
2import { Headers, Http, Response, URLSearchParams } from '@angular/http'; 2import { Headers, Http, URLSearchParams } from '@angular/http';
3import { Observable } from 'rxjs/Observable'; 3import { Observable } from 'rxjs/Observable';
4import { Subject } from 'rxjs/Subject'; 4import { Subject } from 'rxjs/Subject';
5 5
6import { AuthStatus } from './auth-status.model'; 6import { AuthStatus } from './auth-status.model';
7import { AuthUser } from './auth-user.model'; 7import { AuthUser } from './auth-user.model';
8import { RestExtractor } from '../rest';
8 9
9@Injectable() 10@Injectable()
10export class AuthService { 11export class AuthService {
@@ -19,15 +20,15 @@ export class AuthService {
19 private loginChanged: Subject<AuthStatus>; 20 private loginChanged: Subject<AuthStatus>;
20 private user: AuthUser = null; 21 private user: AuthUser = null;
21 22
22 constructor(private http: Http) { 23 constructor(private http: Http, private restExtractor: RestExtractor) {
23 this.loginChanged = new Subject<AuthStatus>(); 24 this.loginChanged = new Subject<AuthStatus>();
24 this.loginChangedSource = this.loginChanged.asObservable(); 25 this.loginChangedSource = this.loginChanged.asObservable();
25 26
26 // Fetch the client_id/client_secret 27 // Fetch the client_id/client_secret
27 // FIXME: save in local storage? 28 // FIXME: save in local storage?
28 this.http.get(AuthService.BASE_CLIENT_URL) 29 this.http.get(AuthService.BASE_CLIENT_URL)
29 .map(res => res.json()) 30 .map(this.restExtractor.extractDataGet)
30 .catch(this.handleError) 31 .catch((res) => this.restExtractor.handleError(res))
31 .subscribe( 32 .subscribe(
32 result => { 33 result => {
33 this.clientId = result.client_id; 34 this.clientId = result.client_id;
@@ -101,14 +102,14 @@ export class AuthService {
101 }; 102 };
102 103
103 return this.http.post(AuthService.BASE_TOKEN_URL, body.toString(), options) 104 return this.http.post(AuthService.BASE_TOKEN_URL, body.toString(), options)
104 .map(res => res.json()) 105 .map(this.restExtractor.extractDataGet)
105 .map(res => { 106 .map(res => {
106 res.username = username; 107 res.username = username;
107 return res; 108 return res;
108 }) 109 })
109 .flatMap(res => this.fetchUserInformations(res)) 110 .flatMap(res => this.fetchUserInformations(res))
110 .map(res => this.handleLogin(res)) 111 .map(res => this.handleLogin(res))
111 .catch(this.handleError); 112 .catch((res) => this.restExtractor.handleError(res));
112 } 113 }
113 114
114 logout() { 115 logout() {
@@ -139,9 +140,9 @@ export class AuthService {
139 }; 140 };
140 141
141 return this.http.post(AuthService.BASE_TOKEN_URL, body.toString(), options) 142 return this.http.post(AuthService.BASE_TOKEN_URL, body.toString(), options)
142 .map(res => res.json()) 143 .map(this.restExtractor.extractDataGet)
143 .map(res => this.handleRefreshToken(res)) 144 .map(res => this.handleRefreshToken(res))
144 .catch(this.handleError); 145 .catch((res) => this.restExtractor.handleError(res));
145 } 146 }
146 147
147 private fetchUserInformations (obj: any) { 148 private fetchUserInformations (obj: any) {
@@ -160,11 +161,6 @@ export class AuthService {
160 ); 161 );
161 } 162 }
162 163
163 private handleError (error: Response) {
164 console.error(error);
165 return Observable.throw(error.json() || { error: 'Server error' });
166 }
167
168 private handleLogin (obj: any) { 164 private handleLogin (obj: any) {
169 const id = obj.id; 165 const id = obj.id;
170 const username = obj.username; 166 const username = obj.username;